Installation
Vous avez plusieurs options pour utiliser la trousse SDK Auth0 pour les applications à page unique (SPA) dans votre projet :- Depuis le CDN :
<script src="https://cdn.auth0.com/js/auth0-spa-js/2.0/auth0-spa-js.production.js"></script>
. Pour plus d’informations, lisez la FAQ. - Avec npm :
npm install @auth0/auth0-spa-js
- Avec yarn :
yarn add @auth0/auth0-spa-js
Premiers pas
Créer le client
Tout d’abord, vous devez créer une nouvelle instance de l’objet clientAuth0Client
. Créez l’instance Auth0Client
avant d’afficher ou d’initialiser votre application. Vous pouvez le faire en utilisant soit la méthode async/await, soit les promesses. Vous ne devez créer qu’une seule instance du client.
L’utilisation de createAuth0Client
permet de réaliser plusieurs choses automatiquement :
- Elle crée une instance de
Auth0Client
. - Elle appelle
getTokenSilently
pour actualiser la session de l’utilisateur. - Elle supprime toutes les erreurs provenant de
getTokenSilently
, à l’exception delogin_required
.
Utiliser async/await
Utiliser les promesses
Vous pouvez également créer le client directement en utilisant le constructeurAuth0Client
. Cela peut être utile si vous souhaitez :
- Contourner l’appel à
getTokenSilently
lors de l’initialisation. - Effectuer une gestion personnalisée des erreurs.
- Initialiser la trousse SDK de manière synchrone.
Se connecter et obtenir des informations sur l’utilisateur
Ensuite, créez un bouton sur lequel les utilisateurs peuvent cliquer pour commencer à se connecter :<button id="login">Cliquer pour se connecter</button>
Écoutez les événements de clic sur le bouton que vous avez créé. Lorsque l’événement se produit, utilisez la méthode de connexion souhaitée pour authentifier l’utilisateur (loginWithRedirect()
dans cet exemple). Une fois l’utilisateur authentifié, vous pouvez récupérer le profil utilisateur à l’aide de la méthode getUser()
.
Utiliser async/await
Utiliser les promesses
Appeler une API
Pour appeler votre API, commencez par obtenir le jeton d’accès de l’utilisateur. Utilisez ensuite le jeton d’accès dans votre demande. Dans cet exemple, la méthodegetTokenSilently
est utilisée pour récupérer le jeton d’accès :
<button id="callApi">Appeler une API</button>
Utiliser async/await
Utiliser les promesses
Déconnexion
Ajoutez un bouton sur lequel les utilisateurs peuvent cliquer pour se déconnecter :<button id="logout">Déconnexion</button>
Modifier les options de stockage
Par défaut, la trousse SDK Auth0 pour les applications à page unique (SPA) stocke les jetons en mémoire. Toutefois, cette méthode ne permet pas d’assurer la persistance de l’information entre les actualisations de pages et les onglets du navigateur. Au lieu de cela, vous pouvez choisir de stocker les jetons dans le stockage local en définissant la propriétécacheLocation
sur localstorage
lors de l’initialisation de la trousse SDK. Cela peut contribuer à atténuer certains des effets de la technologie de protection de la vie privée des navigateurs qui empêche l’accès au témoin de session Auth0 en stockant les jetons d’accès plus longtemps.
Le stockage des jetons dans la mémoire locale du navigateur assure la persistance des jetons à travers les actualisations de pages et les onglets du navigateur. Toutefois, si un attaquant parvient à exécuter le JavaScript dans l’application Web monopage (SPA) à l’aide des scripts intersites (XSS), il peut récupérer les jetons stockés dans la mémoire locale. La vulnérabilité menant à une attaque XSS réussie peut se trouver soit dans le code source de l’application Web monopage (SPA), soit dans tout code JavaScript tiers (tel que bootstrap, jQuery ou Google Analytics) inclus dans la SPA.Informez-vous davantage sur la question du Stockage de jetons.
Utilisation de jetons d’actualisation rotatifs
La trousse SDK Auth0 pour les applications à page unique (SPA) pour application monopage peut être configurée pour utiliser une rotation des jetons d’actualisation afin d’obtenir silencieusement de nouveaux jetons d’accès. Ils peuvent être utilisés pour contourner la technologie de confidentialité du navigateur qui empêche l’accès au témoin de session Auth0 lors d’une authentification silencieuse, ainsi que pour fournir une détection de réutilisation intégrée. Pour ce faire, configurez la trousse SDK en définissantuseRefreshTokens
sur true
lors de l’initialisation :
Les jetons d’actualisation devront également être configurés pour votre locataire avant de pouvoir être utilisés dans votre application monopage (SPA).
Une fois configuré, la trousse SDK demandera la permission offline_access
pendant l’étape d’autorisation. En outre, getTokenSilently
appellera alors le point de terminaison /oauth/token
directement pour échanger des jetons d’actualisation contre des jetons d’accès.
Le SDK respectera la configuration de stockage lors du stockage des jetons d’actualisation. Si le SDK a été configuré en utilisant le mécanisme de stockage en mémoire par défaut, les jetons d’actualisation seront perdus lors de l’actualisation de la page.
Utilisation
Vous trouverez ci-dessous des exemples d’utilisation des différentes méthodes de la trousse SDK. Notez que jQuery est utilisé dans ces exemples.Connexion avec redirection
Redirigez vers le point de terminaison/authorize
à Auth0, en démarrant le flux de connexion universelle :
Connexion avec fenêtre contextuelle
Utilisez une fenêtre contextuelle pour vous connecter à l’aide de la page de Connexion universelle :error.popup.close
:
popup
personnalisée dans l’objet options
:
Connexion avec rappel de redirection
Lorsque le navigateur est redirigé d’Auth0 vers votre application monopage,handleRedirectCallback
doit être appelé afin de compléter le flux de connexion :
Obtenir un jeton d’accès sans interaction
Obtenir un nouveau jeton d’accès silencieusement en utilisant une iframe cachée etprompt=none
, ou en utilisant un jeton d’actualisation rotatif. Les jetons d’actualisation sont utilisés lorsque useRefreshTokens
est défini sur true
lors de la configuration de la trousse SDK.
Obtenir un jeton d’accès en mode silencieux sans utiliser de jetons d’actualisation ne fonctionnera pas dans les navigateurs qui bloquent les témoins tiers, tels que Safari et Brave. Pour en savoir plus sur la solution de contournement des domaines personnalisés, consultez Comment renouveler les jetons dans Safari.
getTokenSilently()
nécessite que Autoriser le contournement du consentement utilisateur soit activé dans vos Paramètres API dans Dashboard. En outre, le consentement de l’utilisateur ne peut pas être ignoré sur ’localhost’.
Obtenir un jeton d’accès avec une fenêtre contextuelle
Les jetons d’accès peuvent également être récupérés à l’aide d’une fenêtre contextuelle. Contrairement àgetTokenSilently
, cette méthode de récupération d’un jeton d’accès fonctionnera dans les navigateurs dont les témoins tiers sont bloqués par défaut :
Obtenir un jeton d’accès pour une audience différente
Des options peuvent être transmises àgetTokenSilently
pour obtenir un jeton d’accès dont l’ et la permission diffèrent de ceux demandés au moment de l’authentification de l’utilisateur.
Ne fonctionne que si vous n’utilisez pas de jetons d’actualisation (
useRefreshTokens:false
), car un jeton d’actualisation est lié à l’audience et à la permission spécifiques demandés lors de l’authentification de l’utilisateur.Obtenir l’utilisateur
Vous pouvez obtenir les données de profil de l’utilisateur authentifié en appelant la méthodegetUser
:
Obtenir des demandes de jetons d’ID
Vous pouvez obtenir les demandes du jeton d’ID de l’utilisateur authentifié en appelant la méthodegetIdTokenClaims
:
Déconnexion (par défaut)
Vous pouvez lancer une action de déconnexion en appelant la méthodelogout
:
Déconnexion sans ID client
Vous pouvez lancer une action de déconnexion sans spécifier d’ID client en appelant la méthodelogout
et en incluant clientId:null
: