Ambas as opções se referem a qual algoritmo o provedor de identidade usa para assinar o JWT. A assinatura é uma operação criptográfica que gera uma "assinatura" (parte da JWT) que o destinatário do token pode validar para garantir que o token não tenha sido violado.
O RS256 (RSA Signature with SHA-256 ) é um algoritmo assimétrico e usa um par de chaves pública / privada: o provedor de identidade possui uma chave privada (secreta) usada para gerar a assinatura e o consumidor da JWT recebe uma chave pública para validar a assinatura. Como a chave pública, ao contrário da chave privada, não precisa ser mantida em segurança, a maioria dos provedores de identidade facilita a obtenção e o uso pelos consumidores de identidades (geralmente por meio de um URL de metadados).
O HS256 ( HMAC com SHA-256), por outro lado, envolve uma combinação de uma função de hash e uma chave (secreta) compartilhada entre as duas partes usadas para gerar o hash que servirá como assinatura. Como a mesma chave é usada para gerar a assinatura e validá-la, é necessário ter cuidado para garantir que a chave não seja comprometida.
Se você estiver desenvolvendo o aplicativo que consome as JWTs, poderá usar o HS256 com segurança, pois terá controle sobre quem usa as chaves secretas. Se, por outro lado, você não tiver controle sobre o cliente ou não tiver como garantir uma chave secreta, o RS256 será mais adequado, pois o consumidor precisa conhecer apenas a chave pública (compartilhada).
Como a chave pública geralmente é disponibilizada nos pontos de extremidade de metadados, os clientes podem ser programados para recuperar a chave pública automaticamente. Se for esse o caso (como acontece com as bibliotecas do .Net Core), você terá menos trabalho a fazer na configuração (as bibliotecas buscarão a chave pública do servidor). As chaves simétricas, por outro lado, precisam ser trocadas fora da banda (garantindo um canal de comunicação seguro) e atualizadas manualmente se houver uma substituição da chave de assinatura.
O Auth0 fornece pontos de extremidade de metadados para os protocolos OIDC, SAML e WS-Fed, onde as chaves públicas podem ser recuperadas. Você pode ver esses pontos de extremidade nas "Configurações avançadas" de um cliente.
O ponto de extremidade de metadados OIDC, por exemplo, assume a forma de https://{account domain}/.well-known/openid-configuration
. Se você navegar para esse URL, verá um objeto JSON com uma referência a https://{account domain}/.well-known/jwks.json
, que contém a chave pública (ou chaves) da conta.
Se você observar as amostras do RS256, verá que não precisa configurar a chave pública em nenhum lugar: ela é recuperada automaticamente pela estrutura.