Cas d’utilisation de la session
Auth0 maintient une session de connexion pour tout utilisateur qui s’authentifie par le biais d’une application. Lorsqu’un utilisateur effectue une nouvelle connexion standard, Auth0 réinitialise la session de connexion. La mise à jour d’un mot de passe, d’une adresse courriel ou d’un numéro de téléphone entraîne également l’expiration de la session Auth0 d’un utilisateur. Lorsque vous créez une application nécessitant une authentification, vous pouvez utiliser des sessions pour déterminer si un utilisateur est authentifié à chaque fois qu’une demande est formulée. En fonction de la façon par laquelle votre application a été construite, différents flux d’autorisation sont recommandés pour offrir une expérience plus sûre aux utilisateurs. Prenons l’exemple d’un site web conforme à l’OIDC ( Connect) appelé storezero.io.
Flux de connexion
La plupart des types d’applications (telles que les applications web, les applications à page unique et les applications natives) devraient utiliser le Flux de code d’autorisation avec PKCE pour faciliter l’authentification de la connexion. Ce flux implique l’échange d’un code d’autorisation contre des jetons.Le flux Codes d’autorisation avec PKCE remplace l’utilisation précédente du flux implicite pour les applications à page unique sans système dorsal. De nouveaux développements doivent utiliser ce flux pour assurer une sécurité optimale. Il est également hautement recommandé de migrer les applications existantes à l’aide du flux implicite vers un flux Codes d’autorisation améliorée par PKCE.
L’utilisateur se connecte avec son nom d’utilisateur et son mot de passe
Dans cet exemple, un utilisateur se connecte manuellement en utilisant son nom d’utilisateur et son mot de passe :- La trousse SDK Auth0 crée une session locale et redirige l’utilisateur vers le serveur d’autorisation d’Auth0 (point de terminaison
/authorize
). - Le serveur d’autorisation crée une session, puis redirige l’utilisateur vers l’invite 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 précédemment créée par l’utilisateur pour indiquer qu’il est connecté.
- En fonction du flux utilisé, le serveur d’autorisation renvoie l’utilisateur à votre application, avec un jeton d’ID ou un code d’autorisation.
- Votre application échange le jeton ou le code d’autorisation contre un jeton d’accès et termine le flux.
- La session locale (storezero.io), laquelle indique à l’application si un utilisateur est authentifié.
-
La session du serveur d’autorisation (storezero.auth0.com), qui indique au serveur si un utilisateur est authentifié. La session du serveur peut également suivre les détails de l’authentification (facultatif).
- Par exemple, le serveur d’autorisation peut savoir si un utilisateur a utilisé l’authentification multifacteur (MFA). Ces informations peuvent ensuite être utilisées pour déterminer si un utilisateur doit être invité à se connecter ou à utiliser la MFA lors de sa prochaine visite au serveur d’autorisation.
L’utilisateur se connecte avec le fournisseur d’identité
Dans cet exemple, l’utilisateur choisit de se connecter avec Facebook au lieu de son nom d’utilisateur et de son mot de passe :- La trousse SDK Auth0 crée une session locale et redirige l’utilisateur vers le serveur d’autorisation d’Auth0 (point de terminaison
/authorize
). - Le serveur d’autorisation crée une session, puis redirige l’utilisateur vers l’invite de connexion et d’autorisation.
- Si l’utilisateur choisit de se connecter avec Facebook, le serveur d’autorisation le redirige vers Facebook.
- Le serveur d’autorisation de 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 au serveur d’autorisation Auth0. Le serveur d’autorisation met alors à jour sa session pour indiquer que l’utilisateur est connecté.
- En fonction du flux utilisé, le serveur d’autorisation renvoie l’utilisateur à votre application, avec un jeton d’ID ou un code d’autorisation.
- Votre application échange le jeton ou le code d’autorisation contre un jeton d’accès et termine le flux.
Gestion de session pour les applications à page unique
Dans les exemples précédents, une session locale est créée lorsque l’utilisateur initie l’un ou l’autre flux de connexion. Cette session locale permet aux utilisateurs de rester connectés et de déterminer quand ils doivent se réauthentifier. Cependant, les sessions locales ne sont pas disponibles pour les applications sans système dorsal, telles que les applications à page unique. Au lieu de cela, ces applications utilisent une approche différente connue sous le nom d’authentification silencieuse pour maintenir la connexion des utilisateurs. L’authentification silencieuse utilise la session sur le serveur d’autorisation pour déterminer quand un utilisateur doit se réauthentifier. Une iframe cachée redirige les demandes d’authentification vers le serveur d’autorisation avec le paramètreprompt=none
. Ce paramètre empêche le serveur de demander à l’utilisateur d’entrer des données.
- Si la session sur le serveur d’autorisation n’a pas expiré, la transaction se poursuit sans interruption. Le serveur envoie un jeton d’accès par l’intermédiaire du WMRM (Web Message Response Mode), qui utilise
postMessage
. - Si la session sur l’autorisation a expiré ou si l’utilisateur se déconnecte, la redirection dans l’iframe renvoie une erreur. L’application doit alors diriger l’utilisateur vers le serveur d’autorisation pour une nouvelle authentification.