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é |
|---|---|
getIsAuthenticated | isAuthenticated |
getAccessToken | accessToken |
getIdToken | idToken |
getUserInfo | userInfo |
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
- Supprimez les variables
JUTRO_AUTH_SILENT_REDIRECT_PATHetJUTRO_AUTH_SILENT_LOGIN_PATHle cas échéant. Ces variables sont spécifiques à l'approche active avec connexion silencieuse et ne sont pas nécessaires à l'approche passive. - Ajoutez
offline_accessà la variableJUTRO_AUTH_SCOPE. - Assurez-vous que la configuration de l'application Guidewire Hub inclut l'octroi
REFRESH_TOKENdans sa sérieauthSettings.grantTypes. - Ajoutez la variable
JUTRO_AUTH_USE_PASSIVE_TOKEN_RENEWALS=true. - Remplacez les utilisations suivantes des propriétés à partir du crochet useAuth :
| Renouvellement actif | Renouvellement passif |
|---|---|
isAuthenticated: boolean | null | getIsAuthenticated: () => Promise<boolean | null> |
accessToken: string | null | getAccessToken: () => Promise<string | null> |
idToken: string | null | getIdToken: () => Promise<string | null> |
userInfo: OidcUserInfo | null | getUserInfo: () => 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.
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.
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.