Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Autenticação de JWS

Olá,

Gostaria de saber como funciona essa autenticação do JWS por baixo dos panos em deatlhes.

Agradeço desde já, Matheus Naback.

2 respostas
solução!

OAuth 2.0 é quem define um protocolo, ou seja, especifica como os tokens são transferidos, o JWT define apenas um formato de token. Mas "autenticação JWT" não é um padrão e não especifica como o Cliente obtém o token em primeiro lugar (o primeiro estágio). É daí que vem a complexidade percebida do OAuth: ele também define várias maneiras pelas quais o Cliente pode obter um token de acesso de algo chamado Servidor de Autorização. Portanto, a diferença real é que o JWT é apenas um formato de token, e o OAuth 2.0 é um protocolo (que pode usar um JWT como um formato de token).

O fluxo é basicamente:

  • Os clientes efetuam login enviando suas credenciais ao provedor de identidade.
  • O provedor de identidade verifica as credenciais; se tudo estiver OK, ele recupera os dados do usuário, gera um JWT contendo detalhes do usuário e permissões que serão usadas para acessar os serviços e também define a expiração no JWT (que pode ser ilimitada).
  • O provedor de identidade assina e, se necessário, criptografa o JWT e o envia ao cliente como uma resposta à solicitação inicial com credenciais.
  • O cliente armazena o JWT por um período de tempo limitado ou ilimitado, dependendo da expiração definida pelo provedor de identidade.
  • O cliente envia o JWT armazenado em um cabeçalho de autorização para cada solicitação ao provedor de serviços.
  • Para cada solicitação, o provedor de serviços pega o JWT do cabeçalho Authorization e o descriptografa, se necessário, valida a assinatura e, se tudo estiver OK, extrai os dados e as permissões do usuário. Com base apenas nesses dados, e novamente sem procurar mais detalhes no banco de dados ou entrar em contato com o provedor de identidade, ele pode aceitar ou negar a solicitação do cliente. O único requisito é que a identidade e os provedores de serviço tenham um acordo sobre criptografia para que o serviço possa verificar a assinatura ou até mesmo descriptografar qual identidade foi criptografada.

Obrigado pela resposta, Otávio!