Skip to main content

Analyse d’un jeton d’identité signé avec HS256 sans jeton d’accès

Message d’erreur : Le ne peut pas être validé, car il a été signé à l’aide de l’algorithme HS256 et les applications publiques (comme un navigateur) ne peuvent pas stocker de secrets.

Causes

À partir de la version 9 d’auth0.js et de la version 11 de Lock, lorsque des jetons d’identité sont signés avec HS256, ils sont ignorés et un appel à /userinfo est effectué pour récupérer les informations sur l’utilisateur. L’appel à /userinfo nécessite un . Si vous ne demandez pas de jeton d’accès au moment de l’authentification, vous recevrez l’erreur suivante : The id_token cannot be validated because it was signed with the HS256 algorithm and public applications (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this.

Correctifs

Il existe deux façons de corriger l’erreur :
  1. (RECOMMANDÉ) Modifiez l’algorithme de signature de l’application pour utiliser RS256 au lieu de HS256.
  2. Modifiez la valeur du paramètre responseType en token id_token (au lieu 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 afin d’utiliser RS256 au lieu de HS256 :
  1. Accédez à Auth0 Dashboard > Applications > Applications, puis sélectionnez le nom de l’application à afficher.
  2. Faites défiler la page jusqu’en bas, puis sélectionnez Show Advanced Settings dans la page Settings.
  3. Sélectionnez l’onglet OAuth, remplacez la valeur de JsonWebToken Signature Algorithm par RS256, puis sélectionnez Save Changes.
Si vous retenez cette option et que vous utilisez le jeton d’identité pour appeler vos API, veillez à modifier le code de votre serveur pour qu’il valide les jetons avec l’algorithme RS256 plutôt que HS256. Notez qu’il n’est pas recommandé d’utiliser des jetons d’identité pour appeler des API. Vous pouvez décoder, vérifier et générer des à l’aide de l’outil JWT Tool.