Gestion des identités
L’identité en tant que service (Identity-as-Service/IDaaS) est un service basé sur le nuage pour la gestion des identités et des accès. Les services proposés comprennent souvent l’authentification unique (SSO), l’identité fédérée, la gestion des mots de passe, etc.
Quel protocole utiliser?
Auth0 met en œuvre des protocoles d’identité éprouvés, communs et populaires, à la fois pour les produits Web orientés vers le consommateur (OAuth 2.0, OAuth 1.0, OpenID) et pour les déploiements d’entreprise (SAML, WS-Federation, LDAP). Vous êtes totalement libre d’utiliser celui qui répond le mieux aux besoins de votre entreprise.
OAuth vs OpenID Connect (OIDC)
Flux d’authentification
- L’application Web (appelée Client dans la terminologie OIDC) initie la demande d’authentification en redirigeant le user-agent (navigateur) vers Auth0 (le serveur d’autorisations dans la terminologie OIDC).
- Auth0 authentifie l’utilisateur (via le user-agent). La première fois que l’utilisateur passe par ce flux, une page de consentement s’affiche, où sont énumérées les autorisations qui seront accordées à l’application (p. ex., poster des messages, répertorier des contacts). L’utilisateur se connecte au service (à moins qu’il ne soit déjà connecté) et autorise l’accès à l’application.
- Si l’utilisateur autorise l’accès, Auth0 redirige le user-agent vers l’application, avec un code d’autorisation dans la chaîne de requête.
- L’application envoie le code d’autorisation à Auth0, ainsi que les informations d’identification de l’application (client_id et client_secret), et demande un jeton.
- Auth0 authentifie l’application (à l’aide de l’identifiant et du secret du client) et valide le code d’autorisation. S’il est valide, Auth0 répond par un jeton d’identification.

Mode de réponse à l’envoi d’un formulaire Une autre option est d’utiliser le OAuth 2.0 Form Post Response Mode avec response_type=id_token&response_mode=form_post. En raison du paramètre de requête response_type=id_token, la réponse contient directement le jeton d’ID, au lieu du code d’autorisation, tandis que le paramètre response_mode=form_post encode le jeton d’ID avec le reste des paramètres de la réponse d’autorisation en tant que valeurs de formulaire HTML qui sont soumises automatiquement dans le User Agent. De cette façon, vous pouvez avoir un flux d’authentification optimisé (pas besoin d’échanger le code pour un jeton d’ID), mais vous devez vous assurer qu’il est pris en charge par la technologie que vous utilisez pour mettre en œuvre votre application (le logiciel médiateur ASP .NET Core le prend en charge). Pour plus de détails, consultez la [spécification Mode de réponse à l’envoi d’un formulaire OAuth 2.0] (https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html). :::
id_token dans les exemples de code) est un jeton Web JSON (JWT) qui contient des données d’identité. Il est consommé par l’application et utilisé pour obtenir des informations de l’utilisateur comme son nom, son courriel, et ainsi de suite, généralement utilisées pour l’affichage de l’interface utilisateur.
En savoir plus sur les jetons Les jetons sont des chaînes alphanumériques utilisées dans le cadre d’une authentification basée sur des jetons. Ils permettent aux utilisateurs de s’authentifier une fois avec un nom d’utilisateur et un mot de passe et d’obtenir en retour un jeton qu’ils peuvent utiliser à partir de ce moment-là. Ils ont une durée de vie limitée. Les Jetons Web JSON (JWT) sont des jetons conformes à la [JSON Web Token Standard] (https://tools.ietf.org/html/rfc7519) et contiennent des informations sur une identité sous la forme de demandes. Ils sont autonomes en ce sens qu’il n’est pas nécessaire pour le destinataire d’appeler un serveur pour valider le jeton. Les JWT peuvent être signés à l’aide d’un secret (avec l’algorithme HMAC) ou d’une paire de clés publique/privée utilisant l’algorithme RSA. Vous pouvez trouver plus d’informations sur jeton Web JSON (JWT) [ici] (/tokens/concepts/jwts).
- L’en-tête contient le type de jeton et l’algorithme de hachage utilisé pour le contenu du jeton.
- Le corps, également appelé « données utiles », contient des informations sur l’identité de l’utilisateur. Certaines réclamations portent des noms enregistrés, par exemple pour l’émetteur du jeton, le sujet du jeton (qui fait l’objet des réclamations) et le moment de l’émission. Il est possible d’ajouter un nombre quelconque de réclamations supplémentaires avec d’autres noms, mais il faut veiller à ce que le JWT ne dépasse pas les limites de taille du navigateur pour les URL.
- La signature est utilisée par le destinataire d’un JWT pour valider l’intégrité des informations transmises dans le JWT. :::
Comment valider un jeton d’ID
- Si le jeton d’ID est chiffré, il faut le déchiffrer en utilisant les clés et les algorithmes précisés par l’application.
- L’identifiant de l’émetteur pour le fournisseur OpenID doit correspondre à la valeur de la demande
iss(émetteur). - La demande
aud(audience) doit contenir la valeurclient_idde l’application. Le jeton d’ID doit être rejeté s’il ne mentionne pas l’application en tant qu’une audience valide ou s’il contient des audiences supplémentaires auxquelles l’application n’accorde pas sa confiance. - Si le jeton d’identification contient plusieurs audiences, l’application doit vérifier qu’une demande
azpest présente. - Si une demande
azp(partie autorisée) est présente, l’application doit vérifier que sonclient_idcorrespond à la valeur de la demande. - L’application doit valider la signature des jetons d’ID conformément à JWS en utilisant l’algorithme spécifié dans le paramètre d’en-tête
algdu JWT. L’application doit utiliser les clés fournies par l’émetteur. - La valeur
algdoit être celle par défaut deRS256ou de l’algorithme envoyé par l’application dans le paramètreid_token_signed_response_alglors de l’enregistrement. - Si le paramètre d’en-tête
algdu JWT utilise un algorithme de type MAC commeHS256,HS384, ouHS512, les octets de la représentation UTF-8 duclient_secretcorrespondant auclient_idcontenu dans la demandeaud(audience) sont utilisés comme clé de validation de la signature. Pour les algorithmes de type MAC, le comportement n’est pas précisé siaudest à valeurs multiples ou si une valeurazpest présente, différente de la valeuraud. - L’heure indiquée doit être antérieure à l’heure représentée par la demande
exp. - La demande
iatpeut être utilisée pour rejeter les jetons qui ont été émis à une date trop éloignée de l’heure actuelle, ce qui limite la durée pendant laquelle les nombres aléatoires doivent être stockés pour prévenir les attaques. La plage acceptable est propre à l’application. - Si une valeur
noncea été envoyée dans la requête d’authentification, une demandenoncedoit être présente pour s’assurer qu’il s’agit de la même valeur que celle qui a été envoyée dans la requête d’authentification. L’application doit vérifier la valeur dunoncepour détecter les attaques par réinsertion. La méthode précise de détection des attaques par réinsertion est propre à l’application. - Si la demande
acra été émise, l’application doit vérifier que la valeur de l’allégation affirmée est appropriée. - Si la demande
auth_timea été émise, soit par une demande particulière pour cette allégation, soit en utilisant le paramètremax_age, l’application doit vérifier la valeur de la demandeauth_timeet demander une réauthentification si elle détermine que trop de temps s’est écoulé depuis la dernière authentification de l’utilisateur final.
Si vous stockez des jetons d’ID sur votre serveur, faites-le de manière sécurisée.