Configuración de un cliente de OpenID Connect en Liberty

Puede configurar un servidor Liberty para que funcione como un cliente de OpenID Connect, o un tercero de confianza (RP), para sacar partido del inicio de sesión único web y para utilizar un proveedor de OpenID Connect como proveedor de identidad.

Acerca de esta tarea

Puede configurar un servidor Liberty para que actúe como un cliente de OpenID Connect habilitando la característica openidConnectClient-1.0 en Liberty, y además de otra información de configuración.

Nota: Para configurar un cliente para que acepte señales JWT directamente, consulte Configuración de la autenticación de JSON Web Token para OpenID Connect

Procedimiento

  1. Añada la característica openidConnectClient-1.0 de Liberty y cualquier otra característica necesaria al archivo server.xml. La característica ssl-1.0 también es necesaria para la característica openidConnectClient-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>
  2. Configure un elemento openidConnectClient. Lo siguiente es un ejemplo de una configuración mínima que funciona con el proveedor de OpenID Connect del servidor Liberty predeterminado.

    El cliente debe tener disponible una aplicación configurada correctamente en el patrón de URL especificado, que pueda manejar las solicitudes de redirección desde un proveedor de OpenID Connect. Este URL también debe coincidir precisamente con el URL de redirección registrado para el cliente con el OP.

    Evite problemas: Si está utilizando un proxy de salida, tenga en cuenta que la RP de OpenID Connect no proporciona un medio de direccionar las solicitudes a través de un host de proxy de forma automática.

    Si tiene que utilizar un proxy para acceder al proveedor de OpenID Connect (OP), el valor que especifique en cualquier propiedad de URL relacionada con OP tiene que contener el host de proxy y el puerto, no el host y el puerto externos de OP.

    En la mayoría de los casos, se puede sustituir el host y el puerto de OP con el host y el puerto del proxy. El URL que especifique tiene que ser visible a la RP y al cliente (navegador o aplicación). Para obtener pautas adicionales sobre cómo determinar el URL que hay que usar, póngase en contacto con el administrador del proxy.

    En este ejemplo, el cliente espera que el puerto SSL esté establecido en 443.

    <openidConnectClient id="client01" 		
        clientId="client01" 		
        clientSecret="{xor}LDo8LTor" 		
        authorizationEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/authorize" 		
        tokenEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/token"> 	
    </openidConnectClient>
    En esta configuración mínima de ejemplo, se suponen los siguientes valores predeterminados:
    • scope=openid profile: el ámbito de openid es necesario y puede utilizar el atributo scope para editar los ámbitos necesarios. Por ejemplo, puede cambiar el atributo scope necesarios por openid profile email.
    • Este RP registra su URL de redirección con el OP como https://<nombre host>:<puerto ssl>/oidcclient/redirect/client01, donde tanto el nombre de host y el puerto ssl se resuelven automáticamente y client01 es el ID del elemento de configuración openidConnectClient. Si hay un proxy delante de la RP, puede alterar temporalmente el nombre de host y el puerto con el atributo redirectToRPHostAndPort, y establecer redirectToRPHostAndPort en https://<host name>:<ssl port>.
  3. Configure un registro de usuario. Las identidades de usuario que devuelve el OP no están correlacionadas con un usuario del registro de forma predeterminada, por lo que no es necesario configurar usuarios en el registro. No obstante, si el atributo mapIdentityToRegistryUser del elemento openidConnectClient se establece en true, debe haber una entrada de usuario para la identidad correspondiente que se devuelve del OP para que la autenticación y la autorización sean satisfactorias. Para obtener más información sobre la configuración de un registro de usuarios, consulte Configuración de un registro de usuarios en Liberty.
  4. Configure el almacén de confianza del servidor para que incluya los certificados de firmante de los proveedores de OpenID Connect que están soportados. Si desea más información sobre almacenes de claves, consulte Habilitación de la comunicación SSL en Liberty
  5. Modifique la configuración SSL del servidor para que utilice el almacén de confianza configurado.
    <sslDefault sslRef="DefaultSSLSettings" /> 
    <ssl id="DefaultSSLSettings" keyStoreRef="myKeyStore" trustStoreRef="myTrustStore" /> 	
    <keyStore id="myKeyStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> 	
    <keyStore id="myTrustStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicTrustStore.jks" />

    OpenID Connect se ha configurado para utilizar la configuración SSL predeterminada especificada por el servidor. Por lo tanto, la configuración SSL predeterminada del servidor debe utilizar el almacén de confianza que se ha configurado para OpenID Connect.

    [17.0.0.3 and later]Además de utilizar la configuración predeterminada de SSL tal como se muestra en el ejemplo, se puede configurar una configuración de SSL predeterminada de salida en el elemento sslDefault con el atributo outboundSSLRef. Si se especifica el atributo predeterminado de salida, la configuración de SSL especificada por el atributo outboundSSLRef se utiliza para conexiones de salida. Puede alterar temporalmente el valor predeterminado y especificar el host y el puerto para una conexión de salida utilizando filtros SSL de salida en la configuración de SSL. Si desea más información, consulte Filtros de salida para configuraciones SSL y Configuración de valores SSL para comunicaciones de salida.

  6. Opcional: Configure un proveedor de OpenId Connect de terceros.

    Para configurar el cliente de OpenID Connect de Liberty para utilizar un proveedor de OpenID Connect de terceros como, por ejemplo, (Microsoft Azure o Google), debe configurar los atributos siguientes. Los valores de atributo pueden obtenerse invocando el punto final de descubrimiento del OP, que proporciona un documento JSON en la vía de acceso formada concatenando la serie /.well-known/openid-configuration con el emisor.

    1. Establezca el atributo jwkEndpointUrl en el URL del documento JWK del conjunto de claves web JSON del OP que se ha definido como jwks_uri en el archivo de descubrimiento. Por ejemplo, para utilizar el OP de Google, puede establecer jwkEndpointUrl = "https://www.googleapis.com/oauth2/v2/certs".
    2. Establezca el atributo issuerIdentifier en issuer, tal como se define en el archivo de descubrimiento. Un ID de señal que no contenga este valor como una reclamación iss se rechazará. Por ejemplo, puede establecer issuerIdentifier="accounts.google.com" si está utilizando Google como su OP.
    3. Establezca signatureAlgorithm="RS256". El algoritmo de firma del cliente de OpenID Connect de Liberty es HS256.
    4. Establezca el atributo userIdentityToCreateSubject en un nombre de reclamación utilizado por la señal de ID del proveedor que representa el identificador exclusivo de un usuario. Por ejemplo, puede establecer userIdentityToCreateSubject ="email" si está utilizando el OP de Google, y userIdentityToCreateSubject ="upn" o userIdentityToCreateSubject ="unique_name" si está utilizando Microsoft Azure.
    5. Establezca el atributo groupIdentifier en el nombre de reclamación que representa los roles o pertenencias de grupo del usuario. Por ejemplo, puede establecer groupIdentifier="groups" si está utilizando Microsoft Azure.

    Si desea más opciones de configuración del cliente de OpenID Connect, consulte Cliente de OpenID Connect.

  7. Opcional: filtro de autenticación.

    Cuando la característica openidConnectClient-1.0 está habilitada y el elemento openidConnectClient no está configurado con un atributo authFilterRef, cualquier solicitud no autenticada se autentica mediante el proveedor de OpenID Connect.

    Si desea más información sobre cómo configurar el filtro de autenticación, consulte Filtros de autenticación.

  8. Soporte a varios proveedores de OpenID Connect.

    Puede configurar Liberty como un Relying Party de OpenID Connect para varios proveedores de OpenID Connect creando varios elementos openidConnectClient y varios filtros de autenticación. Cada elemento openidConnectClient define una relación de inicio de sesión único con un proveedor de OpenID Connect y utiliza el atributo authFilterRef para hacer referencia a un filtro de autenticación.

  9. Configure un algoritmo de firma de señal de ID soportado.

    Puede configurar un cliente de OpenID Connect de Liberty para soportar el algoritmo de firma RS256 en una señal de ID. El algoritmo de firma del cliente de OpenID Connect de Liberty es HS256. Si configura RS256 como algoritmo de firma de la señal de ID estableciendo signatureAlgorithm="RS256", debe configurar trustStoreRef y trustAliasName, a menos que el OP dé soporte a un punto final JWK.

  10. Opcional: Configure un tipo de otorgamiento "implícito".

    La característica openidConnectClient-1.0 utiliza un tipo de otorgamiento de código de autorización para solicitar una señal de autenticación de usuario, y puede configurar la característica Liberty openidConnectClient-1.0 para utilizar un tipo de otorgamiento "implicit" añadiendo grantType="implicit" al archivo server.xml. Si el servidor Liberty y el proveedor de OpenID Connect están en cortafuegos diferentes, debe utilizar esta opción de configuración.

  11. Opcional: El tercero de confianza de Liberty OpenID Connect crea automáticamente una señal de inicio de sesión único (SSO) después de que se haya procesado la señal de ID. Puede configurar Liberty para que no cree una señal SSO para el servidor, o una señal SSO para el recurso que está protegido con OpenID Connect añadiendo la propiedad de configuración disableLtpaCookie="true". Si se establece disableLtpaCookie="true", el cliente de OpenID Connect de Liberty solo aceptará solicitudes de autenticación que se hayan autenticado previamente con el proveedor de OpenID Connect configurado y el ciclo de vida de la sesión de autenticación está limitado al ciclo de vida de la señal de ID.
  12. Opcional: Puede configurar un OpenID Connect Client para que acepte de forma opcional una señal de acceso de transporte de OAuth 2.0 válida como una señal de autenticación sin redirigir la solicitud a un proveedor de OpenID Connect. Si una solicitud contiene una señal de acceso de transporte OAuth 2.0 válida, el cliente de OpenID Connect de Liberty validará automáticamente la señal de acceso y creará un sujeto autenticado basándose en el resultado de la validación de la señal. Si la solicitud no contiene una señal de acceso o la señal de acceso no es válida, el cliente de OpenID Connect de Liberty sigue redirigiendo el usuario a un proveedor de OpenID Connect. Esta función permite al servidor Liberty prestar servicio al cliente del navegador y, también, al cliente que no es de navegador como un cliente RESTful. Puede añadir inboundPropagation=”supported” a la configuración para habilitar esta función.
  13. [16.0.0.4 and later]Si el entorno de alojamiento no permite el acceso a la raíz de contexto /oidcclient, modifique la raíz de contexto configurando el elemento oidcClientWebapp.

    De forma predeterminada, el servlet de redirección del cliente de OpenID Connect de Liberty escucha en la raíz de contexto /oidcclient y su formato de URL de redirección es https://<nombre_host>:<puerto_ssl>/oidcclient/redirect/<ID_configuración_ID>. Si no puede utilizar esta raíz de contexto, establezca una raíz de contexto diferente en la configuración del servidor.

    Por ejemplo, si el entorno de alojamiento necesita que utilice la raíz de contexto /acme/openid, añada el elemento siguiente:
    <oidcClientWebapp contextPath="/acme/openid" />

    El formato de URL de redirección resultante es https://<nombre_host>:<puerto_ssl>/acme/openid/redirect/<ID_configuración>.

Resultados

Ahora ha establecido la configuración mínima necesaria para configurar un servidor Liberty como un cliente de OpenID Connect capaz de comunicarse con otros servidores Liberty configurados como proveedores de OpenID Connect.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_config_oidc_rp.html