OpenID Connect
OpenID Connect est un protocole d'identité simple et une norme ouverte construit sur le protocole OAuth 2.0 qui permet aux applications client de s'appuyer sur l'authentification effectuée par un fournisseur OpenID Connect pour vérifier l'identité d'un utilisateur.
OpenID Connect utilise OAuth 2.0 pour l'authentification et l'autorisation, puis génère des identités qui identifient les utilisateurs de manière unique. Les applications client peuvent aussi obtenir des informations de profil de base sur un utilisateur de manière interopérable et de type REST des fournisseurs OpenID Connect.
Liberty prend en charge Connect 1.0 et remplit le rôle de Client, ou de Partie utilisatrice, et fait office de Fournisseur dans le mécanisme de connexion unique Web. La spécification OpenID Connect suivante est prise en charge :
OpenID Connect Core 1.0 : Les serveurs Liberty
configurés en tant que parties utilisatrices OpenID Connect prennent
en charge l'authentification avec le flux de code d'autorisation. Les
serveurs Liberty configurés en tant que fournisseurs OpenID
Connect prennent en charge l'authentification avec le flux de code
d'autorisation et le flux implicite.
Pour ceux qui utilisent un serveur Liberty en tant que partie utilisatrice basée sur le Web, le document OpenID Connect Basic Client Implementer's Guide 1.0 est un sous-ensemble de la spécification OpenID Connect Core qui est plus facile à lire et qui fournit des détails pour les parties utilisatrices qui utilisent le flux de code d'autorisation.
- Jeton d'accès
- Donnée d'identification qui est utilisée pour accéder à des ressources protégées. Un jeton d'accès est une chaîne qui représente une autorisation émise pour le client.
- Noeud final d'autorisation
- Ressource sur un fournisseur OpenID Provider qui accepte une demande d'autorisation d'un client pour effectuer l'authentification et l'autorisation d'un utilisateur. Le noeud final d'autorisation renvoie un octroi d'autorisation, ou un code, au client dans le flux de code d'autorisation. Dans le flux implicite, le noeud final d'autorisation renvoie un jeton d'ID et un jeton d'accès au client.
- Octroi d'autorisation
- Donnée d'identification qui représente l'autorisation d'un utilisateur à accéder aux ressources, et qui est utilisée par un client pour obtenir un jeton d'accès.
- Demande
- Informations vérifiées concernant une entité. Exemples de demande : numéro de téléphone, prénom, nom, etc.
- Jeton d'ID
- Jeton JWT (JSON Web Token) contenant les demandes relatives à l'utilisateur authentifié.
- Noeud final d'introspection
- Ressource sur un fournisseur OpenID qui permet à un client détenant un jeton d'accès d'extraire des informations utilisées pour créer le jeton d'accès, comme le nom d'utilisateur, les portées octroyées, l'ID client et d'autres informations.
- Fournisseur OpenID Connect (OP)
- Serveur d'autorisations OAuth 2.0 capable de fournir des demandes à un client, ou à une partie utilisatrice.
- Jeton d'actualisation
- Jeton émis pour le client par le fournisseur OpenID Connect et utilisé pour obtenir un nouveau jeton d'accès lorsque le jeton d'accès en cours arrive à expiration, ou pour obtenir d'autres jetons d'accès.
- Partie utilisatrice (RP)
- Serveur Liberty configuré en tant que client OpenID Connect ou application client qui requiert des demandes d'un fournisseur OpenID Provider (OP).
- Portée
- Privilège ou droit qui est accordé pour l'accès aux ressources d'une tierce partie .
- Noeud final du jeton
- Ressource sur un fournisseur OpenID Provider (OP) qui accepte un octroi d'autorisation, ou un code, d'un client en échange d'un jeton d'accès, et d'un jeton d'actualisation.
Serveur Liberty en tant que client OpenID Connect
Vous pouvez configurer Liberty pour faire office de client OpenID Connect. Une telle configuration permet au serveur Liberty de reposer sur un autre profil Liberty qui agit en tant que fournisseur OpenID Provider pour l'authentification et l'autorisation des utilisateurs.
Un serveur Liberty qui est configuré pour faire office de client OpenID Connect prend en charge le Flux de code d'autorisation de la norme OpenID Connect 1.0.
Dans le Flux de code d'autorisation, tous les échanges de jeton sont effectués à l'aide du noeud final de jeton du fournisseur OpenID Connect. Tout d'abord, le client soumet une demande d'autorisation au noeud final d'autorisation du fournisseur OpenID Provider. Une fois l'authentification et l'autorisation auprès du fournisseur OpenID Provider effectuée, le client reçoit un octroi d'autorisation, ou un code, du fournisseur OpenID Provider. Ce code d'autorisation peut ensuite être envoyé dans une demande au noeud final de jeton du fournisseur OpenID Provider. Le client reçoit un jeton d'ID, un jeton d'accès et un jeton d'actualisation dans la réponse du noeud final de jeton. Le client valide ensuite le jeton d'ID et extrait l'ID sujet de l'utilisateur. Ce flux de profil est destiné aux clients qui peuvent gérer de manière sécurisée une lé secrète client entre eux et le fournisseur OpenID Provider. Ce flux permet également aux clients d'obtenir un jeton d'actualisation.
Pour plus de détails sur la configuration d'un serveur Liberty en tant que client OpenID Connect, voir Configuration d'un client OpenID Connect dans Liberty
Serveur Liberty en tant que fournisseur OpenID Connect
Vous pouvez configurer Liberty pour faire office de fournisseur OpenID Connect. Une telle configuration permet au serveur Liberty d'agir en tant que serveur d'autorisations qui peut être utilisé par des clients OpenID Connect.
Un serveur Liberty qui est configuré pour faire office de fournisseur OpenID Connect prend en charge le flux de code d'autorisation et le flux implicite de la norme OpenID Connect 1.0. Chaque flux détermine comment le jeton d'ID, le jeton d'accès et le jeton d'actualisation sont renvoyés au client.
Le Flux de code d'autorisation traite tous les échanges de jeton à l'aide du noeud final de jeton du fournisseur OpenID Connect. Un fournisseur OpenID Connect accepte une demande d'autorisation d'un client au niveau du noeud final d'autorisation du fournisseur OpenID Connect. Si l'authentification est nécessaire, le fournisseur OpenID Connect effectue l'authentification appropriée. Le fournisseur OpenID Connect obtient également l'accord ou l'autorisation nécessaire auprès de l'utilisateur, en invitant par exemple cet utilisateur dans un navigateur à donner l'autorisation d'accès à certaines portées. Si l'opération aboutit, ou si aucune authentification n'était requise, le fournisseur OpenID renvoie un octroi d'autorisation, ou un code, au client. Le fournisseur OpenID Connect accepte ensuite une demande qui est soumise à son noeud final de jeton par client et qui inclut le code d'autorisation. La demande comportant le code d'autorisation est validée par le fournisseur OpenID. Si la validation aboutit, le fournisseur OpenID Connect renvoie une réponse au client qui inclut un jeton d'ID et un jeton d'accès.
Dans le flux implicite, à la différence du flux de code d'autorisation, tous les jetons sont renvoyés du noeud final d'autorisation ; le noeud final de jeton du fournisseur OpenID Connect n'est pas utilisé. Tout d'abord, un client prépare et envoie une demande d'authentification au noeud final d'autorisation du fournisseur OpenID Provider. Le fournisseur OpenID Connect effectue alors l'authentification nécessaire et obtient également l'accord ou l'autorisation nécessaire auprès de l'utilisateur. Par exemple, le fournisseur OpenID Connect invite cet utilisateur dans un navigateur à donner l'autorisation d'accès à certaines portées. Si l'authentification et l'autorisation aboutissent, le fournisseur OpenID Connect renvoie un jeton d'ID et un jeton d'accès au client. Le client valide ensuite le jeton d'ID et extrait l'ID sujet de l'utilisateur. Ce flux de profil est destiné aux clients qui ne peuvent pas gérer de manière sécurisée une clé secrète client entre eux et le fournisseur OpenID Provider, par exemple les applications natives.
Pour plus de détails sur la configuration d'un serveur Liberty en tant que fournisseur OpenID Connect, voir Configuration d'un fournisseur OpenID Connect dans Liberty
Flux de code d'autorisation
Un flux de code d'autorisation OpenID Connect classique est décrit comme suit :
- Un utilisateur accède à une application sur la partie utilisatrice (RP).
- La partie utilisatrice prépare une demande d'authentification et redirige l'utilisateur vers le fournisseur OpenID Connect.
- Le fournisseur OpenID Connect authentifie l'utilisateur, par exemple en l'invitant à entrer ses informations d'identification. L'utilisateur autorise la partie utilisatrice à accéder aux informations qui sont requises par l'application. Le fournisseur OpenID Connect génère un code d'autorisation à utilisation unique pour la partie utilisatrice.
- Le fournisseur OpenID Connect redirige l'utilisateur vers la partie utilisatrice avec le code d'autorisation.
- La partie utilisatrice appelle le noeud final de jeton du fournisseur OpenID Connect pour échanger le code d'autorisation contre un jeton d'accès, un jeton d'ID et un jeton d'actualisation.
- La partie utilisatrice utilise le jeton d'ID pour autoriser l'utilisateur.

Flux implicite
Le flux implicite est uniquement pris en charge par les serveurs Liberty qui font office de fournisseur OpenID Connect. Un flux typique OpenID Connect classique est décrit comme suit :
- Un utilisateur accède à une application sur la partie utilisatrice (RP).
- La partie utilisatrice prépare une demande d'authentification et redirige l'utilisateur vers le fournisseur OpenID Connect.
- Le fournisseur OpenID Connect authentifie l'utilisateur, par exemple en l'invitant à entrer ses informations d'identification. L'utilisateur autorise la partie utilisatrice à accéder aux informations qui sont requises par l'application.
- Le fournisseur OpenID Connect redirige l'utilisateur vers la partie utilisatrice avec un jeton d'ID et un jeton d'accès.
- La partie utilisatrice utilise le jeton d'ID pour autoriser l'utilisateur.
