Utilisation de la rotation des jetons d’actualisation

Pour utiliser la rotation des jetons d’actualisation, vous utiliserez la trousse SDK Auth0 pour les applications à page unique (SPA). La trousse SDK Auth0 pour les applications à page unique gère pour vous le stockage des jetons, la gestion des séances et d’autres détails.

Conditions préalables

Configurer la rotation des jetons d’actualisation pour activer l’accès hors ligne et demandez la permission de l’accès hors ligne dans la trousse SDK du client.

Activer useRefreshTokens

En conformité avec les spécifications OAuth2, lorsqu’un navigateur demande un jeton d’actualisation à partir du point de terminaison /token, Auth0 ne renverra un jeton d’actualisation que si la rotation des jetons d’actualisation est activée pour ce client.

Utilisez l’option useRefreshTokens sur createAuth0Client dont la valeur par défaut est false. Si cette option est réglée sur false, lorsque getTokenSilently() est invoquée et qu’un nouveau jeton d’accès est requis, la trousse SDK tente d’acquérir un nouveau jeton d’accès à l’aide d’un iframe dissimulé et d’un prompt=none.

Si vous réglez cette option sur true, la permission offline_access est automatiquement demandée lors de l’utilisation de loginWithRedirect(), loginWithPopup() et getTokenSilently(). Lorsque getTokenSilently() est invoqué et que le jeton d’accès a expiré, la trousse SDK essaie de renouveler les jetons d’accès et d’ID en appelant le point de terminaison /token à l’aide du type d’autorisation refresh_token ainsi que du jeton d’actualisation du cache.

La réauthentification silencieuse est réalisée en envoyant un paramètre prompt=none lors de la demande d’authentification et en utilisant un iframe dissimulé, à condition qu’il y ait une session utilisateur active sur le serveur d’autorisation. La trousse SDK utilise la méthode iframe si vous avez défini useRefreshTokens sur true mais qu’aucun jeton d’actualisation n’est disponible dans le cache. Cela permet aux utilisateurs de migrer silencieusement vers l’utilisation de jetons d’actualisation sans les obliger à se reconnecter.

Si l’échange échoue parce que useRefreshTokens est true, mais qu’il n’y a pas de jeton d’actualisation dans le cache, on revient à la méthode iframe (qui peut également échouer si les témoins tiers sont bloqués).

Stockage des jetons

Avec les SPA (applications à page unique), les identifiants et les jetons d’accès sont obtenus auprès du serveur d’autorisation et sont généralement mis en cache dans la mémoire. Le renouvellement des jetons (en raison de l’actualisation du navigateur, des budgets d’éviction du cache mémoire ou de l’expiration) est géré par la trousse SDK.

Exemple

L’exemple suivant montre comment configurer la trousse SDK pour qu’elle utilise à la fois le stockage local et les jetons d’actualisation :

const auth0 = await createAuth0Client({
    domain: '<your Auth0 domain>',
    client_id: '<your Auth0 client ID>',
    cacheLocation: 'localstorage',
    useRefreshTokens: true
    });
    
    // Logging-in will automatically request the offline_access scope
    // and store the resulting refresh token
    auth0.loginWithRedirect();
    
    // Silently refreshing the access token will use the /token endpoint
    // with ‘refresh_token’ grant and the refresh token from the cache
    await auth0.getTokenSilently();

Was this helpful?

/

En savoir plus