Passer au contenu principal

Actualisation des jetons d’authentification

Jutro propose deux approches pour l’actualisation automatique des jetons : le renouvellement passif des jetons et le renouvellement silencieux (également connu sous le nom d’authentification silencieuse ou de renouvellement actif).

Renouvellement passif des jetons​

Avec le renouvellement passif des jetons, le système vérifie la validité des jetons à chaque accès. Si le jeton a expiré, il le renouvelle avant de le renvoyer. Le renouvellement silencieux n'est pas obsolète, mais il est recommandé de passer au renouvellement passif.

Configuration du renouvellement passif des jetons​

Afin d’activer le renouvellement passif des jetons, définissez la propriété de configuration JUTRO_AUTH_USE_PASSIVE_TOKEN_RENEWALS sur true. Pour obtenir des instructions plus détaillées sur le passage au renouvellement passif des jetons, reportez-vous au guide de migration.

Propriétés useAuth de renouvellement passif des jetons​

Certaines propriétés de l’objet renvoyé par le crochet useAuth se comportent différemment lorsque le renouvellement passif des jetons est activé.

Renouvellement passif activéRenouvellement passif désactivé
getIsAuthenticatedisAuthenticated
getAccessTokenaccessToken
getIdTokenidToken
getUserInfouserInfo

Lorsque le renouvellement passif est activé, les valeurs de isAuthenticated, accessToken, idToken et userInfo seront toujours null.

Lorsque le renouvellement passif n'est pas activé, les valeurs getIsAuthenticated, getAccessToken, getIdToken et getUserInfo seront toujours déterminées sur null et un avertissement d'utilisation incorrecte sera affiché.

Migration vers le renouvellement passif des jetons​

  1. Supprimez les variables JUTRO_AUTH_SILENT_REDIRECT_PATH et JUTRO_AUTH_SILENT_LOGIN_PATH le cas échéant. Ces variables sont spécifiques à l'approche active avec connexion silencieuse et ne sont pas nécessaires à l'approche passive.
  2. Ajoutez offline_access à la variable JUTRO_AUTH_SCOPE.
  3. Assurez-vous que la configuration de l'application Guidewire Hub inclut l'octroi REFRESH_TOKEN dans sa série authSettings.grantTypes.
  4. Ajoutez la variable JUTRO_AUTH_USE_PASSIVE_TOKEN_RENEWALS=true.
  5. Remplacez les utilisations suivantes des propriétés à partir du crochet useAuth :
Renouvellement actifRenouvellement passif
isAuthenticated: boolean | nullgetIsAuthenticated: () => Promise<boolean | null>
accessToken: string | nullgetAccessToken: () => Promise<string | null>
idToken: string | nullgetIdToken: () => Promise<string | null>
userInfo: OidcUserInfo | nullgetUserInfo: () => Promise<OidcUserInfo | null>

Connexion silencieuse​

La connexion silencieuse, également appelée authentification silencieuse ou renouvellement actif, actualise le jeton d’accès lorsque le code client JavaScript ne permet pas d’accéder au jeton d’actualisation. Par exemple, cela se produit lorsque le jeton d’actualisation est défini par un cookie Http-only.

Pour effectuer une connexion silencieuse, @jutro/auth affiche une autre instance de votre application dans un iframe masqué à l’aide du chemin de connexion silencieuse. Cette instance exécute la requête « authorize » et revient au chemin de redirection silencieuse, ce qui lui permet d'obtenir un nouveau jeton d’accès à utiliser sur le front-end.

Si vous utilisez le client OIDC générique, la connexion silencieuse doit être configurée explicitement, car elle nécessite deux routes qui ne sont utilisées pour aucune autre fonctionnalité de votre application.

Note: La route de rappel doit également être déclarée du côté du fournisseur d'identité comme chemin de redirection valide.

Si vous souhaitez prendre en charge la connexion silencieuse, vous devez définir les variables de configuration suivantes (des exemples de valeurs sont affichés) :

REACT_APP_JUTRO_AUTH_SILENT_REDIRECT_PATH=/auth/silent/callback
REACT_APP_JUTRO_AUTH_SILENT_LOGIN_PATH=/auth/silent/login

Le renouvellement passif des jetons ne prend pas en charge la connexion silencieuse. Supprimez l’option de configuration JUTRO_AUTH_USE_PASSIVE_TOKEN_RENEWALS si vous voulez utiliser la connexion silencieuse. En outre, aucune propriété de renouvellement passif des jetons du crochet useAuth ne peut être utilisée. Pour en savoir plus, reportez-vous à la section Propriétés de renouvellement passif des jetons.

Note: Si le navigateur de l’utilisateur bloque les cookies tiers alors que la connexion silencieuse est en cours d’utilisation, une erreur JUTRO_AUTH_LOGIN_REQUIRED_ERROR est générée.

L’erreur JUTRO_AUTH_LOGIN_REQUIRED_ERROR ne se produira jamais tant que le renouvellement passif des jetons est actif.

L’approche de type renouvellement passif des jetons en matière d'actualisation fonctionne dans ce scénario et peut être utilisée comme alternative pour éviter d’avoir à se soucier des erreurs JUTRO_AUTH_LOGIN_REQUIRED_ERROR.