Gestion des identités
L’Identity as a Service (« IDaaS ») est un service infonuagique de gestion des identités et des accès. Les services offerts comprennent souvent l’authentification unique (SSO), l’identité fédérée, la gestion des mots de passe, et plus encore.
Quel protocole utiliser
Auth0 implémente des protocoles d’identité éprouvés, courants et largement utilisés, autant pour les produits Web destinés aux consommateurs (OAuth 2.0, OAuth 1.0, OpenID) que pour les déploiements en entreprise (SAML, WS-Federation, LDAP). Vous êtes entièrement libre d’utiliser celui qui répond le mieux à vos besoins d’affaires.
OAuth vs OpenID Connect (OIDC)
Flux d’authentification
- L’application web (appelée client dans la terminologie OIDC) lance la requête d’authentification en redirigeant l’agent utilisateur (navigateur) vers Auth0 (le serveur d’autorisation dans la terminologie OIDC).
- Auth0 authentifie l’utilisateur (par l’intermédiaire de l’agent utilisateur). La première fois que l’utilisateur passe par ce flux, une page de consentement s’affiche, où sont indiquées les permissions qui seront accordées à l’application (par exemple, publier des messages, répertorier des contacts). L’utilisateur se connecte au service (s’il n’est pas déjà connecté) et autorise l’accès à l’application.
- Si l’utilisateur accorde l’accès, Auth0 redirige l’agent utilisateur vers l’application avec un code d’autorisation dans la chaîne de requête.
- L’application envoie le code d’autorisation à Auth0, avec les identifiants de l’application (
client_idetclient_secret), et demande un jeton. - Auth0 authentifie l’application (à l’aide de
client_idetclient_secret) et valide le code d’autorisation. S’il est valide, Auth0 renvoie un ID Token.

Mode de réponse Form Post
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 l’ID Token, au lieu du code d’autorisation, tandis que response_mode=form_post encode l’ID Token avec le reste des paramètres de la réponse d’autorisation sous forme de valeurs de formulaire HTML soumises automatiquement dans l’agent utilisateur. Vous obtenez ainsi un flux d’authentification optimisé (inutile d’échanger le code contre un ID Token), mais vous devez vous assurer que la technologie utilisée pour implémenter votre application le prend en charge (c’est le cas du middleware ASP .NET Core). Pour en savoir plus, consultez la spécification OAuth 2.0 Form Post Response Mode.id_token dans les exemples de code) est un JSON Web Token (JWT) qui contient des données d’identité. Il est utilisé par l’application pour obtenir des renseignements sur l’utilisateur, comme son nom, son courriel, etc., généralement à des fins d’affichage dans l’interface utilisateur.
En savoir plus sur les jetons
- L’en-tête contient le type de jeton et l’algorithme de hachage utilisé sur le contenu du jeton.
- Le corps, aussi appelé le payload, contient des claims d’identité sur un utilisateur. Il existe certains claims portant des noms enregistrés, pour des éléments comme l’émetteur du jeton, le sujet du jeton (la personne à laquelle les claims se rapportent) et l’heure d’émission. Il est possible d’ajouter n’importe quel nombre de claims supplémentaires portant d’autres noms, mais il faut veiller à ce que le JWT respecte les limites de taille des URL dans le navigateur.
- La signature est utilisée par le destinataire d’un JWT pour valider l’intégrité de l’information transmise dans le JWT.
Comment valider un ID Token
- Si l’ID Token est chiffré, déchiffrez-le à l’aide des clés et des algorithmes qu’a spécifiés l’Application.
- L’identifiant de l’émetteur du fournisseur OpenID doit correspondre à la valeur du claim
iss(issuer). - Le claim
aud(audience) doit contenir la valeurclient_idde l’Application. L’ID Token doit être rejeté s’il n’indique pas l’Application comme audience valide, ou s’il contient des audiences supplémentaires auxquelles l’Application ne fait pas confiance. - Si l’ID Token contient plusieurs audiences, l’Application doit vérifier qu’un claim
azpest présent. - Si un claim
azp(authorized party) est présent, l’Application doit vérifier que sonclient_idcorrespond à la valeur du claim. - L’Application doit valider la signature des ID Tokens conformément à JWS en utilisant l’algorithme indiqué dans le paramètre d’en-tête JWT
alg. L’Application doit utiliser les clés fournies par l’émetteur. - La valeur
algdoit être la valeur par défautRS256ou l’algorithme envoyé par l’Application dans le paramètreid_token_signed_response_algpendant l’enregistrement. - Si le paramètre d’en-tête JWT
algutilise un algorithme fondé sur un MAC commeHS256,HS384ouHS512, les octets de la représentation UTF-8 duclient_secretcorrespondant auclient_idcontenu dans le claimaud(audience) sont utilisés comme clé pour valider la signature. Pour les algorithmes fondés sur un MAC, le comportement n’est pas précisé siaudcontient plusieurs valeurs ou si une valeurazpest présente et diffère de la valeuraud. - L’heure actuelle doit être antérieure à l’heure indiquée par le claim
exp. - Le claim
iatpeut être utilisé pour rejeter les jetons qui ont été émis trop loin dans le temps par rapport à l’heure actuelle, ce qui limite la durée pendant laquelle lesnoncedoivent être stockés afin de prévenir les attaques. La plage acceptable dépend de l’Application. - Si une valeur
noncea été envoyée dans la requête d’authentification, un claimnoncedoit être présent et sa valeur doit être vérifiée afin de confirmer 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 valeurnoncepour prévenir les replay attacks. La méthode précise pour détecter les replay attacks dépend de l’Application. - Si le claim
acra été demandé, l’Application doit vérifier que la valeur du claim est appropriée. - Si le claim
auth_timea été demandé, soit par une demande précise de ce claim, soit à l’aide du paramètremax_age, l’Application doit vérifier la valeur du claimauth_timeet demander une nouvelle 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 ID Tokens sur votre serveur, vous devez le faire de manière sécuritaire.