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
- 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>
- 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>.
- 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.
- 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.
- 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.
- 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.
- 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".
- 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.
- Définissez signatureAlgorithm="RS256". L'algorithme de signature par défaut du client Liberty OpenID Connect est HS256.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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
Sous-rubriques
- Appel du noeud final d'autorisation pour OpenID Connect
Dans OpenID Connect, le noeud final d'autorisation traite l'authentification et l'autorisation d'un utilisateur. - Appel du noeud final de jeton pour OpenID Connect
Dans le Flux de code d'autorisation OpenID Connect, le noeud final de jeton est utilisé par un client pour obtenir un jeton d'ID, un jeton d'accès et un jeton d'actualisation. - Appel du noeud final Introspection pour OpenID Connect
Le noeud final Introspection permet aux détenteurs de jetons d'accès de demander un ensemble de métadonnées concernant un jeton d'accès du fournisseur OpenID Connect qui l'a émis. Le jeton d'accès doit avoir été obtenu via l'authentification OpenID Connect ou OAuth. - Appel du service de mappe de couverture
Le service de mappe de couverture est un noeud final non protégé qui renvoie un tableau JSON (JavaScript Object Notation) de préfixes URI terminés par une barre oblique. Ce tableau de préfixes URI désigne les contextes Web qui appartiennent à un groupe de connexion unique, ce qui permet aux clients de savoir si une destination d'URI est jugée sûre pour l'envoi d'un jeton d'accès. - Appel du noeud final UserInfo pour OpenID Connect
Le noeud final UserInfo renvoie des demandes concernent un utilisateur qui est authentifié avec une authentification OpenID Connect. - Appel du noeud final de gestion de session pour OpenID Connect
Le noeud final de gestion de session permet aux parties utilisatrices OpenID Connect de surveiller l'état de connexion d'un utilisateur à un fournisseur OpenID Connect tout en réduisant le trafic sur le réseau. Avec l'aide du noeud final de gestion de session, une partie utilisatrice peut déconnecter un utilisateur déconnecté du fournisseur OpenID Connect.


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