É seguro para expor refreshtoken API

0

Pergunta

Eu tenho uma aplicação desenvolvida utilizando Reagir no front-end e ASP.Net API da Web backend. Eu estou usando JWT para autorização. O processo é

  1. Quando um usuário efetua logon e é autenticado, 2 tokens são enviados para o front-end, o token de acesso e de atualização do token. Um token de acesso é a JWT e atualiza um token é uma seqüência aleatória e uma atualização token é armazenado em um banco de dados.
  2. Para cada chamada subseqüente para APIs token de acesso é conectado no cabeçalho, eu tenho um filtro de autenticação valida o token de acesso.
  3. Uma vez que o token de acesso é expirou, um status 401 é lançada com a mensagem de erro TokenExpired.
  4. Uma vez que o front-end recebe 401, ele chama a atualização de token de API para obter o token de atualização

A pergunta que eu tenho é que eu não posso ter um filtro de autenticação para validar o token de acesso de atualizar tokens API como ele vai jogar 401 devido à expirado token de acesso, então eu preciso para fazer a atualização de token de API de ser anônimo para não bater o filtro de autenticação. Se eu fizer anônimo eu estou fazendo uma chamada para o banco de dados para obter a atualização de token armazenados para o usuário e compará-lo com o que eu recebi do front-end. Portanto, é seguro fazer a atualização token API anônimo, se não qual é a melhor maneira?

asp.net-web-api c# jwt
2021-11-24 05:13:45
2
0

Em Auth0, Criou um conjunto de características que mitiguem os riscos associados com o uso de atualizar tokens através da imposição de salvaguardas e controles em seu ciclo de vida. A nossa identidade plataforma oferece atualização de rotação de token, o que também vem com sistema automático de reutilização de detecção.

Por favor, leia o seguinte tópico.

Atualização De Rotação De Token

Atualização Token Automático De Detecção De Reutilização

2021-11-24 05:56:21

Estamos fazendo uma espécie de atualização de rotação de token. Quando um novo token de acesso é solicitado nós validar com a atualização e o token de fornecer um novo token de acesso e uma nova atualização de token e a atualização de token é atualizado no banco de dados. No entanto, eu não acho que nós podemos armazenar a lista de todos atualizar os tokens gerados até o momento, conforme mencionado na automático de detecção de reutilização
Raghul Raman
0

A JWT é assinado usando a chave secreta pré-compartilhada. Desde a sua API REST no backend e sem monitoração de estado, a jwt é usado para autorização e construção de objecto principal

Como você diz, o token de acesso representam a autorização de sua aplicação, se a atualização token é exposto, em seguida, actualizar o token pode ser apresentado por um mau ator para obter um token de acesso que eles podem usar para a mesma autorização.

Usando um 'secreta pré-compartilhada' indica a JWT é um HMAC única variante da JWT, i.e. não há criptografia como a que indicaria privada e a chave pública do par de oposição a um 'secreta pré-compartilhada'. Assim, a JWT é essencialmente uma assinatura para a cumulação de características de segurança estamos garantindo a integridade de que as reivindicações da JWT são bem formados e não foram alteradas desde que assinado. Ele também significa o mesmo segredo utilizado para assinatura em uma extremidade, como foi usado para verificar na outra ponta, o mesmo segredo tem de ser usado porque a verificar uma assinatura requer que ambas as extremidades gerar a assinatura e a assinatura de correspondência. Assim não há dados é criptografado, portanto, não dados a JWT é sensível e precisa ser protegido.

Dado este contexto, tanto a atualização e o token de acesso são um simples JWT, que podem ser gerados somente pelo titular do segredo, se eles são expostos que pode ser usada para fazer pedidos mal intencionados enquanto permanecerem válidos (nbf reivindicamos).

Essencialmente, este tipo de JWT podem ser mal utilizadas se forem expostos a representar a identidade secreta que assinaram a JWT representa, sem realmente saber o segredo em si, até o nbf alegação de expirar o token - e uma atualização token é o mecanismo para estender o nbf reclamar sem ter o segredo (o que resultaria em uma nova assinatura, porque o nbf alegação de alteração, quando usado).

Há uma proteção de token de acesso de reutilização, é o nonce reclamação. Se você não usar um nonce reivindicação que você pode ler sobre como OIDC implementado e fazer ele mesmo em seu aplicativo. Mas, como você diz, o aplicativo é stateless, mas espero que o back-end tem uma forma de estado para garantir que nenhum nonce reutilização e evitar JWT assinatura de reutilização. Para cada nonce a JWT alterações de assinatura, portanto, o token de acesso de alterações e pode ser usado somente 1 vez. Então, se roubado é uma condição de corrida que usa o token de primeira, o que muito minimiza o risco, mas não é uma solução perfeita.

2021-11-24 09:11:17

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................