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
- 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
Palabras clave
{
"alg": "RS256",
"typ": "JWT"
}
.
{
"username": "admin",
"sub": "admin",
"iss": "KNOXSSO",
"iat": 1579286619,
"exp": 1579329819
}
.
signatureVERSION=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
- 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)
- 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.
- 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
issen 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
trueofalse. El valor predeterminado esfalse. (Opcional)
- 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
issen 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=secretkeyLabel5Cuando 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 ).