Ambas opciones se refieren a qué algoritmo utiliza el proveedor de identidad para firmar el JWT. La firma es una operación criptográfica que genera una "firma" (parte del JWT) que el destinatario del token puede validar para garantizar que el token no haya sido alterado.
RS256 (Firma RSA con SHA-256 ) es un algoritmo asimétrico , y utiliza un par de claves pública / privada: el proveedor de identidad tiene una clave privada (secreta) utilizada para generar la firma, y el consumidor del JWT obtiene una clave pública para validar la firma. Dado que la clave pública, a diferencia de la clave privada, no necesita mantenerse protegida, la mayoría de los proveedores de identidad hacen que sea fácil de obtener y usar para los consumidores (generalmente a través de una URL de metadatos).
HS256 ( HMAC con SHA-256), por otro lado, implica una combinación de una función de hashing y una clave (secreta) que se comparte entre las dos partes utilizadas para generar el hash que servirá como firma. Dado que la misma clave se usa tanto para generar la firma como para validarla, se debe tener cuidado para garantizar que la clave no se vea comprometida.
Si va a desarrollar la aplicación que consume los JWT, puede usar HS256 de forma segura, ya que tendrá control sobre quién usa las claves secretas. Si, por otro lado, no tiene control sobre el cliente, o no tiene forma de asegurar una clave secreta, RS256 será una mejor opción, ya que el consumidor solo necesita conocer la clave pública (compartida).
Dado que la clave pública generalmente está disponible desde puntos finales de metadatos, los clientes pueden programarse para recuperar la clave pública automáticamente. Si este es el caso (como sucede con las bibliotecas .Net Core), tendrá menos trabajo que hacer en la configuración (las bibliotecas buscarán la clave pública del servidor). Las claves simétricas, por otro lado, deben intercambiarse fuera de banda (asegurando un canal de comunicación seguro), y actualizarse manualmente si hay una renovación de clave de firma.
Auth0 proporciona puntos finales de metadatos para los protocolos OIDC, SAML y WS-Fed, donde se pueden recuperar las claves públicas. Puede ver esos puntos finales en la "Configuración avanzada" de un cliente.
El punto final de metadatos OIDC, por ejemplo, toma la forma de https://{account domain}/.well-known/openid-configuration
. Si navega a esa URL, verá un objeto JSON con una referencia a https://{account domain}/.well-known/jwks.json
, que contiene la clave pública (o claves) de la cuenta.
Si observa las muestras RS256, verá que no necesita configurar la clave pública en ningún lado: el marco la recupera automáticamente.