Configuration d'un fournisseur OpenID Connect dans Liberty

Vous pouvez configurer un serveur Liberty afin qu'il opère en tant que fournisseur OpenID Connect et qu'il puisse utiliser la connexion unique Web.

Pourquoi et quand exécuter cette tâche

Vous pouvez configurer un serveur Liberty qui agira en tant que fournisseur OpenID Connect en activant la fonction openidConnectServer-1.0 de Liberty, en plus d'autres informations de configuration.

Procédure

  1. Ajoutez la fonction Liberty openidConnectServer-1.0 et toute autre fonction nécessaire dans le fichier server.xml. La fonction ssl-1.0 est également requise pour la fonction openidConnectServer-1.0.
    <feature>openidConnectServer-1.0</feature>
    <feature>ssl-1.0</feature>
  2. Définissez un fournisseur de services OAuth. OpenID Connect repose sur le protocole OAuth 2.0 et vous devez configurer un fournisseur de services OAuth valide. La configuration d'un fournisseur de services OAuth inclut les éléments oauth-roles, oauthProvider et registre d'utilisateurs. Un utilisateur qui est autorisé à utiliser OpenID Connect doit également être mappé au rôle authenticated oauth-role. Pour plus d'informations, voir Définition d'un fournisseur de service OAuth.

    Les métadonnées OAuth sont mises à jour pour OpenID Connect, et les principaux ajouts figurent dans les métadonnées client. Si vous utilisez le mode databaseStore pour l'enregistrement des clients, voir Configuration d'un fournisseur OpenID Connect pour l'acceptation des demandes d'enregistrement client. Il est recommandé de suivre ce document pour gérer les clients. Si vous utilisez le mode localStore pour l'enregistrement client, vous pouvez enregistrer les attributs scope, preAuthorizedScope, grantTypes, responseTypes, introspectTokens et functionalUserId, ainsi que d'autres attributs.

  3. Ajoutez un élément openidConnectProvider dont l'attribut oauthProviderRef fait référence à l'attribut oauthProvider configuré. Chaque oauthProvider peut uniquement être référencé par un openidConnectProvider, et deux ou plusieurs éléments openidConnectProvider ne peuvent pas faire référence au même oauthProvider. Les attributs name et secret de l'élément client doivent correspondre à l'ID client et au secret client dy client OpenID Connect correspondant. Cet exemple est valable pour le client OpenID Connect du serveur Liberty par défaut.
    Remarque : Dans cet exemple, le fournisseur OpenID suppose que le port SSL du client OpenID est défini sur 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>
    Remarque : Un client valide doit enregistrer son nom, sa redirection, sa portée et son secret pour le type d'octroi authorization_code.
  4. Configurez le magasin de clés de confiance du serveur afin d'inclure le certificat de signataire des parties utilisatrices, ou des clients, qui sont pris en charge. Pour plus d'informations sur les magasins de clés, voir Activation de la communication SSL dans Liberty.
  5. Modifiez la configuration SSL du serveur afin d'utiliser le magasin de clés de confiance configuré.
    <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 est configuré pour utiliser la configuration SSL par défaut qui est spécifiée par le serveur. Par conséquent, la configuration SSL par défaut pour le serveur doit utiliser le magasin de clés de confiance qui est configuré pour OpenID Connect.

    Le formulaire de consentement utilisateur dans OpenID Connect est connectable, ce qui permet aux fournisseurs de créer et de gérer leur propre formulaire de consentement. Ce formulaire étant extrait sur SSL, vous devez configurer le magasin de clés de confiance afin d'inclure le certificat de signataire du serveur sur lequel est hébergé le formulaire de consentement. Si le formulaire de consentement par défaut est utilisé et que le magasin de clés de confiance utilisé pour OpenID Connect est configuré pour être différent du magasin de clés utilisé par le serveur Liberty, vous devez importer le certificat de signataire du serveur Liberty dans le magasin de clés de confiance OpenID Connect.

    [17.0.0.3 and later]En plus d'utiliser la configuration SSL par défaut comme indiqué dans l'exemple, une configuration SSL par défaut sortante peut être configurée sur l'élément sslDefault avec l'attribut outboundSSLRef. Si l'attribut par défaut sortant est spécifié, la configuration SSL spécifiée par l'attribut outboundSSLRef est utilisé pour les connexions sortantes. Vous pouvez remplacer la valeur par défaut et spécifier l'hôte et le port à utiliser pour une connexion sortante à l'aide des filtres SSL sortants dans la configuration SSL. Pour en savoir plus, voir Filtres sortants pour configurations SSL et Configuration des paramètres SSL pour les communications sortantes.

    Remarque : Pour utiliser OpenID Connect, l'attribut scope doit inclure openid dans la liste des portées.

    Pour découvrir d'autres options de configuration du fournisseur OpenID Connect, consultez Fournisseur OpenID Connect (OP).

    Pour plus d'options de configuration OAuth, voir OAuth.

  6. [16.0.0.3 and later]Facultatif : Configurez votre fournisseur Liberty OpenID Connect pour émettre les jetons JSON Web Token (JWT) comme access_token.

    Par défaut, Liberty émet des jetons access_token opaques. Les jetons opaques nécessitent que le destinataire du jeton rappelle le serveur ayant émis le jeton. Vous pouvez configurer le fournisseur Liberty OpenID Connect pour émettre à la place les jetons JWT en tant que jetons access_token qui incluent un mécanisme de vérification des jetons dans le jeton, en définissant jwtAccessToken="true" sur l'élément de configuration oauthProvider ou en implémentant l'interface de programmation de service (SPI) com.ibm.wsspi.security.oauth20.JwtAccessTokenMediator.

    Pour plus d'informations sur l'interface, voir WebSphere OAuth 2.0 web single sign-on SPI ou la documentation Java fournie avec le produit dans le répertoire ${wlp.install.dir}/dev/spi/ibm/.

  7. [16.0.0.4 and later]Facultatif : personnalisez le contenu du jeton id_token envoyé par le fournisseur Liberty OpenID Connect.
    Par défaut, le fournisseur Liberty OpenID Connect émet des jetons id_token qui contiennent des informations sur le nom d'utilisateur et les membres du groupe. Vous pouvez personnaliser le contenu du jeton de plusieurs façons :
    • Personnalisation complète du contenu de id_token en implémentant le SPI com.ibm.wsspi.security.openidconnect.IDTokenMediator. Le SPI fournit la plus grande flexibilité pour générer votre propre jeton personnalisé.

      Pour plus d'informations sur l'interface, voir WebSphere OAuth 2.0 web single sign-on SPI ou la documentation Java fournie avec le produit dans le répertoire ${wlp.install.dir}/dev/spi/ibm/.

    • Extraction d'attributs utilisateur additionnels du registre d'utilisateur fédéré en répertoriant les revendications additionnelles sur l'attribut customClaims de l'élément openidConnectProvider dans la configuration du serveur. si le nom de la revendication est différent de celui de l'attribut dans le registre d'utilisateur fédéré, mappez le nom de la revendication à l'attribut sur l'élément claimToUserRegistryMap.
      Par exemple, la configuration suivante ajoute plusieurs revendications et mappe la revendication alias à l'attribut de registre seeAlso et la revendication lastName à l'attribut sn :
      <openidConnectProvider id="MyOP" oauthProviderRef="MyOauth" customClaims= "alias, email, lastName, employeeType, office">
          <claimToUserRegistryMap alias="seeAlso" lastName="sn"/> 
          ...
      </openidConnectProvider>

      Pour plus d'informations, voir Configuration des demandes renvoyées par le noeud final UserInfo.

  8. [17.0.0.2 and later]Facultatif : configurez le fournisseur OpenID Connect de Liberty pour déléguer l'authentification des utilisateurs au login social, afin que les utilisateurs puissent se connecter avec leurs comptes de médias sociaux.

    Lorsque le login social est configuré pour votre fournisseur OpenID Connect de Liberty, les utilisateurs peuvent se connecter à l'aide de leurs comptes de médias sociaux au lieu de créer un compte pour le fournisseur de Liberty. Pour plus d'informations, voir Configuration du login social dans Liberty.

  9. Facultatif : [17.0.0.4 and later]Configurez votre fournisseur Liberty OpenID Connect pour qu'il utilise des expressions régulières dans les URL de redirection de client.
    1. Pour activer l'utilisation d'expressions régulières, affectez à l'attribut client allowRegexpRedirects la valeur true.
    2. Ajoutez un préfixe à la chaîne regexp: pour évaluer des URL en tant qu'expressions régulières. Les URL sans expressions régulières sont vérifiées en premier.
    3. Remplacez les barres obliques inversées (\) dans votre expression régulière avec des points d'exclamation (!) lorsque vous enregistrez des clients via le noeud final d'enregistrement.
    Remarque : Autoriser la redirection vers des URL inintentionnelles peut être un risque lié à la sécurité. Si vous utilisez des expressions régulières, assurez-vous qu'elles ne correspondent à aucune des URL que vous ne souhaitez pas autoriser.

    Dans l'exemple suivant, la redirection vers l'URL https://apphost043.example.com peut être autorisée car l'URL correspond à l'expression régulière :

    <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>

Résultats

Vous avez effectué la configuration minimale requise pour configurer un serveur Liberty en tant que fournisseur OpenID Connect capable de communiquer avec d'autres serveurs Liberty configurés en tant que clients OpenID Connect.

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_config_oidc_op.html