Prompts OpenID Connect : Liste complète avec exemples
Techniquement, le prompt OpenID Connect est un paramètre qui peut être inclus dans la requête d’authentification pour contrôler le comportement du flux d’authentification. Le paramètre prompt permet à une partie réceptrice (Relying Party - RP) de demander des interactions spécifiques avec l’utilisateur pendant le processus d’authentification.
Pourquoi et quand utiliser le prompt OpenID Connect ?
En utilisant les prompts OpenID Connect, la partie réceptrice (RP) peut personnaliser le flux d’authentification et d’autorisation pour l’adapter à ses besoins spécifiques et améliorer l’expérience utilisateur.
L’intention principale derrière l’utilisation d’un prompt est de modifier le comportement du flux en fonction des besoins de l’application. Dans le cas d’une application critique ou d’une action critique, vous pouvez souhaiter que l’utilisateur s’authentifie à nouveau.
Le Prompt OpenID Connect
Voici un résumé rapide des valeurs du prompt OpenID Connect. Veuillez noter que le comportement de chaque prompt peut varier en fonction de l’implémentation du fournisseur OpenID (OpenID Provider - OP). Lisez les sections suivantes pour plus de détails sur chaque prompt.
| Valeur du Prompt | Description | Quand l’utiliser | Exemple |
|---|---|---|---|
| none | Authentification silencieuse | Lorsque l’utilisateur a préalablement donné son consentement à l’application et possède une session active. Peut être utilisé pour vérifier si l’utilisateur a une session active. | prompt=none |
| login | Forcer l’utilisateur à se connecter | Pour des actions critiques ou pour forcer un utilisateur à changer de compte | prompt=login |
| consent | Demander le consentement de l’utilisateur | Pour demander le consentement même si la portée (scope) a été accordée précédemment | prompt=consent |
| select_account | Permettre à l’utilisateur de sélectionner un compte | Lorsque l’utilisateur a plusieurs comptes associés au fournisseur d’authentification | prompt=select_account |
| create | Demander à l’OP d’afficher d’abord la page d’inscription | Lorsque vous savez que l’utilisateur n’a pas encore créé de compte | prompt=create |
Prompt None
Le prompt none est utilisé pour authentifier silencieusement l’utilisateur sans solliciter d’action de sa part. Ce prompt évite de demander la connexion et le consentement uniquement lorsque l’utilisateur a préalablement donné son consentement à l’application et possède bien sûr une session active.
Le comportement dépend de chaque fournisseur OpenID (OP). La plupart des OP (par exemple : Google OpenID Connect) retourneront une erreur lorsque l’utilisateur n’est pas authentifié ou n’a pas encore accordé les portées (scopes) pour cette application.
Pour d’autres OP, le prompt none se comporte comme un comportement par défaut demandant de s’authentifier uniquement lorsqu’il n’y a pas de session existante et demandant le consentement uniquement lorsqu’un ou plusieurs scopes n’ont pas été préalablement accordés.
Une requête d’autorisation avec le prompt none ressemble à ceci :
GET /authorize?prompt=none&client_id=abcd1234&redirect_uri=https://mydomain.com/callback&scope=openid%20profile&response_type=id_token HTTP/1.1Host: cerberauth.comPrompt Login
Le prompt login exige que l’utilisateur se connecte auprès du fournisseur d’authentification. En d’autres termes, ce prompt force la réauthentification de l’utilisateur. Certains fournisseurs OpenID (OP) peuvent invalider les sessions OP lorsqu’un prompt login est demandé.
Le prompt login peut être utilisé pour des actions critiques ou pour forcer un utilisateur à changer de compte. Certains OP ne prennent pas en charge le fait d’avoir plusieurs comptes, et donc différents sujets (subjects), pour la même session. Un changement de compte peut nécessiter d’effectuer une requête d’autorisation avec un prompt login afin d’invalider la première session en cours.
Une requête d’autorisation avec le prompt login ressemble à ceci :
GET /authorize?prompt=login&client_id=abcd1234&redirect_uri=https://mydomain.com/callback&scope=openid%20profile&response_type=id_token HTTP/1.1Host: cerberauth.comPrompt Consent
Le prompt consent demande à l’utilisateur de consentir explicitement aux scopes demandés par l’application qui requiert l’authentification. Dans ce cas, le consentement sera demandé même si le scope a été accordé précédemment pour l’application.
Une requête d’autorisation avec le prompt consent ressemble à ceci :
GET /authorize?prompt=consent&client_id=abcd1234&redirect_uri=https://mydomain.com/callback&scope=openid%20profile&response_type=id_token HTTP/1.1Host: cerberauth.comPrompt Select Account
Le prompt select_account est un prompt spécial qui permet à l’utilisateur de choisir parmi plusieurs comptes associés au fournisseur d’authentification. Ce prompt est généralement utilisé dans des scénarios où l’utilisateur possède plusieurs identités ou profils chez le même fournisseur d’authentification.
Par exemple, un utilisateur peut avoir à la fois une identité personnelle et une identité professionnelle associées à son fournisseur d’authentification. Le prompt “select_account” permet à l’utilisateur de sélectionner l’identité appropriée pour la session en cours.
Une requête d’autorisation avec le prompt select_account ressemble à ceci :
GET /authorize?prompt=select_account&client_id=abcd1234&redirect_uri=https://mydomain.com/callback&scope=openid%20profile&response_type=id_token HTTP/1.1Host: cerberauth.comPrompt d’inscription d’utilisateur / Create
Le prompt create est le plus récent et a été introduit dans cette nouvelle spécification OpenID Connect concernant le prompt create publiée en décembre 2022.
Parce que l’application vient d’être publiée et que vous savez que l’utilisateur n’a pas encore de compte créé, ou simplement parce que vous savez que la plupart de vos utilisateurs sont nouveaux, vous pouvez souhaiter simplifier les interactions lors de l’inscription. Pour cette raison, il peut être pratique de demander à l’OP d’afficher d’abord la page d’inscription.
Ce prompt a été créé principalement pour améliorer l’expérience utilisateur, grâce à plusieurs années d’expérience d’implémentation et de retours d’expérience.
Une requête d’autorisation avec le prompt create ressemble à ceci :
GET /authorize?prompt=create&client_id=abcd1234&redirect_uri=https://mydomain.com/callback&scope=openid%20profile&response_type=id_token HTTP/1.1Host: cerberauth.comLors de la conception d’un flux d’authentification avec OpenID Connect, il is important de réfléchir attentivement aux prompts à utiliser et à la manière dont ils affecteront l’expérience utilisateur ainsi que le niveau de sécurité de l’application. En suivant les meilleures pratiques et en restant à jour avec les derniers développements de la spécification OpenID Connect, les parties réceptrices (RP) peuvent créer des expériences d’authentification sécurisées et conviviales qui répondent aux besoins de leurs utilisateurs et aux exigences de leur entreprise.