Dépannage des erreurs de jeton non valide

Analyse d’un jeton d’ID HS256-Signed sans jeton d’accès

Message d'erreur: Le jeton d’ID n’a pas pu être validé à l’aide de l’algorithme HS256 et les applications publiques (navigateur, par exemple) ne peuvent pas stocker les secrets

Causes

À partir de auth0.js version 9 et Lock version 11, lorsque des jetons d’ID sont signés avec HS256, ils sont ignorés et un appel à /userinfo est fait pour récupérer les informations de l’utilisateur.

L'appel à /userinfo nécessite un jeton d'accès. Si vous ne demandez pas de jeton d'accès lors de l'authentification, vous recevrez l'erreur suivante : Le id_token ne peut pas être validé car il a été signé avec l'algorithme HS256 et les applications publiques (comme un navigateur) ne peuvent pas stocker de secrets. Veuillez consulter la documentation associée pour connaître les solutions possibles.

Corrections

Vous pouvez procéder de deux manières :

  1. (RECOMMANDÉ) Utilisez l’algorithme de signature d’application RS256 à la place de HS256.

  2. Changez la valeur de votre paramètre responseType en token id_token (à la place de la valeur par défaut) afin de recevoir un jeton d’accès dans la réponse.

Pour modifier l'algorithme de signature de l'application de HS256 vers RS256 :

  1. Accédez à Auth0 Dashboard > Applications > Applications et sélectionnez le nom de l’application à afficher.

  2. Faites défiler vers le bas de la page Paramètres et sélectionnez Afficher les paramètres avancés.

  3. Sélectionnez la vue OAuth, changez la valeur de JsonWebToken Signature Algorithm en RS256, puis sélectionnez Enregistrer les modifications.

Si vous utilisez cette méthode et que vous utilisez le jeton d’identification pour appeler vos API, assurez-vous de changer votre code serveur pour qu’il valide les jetons avec l’algorithme RS256 au lieu de HS256. Notez que l’utilisation de jetons d’identification n’est pas recommandé pour appeler les API.

Vous pouvez décoder, vérifier et générer des JWT à l’aide du JWT Tool.