Skip to main content

Análisis de un token de ID firmado con HS256 sin un token de acceso

Mensaje de error: El no puede validarse porque se firmó con el algoritmo HS256 y las aplicaciones públicas (como un navegador) no pueden almacenar secretos.

Causas

A partir de auth0.js versión 9 y Lock versión 11, cuando los ID Token están firmados con HS256, se descartan y se hace una llamada a /userinfo para obtener la información del usuario. Llamar a /userinfo requiere un . Si no solicitas un token de acceso al autenticarte, recibirás el siguiente error: 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.

Soluciones

Hay dos formas de corregir el error:
  1. (RECOMENDADO) Cambia el algoritmo de firma de la aplicación a RS256 en lugar de HS256.
  2. Cambia el valor del parámetro responseType a token id_token (en lugar del valor predeterminado) para recibir un token de acceso en la respuesta.
Para cambiar el algoritmo de firma de la aplicación a RS256 en lugar de HS256:
  1. Ve a Auth0 Dashboard > Applications > Applications y selecciona el nombre de la aplicación.
  2. Desplázate hasta la parte inferior de la página Settings y selecciona Show Advanced Settings.
  3. Selecciona la vista OAuth, cambia el valor de JsonWebToken Signature Algorithm a RS256 y selecciona Save Changes.
Si sigues esta opción y estás usando el token de ID para llamar a tus API, asegúrate de modificar el código del servidor para que valide los tokens con el algoritmo RS256 en lugar de HS256. Ten en cuenta que no se recomienda usar tokens de ID para llamar a las API. Puedes decodificar, verificar y generar con la herramienta JWT.