Archivo de configuración de señal

Para dar soporte a la autenticación de señales, se necesitan varios valores de configuración para describir qué tipos de señales están soportadas y cómo se van a validar.

Antes de empezar

Nota: Esta característica está disponible a partir de Db2® versión 11.5.4.
Se debe crear un archivo, db2token.cfg , en el directorio de instancia, que de forma predeterminada es el siguiente:
  • Linux y UNIX (para serie o DPF) $INSTHOME/sqllib/cfg
  • Linux y UNIX para pureScale (para serie o DPF): $INSTHOME/sqllib_shared/cfg
  • Windows: C:\ProgramData\IBM\DB2\db2copy1\DB2\cfg

El archivo de configuración debe ser propiedad del propietario de la instancia con permisos de lectura/escritura.

Procedimiento

En el servidor Db2 , cree el archivo de configuración de señal en un editor de texto.

Palabras clave

Considere que una JWT se valida como se indica a continuación:
{
   "alg": "RS256",
   "typ": "JWT"
}
.
{
   "username": "admin",
   "sub": "admin",
   "iss": "KNOXSSO",
   "iat": 1579286619,
   "exp": 1579329819
 }
 .
 signature
y este archivo de configuración de señal de ejemplo:
VERSION=1
TOKEN_TYPES_SUPPORTED=JWT
JWT_KEYDB=/home/db2inst1/jwtkeys.p12

JWT_IDP_ISSUER=KNOXSSO
JWT_IDP_AUTHID_CLAIM=username
JWT_IDP_RSA_CERTIFICATE_LABEL=mylabel
JWT_IDP_ISSUER=A_SECOND_ISSUER
JWT_IDP_AUTHID_CLAIM=userid
JWT_IDP_RSA_CERTIFICATE_LABEL=aDifferentLabel
Parámetros comunes:
VERSION
La versión del archivo de configuración. (Obligatorio)
TOKEN_TYPES_SUPPORTED
Los tipos de señales soportados como una lista separada por comas. Actualmente, JWT es el único tipo de señal soportado. (Obligatorio)
Parámetros de JWT:
JWT_KEYDB
La vía de acceso al archivo de almacén de claves local. (Obligatorio)

Las claves privadas, y las claves públicas como certificados, se almacenan en un archivo de almacén de claves local con un archivo de ocultación correspondiente (extensión \ * .sth). Este almacén de claves se utiliza para almacenar claves para todos los IDP y las etiquetas de clave deben ser exclusivas entre los IDP.

Parámetros de grupo de JWT IDP:
JWT_IDP_ISSUER
Los siguientes parámetros se agrupan y se aplican a un único PDI. El grupo comienza con JWT_IDP_ISSUER y las palabras clave siguientes se aplican a ese IDP hasta que se analiza el siguiente JWT_IDP_ISSUER .
JWT_IDP_ISSUER
El nombre del emisor de la señal. Corresponde a la reclamación iss en el JWT y debe coincidir exactamente. Debe aparecer en primer lugar en un grupo de parámetros específicos de un IDP. (Obligatorio)
JWT_IDP_AUTHID_CLAIM
La reclamación dentro del JWT que especifica la clave que contiene el ID de autorización del usuario que se conecta a Db2. Debe aparecer después del parámetro JWT_IDP_ISSUER . El valor dependerá del contenido especificado por IDP. Puede ser un valor como "username", "userid", "uid" o "sub". No es el valor del ID de autorización, sino la clave que identifica el ID de autorización en la señal (consulte el ejemplo anterior).
  • JSON anidado no está soportado para la reclamación

Reglas para el valor de authid en la señal, que se busca basándose en este parámetro de configuración:

  • El ID de autorización de la señal se convertirá a mayúsculas.
  • El análisis adicional de la reclamación, como separar una parte de nombre de usuario de una dirección de correo electrónico, no está soportado, la reclamación se toma tal cual.
JWT_IDP_SECRETKEY_LABEL
La etiqueta de la clave secreta (simétrica) utilizada para verificar la firma de la señal utilizando el algoritmo HMAC-SHA. Debe aparecer después del parámetro JWT_IDP_ISSUER . (Opcional)
JWT_IDP_RSA_CERTIFICATE_LABEL
La etiqueta del certificado que contiene la clave pública utilizada para verificar la firma de la señal utilizando el algoritmo RSA. Debe aparecer después del parámetro JWT_IDP_ISSUER . (Opcional)
JWT_IDP_ECDSA_CERTIFICATE_LABEL
La etiqueta del certificado que contiene la clave pública ECDSA, utilizada para verificar la firma de la señal utilizando el algoritmo ECDSA. Debe aparecer después del parámetro JWT_IDP_ISSUER . (Opcional)
JWT_IDP_PSS_CERTIFICATE_LABEL
La etiqueta del certificado que contiene la clave pública RSA utilizada para verificar la firma de la señal utilizando el algoritmo PSS-RSA. Debe aparecer después del parámetro JWT_IDP_ISSUER . (Opcional)
JWT_IDP_EXPOSE_TOKEN
Permite o no que la carga útil JWT se exponga al usuario una vez establecida la conexión. El valor puede fijarse en true o false. El valor predeterminado es false. (Opcional)
Nota:
  • A menos que se indique lo contrario, no utilice comillas alrededor de los valores
  • Con la excepción de TOKEN_TYPES_SUPPORTED, el valor de todos los demás parámetros es sensible a las mayúsculas y minúsculas. Por ejemplo, el valor de JWT_IDP_ISSUER debe coincidir exactamente con el valor de iss en el JWT.
  • Debe especificarse al menos un grupo de IDP.
  • A partir de Db2 versión 11.5.5, se admiten varias etiquetas para JSON Web Tokens. Se pueden especificar hasta 10 emisores. Cada emisor puede tener un máximo de 5 etiquetas para cada tipo de etiqueta. Cada una de las etiquetas se extraen y verifican con la firma de señal para su verificación.

  • El número máximo de grupos IDP es 6 para Db2 versión 11.5.4y 10 a partir de versión 11.5.5.
  • Para cada grupo de IDP, debe especificarse al menos uno de JWT_IDP_SECRETKEY_LABEL, JWT_IDP_RSA_CERTIFICATE_LABEL, JWT_IDP_ECDSA_CERTIFICATE_LABEL, JWT_IDP_PSS_CERTIFICATE_LABEL .
  • Se pueden especificar hasta 5 etiquetas para cada tipo de etiqueta por grupo de IDP. Las etiquetas deben especificarse en líneas separadas. Por ejemplo:
    JWT_IDP_SECRETKEY_LABEL=secretkeyLabel1
    JWT_IDP_SECRETKEY_LABEL=secretkeyLabel2
    JWT_IDP_SECRETKEY_LABEL=secretkeyLabel3
    JWT_IDP_SECRETKEY_LABEL=secretkeyLabel4
    JWT_IDP_SECRETKEY_LABEL=secretkeyLabel5

    Cuando se utilizan varias etiquetas, se extrae cada una de las etiquetas y se realiza un intento de verificar la firma de señal con la etiqueta hasta que la verificación se realiza correctamente o hasta que se han intentado todas las etiquetas.

  • Tenga cuidado al decidir utilizar el algoritmo de firma HMAC-SHA para firmar señales, porque la clave utilizada para firmar la señal es la misma que la utilizada para validar la firma. Por lo tanto, cualquier persona que pueda comprobar firmas también puede generarlas. Esto solo se debe utilizar en escenarios en los que haya una confianza fuerte entre el emisor/firmante (el IDP) y el verificador (propietario de instancia deDb2 ).