Configuración de un proveedor de OpenID Connect en Liberty

Puede configurar un servidor Liberty para que funcione como un proveedor de OpenID Connect, o un servidor de autorizaciones, para aprovechar el inicio de sesión único web.

Acerca de esta tarea

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

Procedimiento

  1. Añada la característica openidConnectServer-1.0 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 openidConnectServer-1.0.
    <feature>openidConnectServer-1.0</feature>
    <feature>ssl-1.0</feature>
  2. Defina un proveedor de servicios OAuth. OpenID Connect se compila encima del protocolo OAuth 2.0 y debe configurar un proveedor de servicios OAuth válido. La configuración de un proveedor de servicios OAuth incluye los elementos oauth-roles, oauthProvider y de registro de usuarios adecuados. Cualquier usuario que esté autorizado para utilizar OpenID Connect también debe correlacionarse con authenticated oauth-roles. Para obtener más información, consulte Definición de un proveedor de servicios OAuth.

    Los metadatos de OAuth se actualizan para OpenID Connect y las principales adiciones se realizan en los metadatos del cliente. Si utiliza la modalidad databaseStore para el registro de clientes, consulte Configuración de un proveedor de OpenID Connect para que acepte solicitudes de registro de cliente. Se recomienda seguir el documento para gestionar los clientes. Si utiliza la modalidad localStore para el registro de clientes, puede registrar scope, preAuthorizedScope, grantTypes, responseTypes, introspectTokens y functionalUserId, así como otros atributos.

  3. Añada un elemento openidConnectProvider, cuyo atributo oauthProviderRef hace referencia al oauthProvider configurado. Un openidConnectProvider sólo puede hacer referencia una vez a cada oauthProvider y dos o más elementos openidConnectProvider no pueden hacer referencia al mismo oauthProvider. El atributo name y el atributo secret del elemento del cliente deben coincidir con los atributos client ID y client secret del cliente de OpenID Connect correspondiente. Este ejemplo funciona con el cliente OpenID Connect del servidor Liberty predeterminado.
    Nota: En este ejemplo, el OP espera que el puerto SSL del cliente se establezca en 443.
    <openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" /> 
    
    <oauthProvider id="OAuthConfigSample"> 
    <localStore> 
    <client name="client01" secret="{xor}LDo8LTor" 
    displayname="client01" 
    scope="openid profile email" 
    redirect="https://server.example.com:443/oidcclient/redirect/client01"/> 
    </localStore> 
    </oauthProvider>
    Nota: Un cliente válido debe registrar su nombre, redirección, ámbito y secreto para el tipo de otorgamiento authorization_code.
  4. Configure el almacén de confianza del servidor para que incluya los certificados de firmante de las partes dependientes de OpenID Connect o clientes que están soportados. Para obtener más información sobre los 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}Lz4sLCgwLTs=" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> 
    <keyStore id="myTrustStore" password="{xor}Lz4sLCgwLTs=" 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.

    El formulario de consentimiento del usuario en OpenID Connect es conectable, lo que permite a los proveedores crear y mantener su propio formulario de consentimiento. Como este formulario se recupera a través de SSL, debe configurar el almacén de confianza para que incluya el certificado de firmante del servidor donde se aloja el formulario de consentimiento. Si se utiliza el formulario de consentimiento predeterminado y el almacén de confianza utilizado para OpenID Connect se ha configurado para que sea diferente del almacén de claves utilizado por el servidor Liberty, debe importar el certificado de firmante del servidor Liberty en el almacén de confianza de 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.

    Nota: Para utilizar OpenID Connect, el atributo scope debe incluir openid en la lista de ámbitos.

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

    Si desea más opciones de configuración de OAuth, consulte Oauth.

  6. [16.0.0.3 and later]Opcional: Configure el proveedor de OpenID Connect de Liberty para emitir señales JSON Web Token (JWT) como señales access_token.

    De forma predeterminada, Liberty emite señales access_token opacas. Las señales opacas requieren que el destinatario de la señal devuelva la llamada al servidor que emitió la señal. Puede configurar el proveedor de OpenID Connect de Liberty para, en su lugar de emitir señales JWT como señales access_token, que incluyen el mecanismo de verificación de señales dentro de la señal, estableciendo jwtAccessToken="true" en el elemento de configuración oauthProvider o implementando la interfaz de programación de servicio (SPI) com.ibm.wsspi.security.oauth20.JwtAccessTokenMediator.

    Para obtener más información sobre la interfaz, consulte SPI de inicio de sesión único web de WebSphere OAuth 2.0 o la documentación de Java que se proporciona con el producto en el directorio ${wlp.install.dir}/dev/spi/ibm/.

  7. [16.0.0.4 and later]Opcional: Personalice el contenido de la señal id_token que envía el proveedor de OpenID Connect de Liberty.
    De forma predeterminada, el proveedor de OpenID Connect de Liberty emite señales id_token que contienen el nombre de usuario e información de pertenencia al grupo. Puede personalizar el contenido de la señal de las siguientes maneras:
    • Personalizar completamente el contenido de id_token implementando la SPI com.ibm.wsspi.security.openidconnect.IDTokenMediator. La SPI proporciona la mayor flexibilidad, para que pueda crear su propia señal personalizada.

      Para obtener más información sobre la interfaz, consulte SPI de inicio de sesión único web de WebSphere OAuth 2.0 o la documentación de Java que se proporciona con el producto en el directorio ${wlp.install.dir}/dev/spi/ibm/.

    • Captar atributos de usuario adicionales del registro de usuarios federados listando las reclamaciones adicionales en el atributo customClaims del elemento openidConnectProvider en la configuración del servidor. Si el nombre de reclamación es diferente del nombre de atributo en el registro de usuarios federados, correlacione el nombre de reclamación con el atributo en el elemento claimToUserRegistryMap.
      Por ejemplo, la siguiente configuración añade varias reclamaciones y correlaciona la reclamación alias con el atributo de registro seeAlso y la reclamación lastName con el atributo sn:
      <openidConnectProvider id="MyOP" oauthProviderRef="MyOauth" customClaims= "alias, email, lastName, employeeType, office">
          <claimToUserRegistryMap alias="seeAlso" lastName="sn"/> 
          ...
      </openidConnectProvider>

      Para obtener más información, consulte Configuración de las reclamaciones devueltas por el punto final UserInfo.

  8. [17.0.0.2 and later]Opcional: Configure el proveedor de Liberty OpenID Connect para delegar la autenticación de usuario en el inicio de sesión de medios de comunicación sociales, para que los usuarios puedan iniciar sesión con su cuenta de medios de comunicación sociales.

    Cuando se configura el inicio de sesión de medios de comunicación sociales para el proveedor de Liberty OpenID Connect, los usuarios pueden iniciar sesión utilizando sus cuentas de medios de comunicación sociales, en lugar de tener que crear una cuenta para el proveedor de Liberty. Para obtener más información, consulte Configuración de inicio de sesión de medios sociales en Liberty.

  9. Opcional: [17.0.0.4 and later]Configure el proveedor de Liberty OpenID Connect Provider para que use expresiones regulares en localizadores universales de recursos (URL) de redirección de cliente.
    1. Para habilitar el uso de expresiones regulares, establezca el atributo cliente allowRegexpRedirects a true.
    2. Añada un prefijo a la cadena regexp: para evaluar los URL como expresiones regulares. Los URL sin expresiones regulares se comprueban en primer lugar.
    3. Sustituya las barras inclinadas invertidas (\) en la expresión regular con signos de exclamación de cierre (!) cuando registre clientes a través del punto final de registro.
    Nota: Permitir redirecciones a URL indeseados puede suponer una brecha de seguridad. Si utiliza expresiones regulares, asegúrese de que no coincidan con ningún URL que no desee permitir.

    En el ejemplo siguiente, se permite la redirección al URL https://apphost043.example.com, porque coincide con la expresión regular:

    <openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" />
    
    <oauthProvider id="OAuthConfigSample">
       <localStore>
          <client name="client01" secret="{xor}LDo8LTor" displayname="client01" scope="openid profile email" allowRegexpRedirects="true">
               <redirect>"https://apphost.example.com:443/oidcclient/redirect/client01"</redirect>
               <redirect>"regexp:https://apphost\d\d\d\.example\.com:443/oidcclient/redirect/client01"</redirect>
          </client>
       </localStore>
    </oauthProvider>

Resultados

Ha completado la configuración mínima necesaria para configurar un servidor Liberty como un proveedor de OpenID Connect capaz de comunicarse con otros servidores Liberty configurados como clientes de OpenID Connect.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_config_oidc_op.html