Acerca de esta tarea
Para configurar un servidor
Liberty para
que acepte una señal JWT como una señal de autenticación, habilite
la característica openidConnectClient-1.0,
establezca inboundPropagation="required" y configure
un almacén de confianza y SSL. Opcionalmente
puede especificar configuración adicional de JWT como, por ejemplo, registros de usuarios, filtros
de autenticación y correlación de reclamación y sujeto. La configuración para utilizar JWT como una
señal de autenticación es similar a la Configuración de un cliente de OpenID Connect en Liberty.
Cualquier parte de confianza en posesión de una señal JWT puede
utilizar esa señal para acceder a los recursos asociados en
Liberty. El
servidor de recursos
Liberty valida
la señal JWT y crea el sujeto autenticado de la señal JWT. Para que se acepte como una señal de autenticación, la
señal JWT debe contener reclamaciones
iss,
sub y
exp, y firmarse con el algoritmo RS256 o HS256. No se admite JWT cifrado. En el
ejemplo siguiente se muestra una carga útil de JWT descodificada:
{
"iss":"https://idp.acme.com:8020/jwt",
"sub":"marissa@acme.com",
"exp":1385066178,
"aud":"https://resource.acme.com/services",
"iat":1385062578,
“groupIds”: [
“group1”, “group2”
]
}
- Añada la característica openidConnectClient-1.0
de Liberty y
cualquier otra característica necesaria al archivo
server.xml. Como mínimo, la característica openidConnectClient-1.0 requiere la característica
ssl-1.0. Añada la siguiente declaración del elemento
dentro del elemento featureManager en el archivo server.xml:
<feature>openidConnectClient-1.0</feature>
<feature>ssl-1.0</feature>
- Configure un elemento openidConnectClient y establezca
inboundPropagation="required". Si desea más
información sobre otros atributos
openidConnectClient, consulte Cliente de OpenID Connect.
En el ejemplo siguiente se presupone que el emisor de señal JWT admite JWK (JSON Web Key) y que
se firma con el algoritmo RS256.
<openidConnectClient id="RS"
inboundPropagation="required"
jwkEndpointUrl="https://acme.com/jwtserver/jwk" signatureAlgorithm="RS256"
issuerIdentifier="https://idp.acme.com:8020/jwt" >
</openidConnectClient>
- Configure un almacén de confianza para incluir el certificado de
punto final JWK, de forma que el servidor Liberty puede
realizar conexiones SSL al punto final JWK. Los
almacenes de confianza se configuran en elementos keyStore en el archivo server.xml. Después de configurar SSL para hacer referencia a este almacén de confianza, debe establecer
la configuración SSL predeterminada del servidor o especificar el ID en el
atributo sslRef del elemento openidConnectClient.
Si el emisor de JWT no admite JWK y la señal JWT se firma en su lugar con un certificado X.509,
importe el certificado X.509 del emisor en el almacén de confianza. En el elemento
openidConnectClient, especifique el ID de almacén de confianza en el atributo
trustStoreRef y haga referencia al certificado en el atributo
trustAliasName.
Si la señal JWT se firma utilizando una clave secreta compartida con el algoritmo HMAC-SHA256,
defina la clave secreta compartida en los atributos sharedKey o clientSecret.
Para obtener información sobre almacenes de confianza o almacenes de claves, consulte
Habilitación de la comunicación SSL en Liberty.
- Configure el atributo issuerIdentifier del elemento
openidConnectClient para que coincida con la reclamación iss del
emisor de JWT.
Por ejemplo, si la señal JWT contiene
"iss":"https://idp.acme.com:8020/jwt",
establezca issuerIdentifier="https://idp.acme.com:8020/jwt".
- Opcional: Configure un registro de usuario. De forma predeterminada, las reclamaciones de JWT verificadas se utilizan para crear el
sujeto autenticado del emisor, sin correlacionar la JWT con un usuario, de modo que no se
requiere ningún registro de usuarios.
Sin embargo, si el atributo
mapIdentityToRegistryUser del elemento openidConnectClient se
establece en true, debe devolverse una entrada de usuario para la identidad
apropiada desde el servidor de autorización para que la autenticación y la autorización sean
satisfactorias. Si
desea más información sobre cómo configurar un registro de usuarios,
consulte
Configuración de un
registro de usuarios en Liberty.
- Opcional: Configure los filtros de autenticación como se describe en
Filtros de autenticación.
Si configura un filtro de autenticación, haga referencia al filtro de autenticación en el atributo
authFilterRef del elemento openidConnectClient.
Si el elemento openidConnectClient no se configura con un atributo
authFilterRef, cualquier intento de solicitud no autenticada se autentica
mediante este elemento openidConnectClient.
- Opcional: Configure el servidor de recursos
Liberty para
trabajar con varios emisores JWT o autenticar servidores proxy
configurando varios elementos openidConnectClient
y varios filtros de autenticación.
Cada elemento openidConnectClient define una relación de confianza con un
emisor de JWT o proxy de autenticación y hace referencia a un filtro de autenticación.
- Opcional: Defina las reglas para correlacionar reclamaciones de JWT con sujetos de autenticación.
El servidor de recursos
Liberty
utiliza reclamaciones JWT para crear sujetos de autenticación, y
puede definir cómo correlacionar reclamaciones JWT con el sujeto en
los atributos de elemento
openidConnectClient
siguientes:
- userIdentifier
- userUniqueIdentifier
- groupIdentifier
- realmName
- realmIdentifier
Si se configura
realmName y
realmIdentifier,
realmName tiene prioridad y
realmIdentifier se ignora.
Si no se define ninguna correlación de reclamación y sujeto, se aplican las siguientes reglas de
correlación predeterminadas:
- La reclamación de sujeto (sub) se utiliza como nombre principal y nombre de
seguridad exclusivo del usuario.
- La reclamación de emisor (iss) es el reino predeterminado y se utiliza como
reino de sujeto. Si se incluye una reclamación realmName en la señal JWT, se
utiliza la reclamación realmName como reino de sujeto en lugar de la reclamación
iss.
- Opcional: Configure una cookie de inicio de sesión único. El servidor
Liberty
espera que cada solicitud proporcione una señal JWT válida y no
crea ni utiliza las cookies de inicio de sesión único para la
autenticación.
Para crear cookies de inicio de
sesión único, establezca authnSessionDisabled="false" en el elemento
openidConnectClient.
- Opcional: Configure el servidor
Liberty para
recibir señales JWT. El cliente web puede utilizar uno de los
métodos siguientes para enviar señales JWT en solicitudes de
recursos al servidor de recursos
Liberty. Si se envía una señal JWT en el campo Authorization o en un
parámetro de cuerpo de formulario codificado, no se requiere ninguna configuración adicional
del servidor adicional.
Importante: Los clientes no deben utilizar más de un método en cada solicitud para
transmitir la señal. Si se ha configurado el atributo headerName, las
señales enviadas en el campo de cabecera Authorization o en un parámetro de cuerpo de
formulario codificado se ignoran. Si el atributo headerName no está configurado,
se buscar primero en la cabecera Authorization, seguido del parámetro access_token.
- Configure las audiencias de JWT. Para definir una lista de audiencias de confianza, configure el atributo
audiences en el elemento openidConnectClient.
Una señal JWT válida debe cumplir una de las condiciones siguientes:
- Si se ha configurado el atributo audiences, el valor de
reclamación de audiencia (aud) debe ser una de las audiencias configuradas. Para
ignorar la comprobación de audiencias, establezca audiences en
ALL_AUDIENCES.
- Si no se ha configurado el atributo audiences, pero la señal JWT contiene una
reclamación aud que es un URL válido, el URL de servicio de recursos debe tener el
valor aud como prefijo.
Por ejemplo, la audiencia siguiente es válida porque el
URL de recursos empieza con el valor de reclamación
aud:
- Reclamación de audiencia:
"aud":"https://<servidor>:<puerto>/something"
- URL de recurso:
https://<servidor>:<puerto>/something/specific
La
audiencia siguiente no es válida porque el URL de recursos no empieza con el valor de reclamacón
aud.
- Reclamación de audiencia:
"aud":"https://<servidor>:<puerto>/something/specific"
- URL de recurso:
https://<servidor>:<puerto>/something
- Opcional: Correlaciones mediante programación las señales JWT con los sujetos implementando la interfaz
de programación de servicios (SPI) com.ibm.wsspi.security.oauth.UserCredentialResolver.
Si desea más información sobre la interfaz, consulte la información de la SPI
com.ibm.wsspi.security.oauth.UserCredentialResolver en
Interfaces de programación
o en la documentación Java que se proporciona con el producto en el directorio
${wlp.install.dir}/dev/spi/ibm/.
Resultados
Ha creado la configuración mínima necesaria para configurar
un servidor
Liberty para
que acepte señales JWT como señales de autenticación.