Cas d’utilisation des sessions
Auth0 maintient une session de connexion pour tout utilisateur qui s’authentifie au moyen d’une application. Lorsqu’un utilisateur effectue une nouvelle connexion standard, Auth0 réinitialise cette session de connexion. La mise à jour d’un mot de passe, d’une adresse courriel, d’un numéro de téléphone ou d’un nom d’utilisateur entraîne aussi l’expiration de la session Auth0 de l’utilisateur. Lorsque vous créez une application nécessitant une authentification, vous pouvez utiliser les sessions pour déterminer si un utilisateur est authentifié chaque fois qu’une requête est effectuée. Selon la façon dont votre application a été conçue, différents sont recommandés afin d’offrir aux utilisateurs une expérience plus sécurisée. Par exemple, prenons un site Web conforme à OIDC ( Connect) appelé storezero.io.
Flux de connexion
La plupart des types d’applications (comme les applications Web, les applications monopage et les applications natives) devraient utiliser le flux de code d’autorisation avec PKCE pour l’authentification à la connexion. Ce flux consiste à échanger un code d’autorisation contre des jetons.Le flux de code d’autorisation avec PKCE remplace l’ancien usage du flux implicite pour les applications monopage sans backend. Tout nouveau développement doit utiliser ce flux afin d’assurer une sécurité optimale. Il est également fortement recommandé de migrer les applications existantes qui utilisent le flux implicite vers le flux de code d’autorisation avec PKCE.
L’utilisateur se connecte avec son nom d’utilisateur et son mot de passe
Dans cet exemple, un utilisateur se connecte manuellement à l’aide de son nom d’utilisateur et de son mot de passe :- Le SDK d’Auth0 crée une session locale et redirige l’utilisateur vers le serveur d’autorisation Auth0 (point de terminaison
/authorize). - Le serveur d’autorisation crée une session, puis redirige l’utilisateur vers le prompt de connexion et d’autorisation.
- L’utilisateur s’authentifie à l’aide de son nom d’utilisateur et de son mot de passe.
- Le serveur d’autorisation Auth0 met à jour la session de l’utilisateur créée précédemment pour indiquer qu’il est connecté.
- Selon le flux utilisé, le serveur d’autorisation renvoie l’utilisateur à votre application, avec soit un ID token, soit un code d’autorisation.
- Votre application échange le token ou le code d’autorisation contre un jeton d’accès et termine le flux.
- La session locale (storezero.io), qui indique à l’application si un utilisateur est authentifié.
-
La session du (storezero.auth0.com), qui indique au serveur si un utilisateur est authentifié. La session du serveur peut aussi, de façon facultative, suivre certains détails liés à l’authentification.
- Par exemple, le serveur d’autorisation peut suivre si un utilisateur a eu recours à l’authentification multifacteur (MFA). Cette information peut ensuite servir à déterminer si l’utilisateur devra se connecter ou utiliser l’authentification multifacteur la prochaine fois qu’il arrivera au serveur d’autorisation.
L’utilisateur se connecte avec un fournisseur d’identité
Dans cet exemple, l’utilisateur choisit de se connecter avec Facebook plutôt qu’avec son nom d’utilisateur et son mot de passe :- Le SDK d’Auth0 crée une session locale et redirige l’utilisateur vers le serveur d’autorisation Auth0 (point de terminaison
/authorize). - Le serveur d’autorisation crée une session, puis redirige l’utilisateur vers le prompt de connexion et d’autorisation.
- Lorsqu’il choisit de se connecter avec Facebook, le serveur d’autorisation redirige l’utilisateur vers Facebook.
- Facebook crée une session et authentifie l’utilisateur. Facebook met ensuite à jour sa session pour indiquer que l’utilisateur est connecté.
- Facebook renvoie l’utilisateur vers le serveur d’autorisation Auth0. Le serveur d’autorisation met ensuite à jour sa session pour indiquer que l’utilisateur est connecté.
- Selon le flux utilisé, le serveur d’autorisation renvoie l’utilisateur vers votre application, avec soit un ID token, soit un code d’autorisation.
- Votre application échange le token ou le code d’autorisation contre un jeton d’accès et termine le flux.
Gestion des sessions pour les SPA
Dans les exemples précédents, une session locale est créée lorsque l’utilisateur lance l’un ou l’autre des processus de connexion. Cette session locale peut garder les utilisateurs connectés et déterminer à quel moment ils doivent s’authentifier de nouveau. Cependant, les sessions locales ne sont pas offertes pour les applications sans backend, comme les applications monopages (SPA). Ces applications utilisent plutôt une autre approche, appelée authentification silencieuse, pour garder les utilisateurs connectés. L’authentification silencieuse utilise la session sur le serveur d’autorisation pour déterminer quand un utilisateur doit s’authentifier de nouveau. Un iframe caché redirige les requêtes d’authentification vers le serveur d’autorisation avec le paramètreprompt=none. Ce paramètre empêche le serveur de demander une saisie à l’utilisateur.
- Si la session sur le serveur d’autorisation n’a pas expiré, la transaction se poursuit sans interruption. Le serveur envoie un par l’entremise de WMRM (Web Message Response Mode), qui utilise
postMessage. - Si la session sur le serveur d’autorisation a expiré ou si l’utilisateur se déconnecte, la redirection dans l’iframe renvoie une erreur. L’application doit alors rediriger l’utilisateur vers le serveur d’autorisation pour qu’il s’authentifie de nouveau.