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.

    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, voir OpenID Connect Provider.

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

  6. [16.0.0.3 et ultérieur]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 et ultérieur]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.

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



Icône d'horodatage Dernière mise à jour: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_config_oidc_op
Nom du fichier : twlp_config_oidc_op.html