Configuration d'un client OpenID Connect dans Liberty

Vous pouvez configurer un serveur Liberty afin qu'il opère en tant que client OpenID Connect, ou partie utilisatrice, afin de pouvoir tirer parti de la connexion unique Web et utiliser un fournisseur OpenID Connect en tant que fournisseur d'identité.

Pourquoi et quand exécuter cette tâche

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

Procédure

  1. Ajoutez la fonction Liberty openidConnectClient-1.0 et toute autre fonction nécessaire dans le fichier server.xml. La fonction ssl-1.0 est également requise pour la fonction openidConnectClient-1.0. Ajoutez la déclaration d'élément suivante dans l'élément featureManager de votre fichier server.xml :
    <feature>openidConnectClient-1.0</feature> 	
    <feature>ssl-1.0</feature>
  2. Configurez un élément openidConnectClient. Voici un exemple de configuration minimale qui fonctionne avec le fournisseur OpenID Connect du serveur Liberty par défaut.

    Le client doit comporter une application configurée disponible avec le masque d'URL donné et pouvant traiter les demandes de redirection depuis un fournisseur OpenID Connect. Cette URL doit aussi précisément correspondre à l'URL de redirection enregistrée pour le client avec le fournisseur OpenID.

    Remarque : Dans cet exemple, le client suppose que le port SSL est défini sur 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>
    Dans cet exemple de configuration minimale, les valeurs supposées par défaut sont les suivantes :
    • scope=openid profile : La portée openid est obligatoire et vous pouvez utiliser l'attribut scope pour éditer les portées obligatoires. Par exemple, vous pouvez remplacer la portée obligatoire scope par openid profile email.
    • Cette partie utilisatrice enregistre son URL de redirection auprès du fournisseur OpenID en tant que https://<host name>:<ssl port>/oidcclient/redirect/client01, où le nom d'hôte et le port SSL sont automatiquement résolus, et client01 est l'ID de l'élément de configuration openidConnectClient. S'il y a un proxy en face de la partie utilisatrice, vous pouvez remplacer le nom d'hôte et le port par l'attribut redirectToRPHostAndPort, et définir redirectToRPHostAndPort sur https://<host name>:<ssl port>.
  3. Configurez un registre d'utilisateurs. Les identités qui sont renvoyées par le fournisseur OpenID ne sont pas mappées à un registre d'utilisateurs par défaut ; par conséquent, aucun utilisateur ne doit obligatoirement être configuré dans le registre. Toutefois, si l'attribut mapIdentityToRegistryUser de l'élément openidConnectClient est défini sur true, une entrée d'utilisateur pour l'identité appropriée doit être retournée par le fournisseur OpenID afin que l'authentification et l'autorisation aboutissent. Pour plus d'informations sur la configuration d'un registre d'utilisateurs, voir Configuration d'un registre utilisateur dans Liberty.
  4. Configurez le magasin de clés de confiance du serveur afin d'inclure le certificat de signataire des fournisseurs OpenID Connect 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}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 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.

  6. Facultatif : Configurez un fournisseur OpenID Connect tiers.

    Pour configurer le client Liberty OpenID Connect afin qu'il utilise un fournisseur OpenID Connect tiers (Microsoft Azure ou Google), vous devez configurer les attributs ci-après. Les valeurs d'attribut peuvent être obtenues en appelant le noeud final de reconnaissance du fournisseur OpenID, lequel fournit un document JSON dans le chemin formé par la concaténation de la chaîne /.well-known/openid-configuration vers l'émetteur.

    1. Définissez l'attribut jwkEndpointUrl sur l'URL du jeu de clés Web JSON du fournisseur OpenID JWK qui est défini sous la forme jwks_uri dans le fichier de reconnaissance. Par exemple, pour utiliser le fournisseur OpenID de Google, vous pouvez définir jwkEndpointUrl = "https://www.googleapis.com/oauth2/v2/certs".
    2. Définissez l'attribut issuerIdentifier sur l'élément issuer tel que défini dans le fichier de reconnaissance. Un jeton d'ID qui ne contient pas cette valeur sous la forme d'une demande iss est rejeté. Par exemple, vous pouvez définir issuerIdentifier="accounts.google.com"si vous utilisez Google comme fournisseur OpenID.
    3. Définissez signatureAlgorithm="RS256". L'algorithme de signature par défaut du client Liberty OpenID Connect est HS256.
    4. Définissez l'attribut userIdentityToCreateSubject sur un nom de demande utilisé par le jeton d'ID du fournisseur qui représente un identificateur unique d'utilisateur. Par exemple, vous pouvez définir userIdentityToCreateSubject ="email" si vous utilisez le fournisseur OpenID de Google, et userIdentityToCreateSubject ="upn" ou userIdentityToCreateSubject ="unique_name" si vous utilisez Microsoft Azure.
    5. Définissez l'attribut groupIdentifier sur le nom de demande qui représente les appartenances ou les rôles de groupe de l'utilisateur. Par exemple, vous pouvez définir groupIdentifier="groups" si vous utilisez Microsoft Azure.

    Pour connaître les autres options de configuration du client OpenID Connect, voir OpenID Connect Client.

  7. Facultatif : filtre d'authentification.

    Lorsque la fonction openidConnectClient-1.0 est activée et que l'élément openidConnectClient n'est pas configuré avec un attribut authFilterRef, toute demande non authentifiée est authentifiée via le fournisseur OpenID Connect.

    Pour plus d'informations sur la configuration du filtre d'authentification, voir Filtres d'authentification.

  8. Prenez en charge plusieurs fournisseurs OpenID Connect.

    Vous pouvez configurer Liberty en tant que partie utilisatrice OpenID Connect pour plusieurs fournisseurs OpenID Connect en créant plusieurs éléments openidConnectClient et plusieurs filtres d'authentification. Chaque élément openidConnectClient définit une relation de connexion unique avec un fournisseur OpenID Connect, et utilise l'attribut authFilterRef pour faire référence à un filtre d'authentification.

  9. Configurez un algorithme de signature de jeton d'ID pris en charge.

    Vous pouvez configurer un client OpenID Connect Liberty pour prendre en charge l'algorithme de signature RS256 dans un jeton d'ID. L'algorithme de signature par défaut du client Liberty OpenID Connect est HS256. Si vous configurez RS256 en tant qu'algorithme de signature ID Token en définissant signatureAlgorithm="RS256", vous devez configurer à la fois trustStoreRef et trustAliasName, sauf si OP prend en charge un noeud final JWK.

  10. Facultatif : Configurez un type d'octroi "implicite".

    La fonction openidConnectClient-1.0 utilise un type d'octroi de code d'autorisation pour demander un jeton d'authentification utilisateur, et vous pouvez configurer la fonction Liberty openidConnectClient-1.0 pour utiliser un type d'octroi "implicite" en ajoutant grantType="implicit" au fichier server.xml. Si votre serveur Liberty et un fournisseur OpenID Connect se trouvent derrière des pare-feux différents, vous devez utiliser cette option de configuration.

  11. Facultatif : la partie utilisatrice de Liberty OpenID Connect crée automatiquement un jeton SSO après le traitement du jeton d'ID. Vous pouvez configurer Liberty pour ne pas créer un jeton SSO pour le serveur ou un jeton SSO pour la ressource qui est protégée avec OpenID Connect en ajoutant la propriété de configuration disableLtpaCookie="true". Si le paramètre est défini sur disableLtpaCookie="true", le client Liberty OpenID Connect acceptera uniquement les demandes d'authentification s'étant auparavant authentifiées avec le fournisseur OpenID Connect configuré et la durée de vie de la session d'authentification est limitée à la durée de vie du jeton d'ID.
  12. Facultatif : vous pouvez configurer un client OpenID Connect Client pour accepter en option un jeton d'accès de support OAuth 2.0 valide comme jeton d'authentification sans rediriger la demande vers un fournisseur OpenID Connect. Si une demande contient un jeton d'accès de support OAuth 2.0 valide, le client Liberty OpenID Connect validera automatiquement le jeton d'accès et créera un sujet authentifié en fonction du résultat de validation du jeton. Si la demande ne contient pas de jeton d'accès ou si le jeton d'accès n'est pas valide, le client Liberty OpenID Connect continue de rediriger l'utilisateur vers un fournisseur OpenID Connect. Cette fonction permet au serveur Liberty de servir à la fois le client de navigation et le client de non-navigation, comme par exemple un client RESTful. Vous pouvez ajouter inboundPropagation=”supported” à la configuration pour activer cette fonction.
  13. [16.0.0.4 et ultérieur]Si votre environnement d'hébergement ne vous permet pas d'accéder à la racine de contexte /oidcclient, modifiez la racine de contexte en configurant l'élément oidcClientWebapp.

    Par défaut, le servlet de redirection du client Liberty OpenID Connect écoute sur la racine de conteste /oidcclient et son format d'URL de redirection est https://<nom_hôte>:<port_ssl>/oidcclient/redirect/<ID_configuration>. Si vous ne pouvez pas utiliser cette racine de contexte, définissez une racine de contexte différente dans la configuration du serveur.

    Par exemple, si votre environnement d'hébergement vous demande d'utiliser la racine de contexte /acme/openid, ajoutez l'élément suivant :
    <oidcClientWebapp contextPath="/acme/openid" />

    Le format de l'URL de redirection obtenu est https://<nom_hôte>:<port_ssl>/acme/openid/redirect/<ID_configuration>.

Résultats

Vous avez maintenant établi la configuration minimale qui est nécessaire pour la configuration d'un serveur Liberty en tant que client OpenID Connect capable de communiquer avec d'autres serveurs Liberty configurés en tant que fournisseurs 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_rp
Nom du fichier : twlp_config_oidc_rp.html