Usando o JWT para implementar a autenticação na API da web do Asp.net

Eu tenho lido sobre JWT.

Mas, pelo que li, não é um mecanismo de autenticação, mas sim um componente crucial em um mecanismo de autenticação.

No momento, implementei uma solução que funciona, mas era apenas para experimentar o JWT e ver como ele funciona. Mas o que eu estou procurando agora é como alguém deve usá-lo. Pela minha experiência, é basicamente apenas um mecanismo de criptografia que fornece uma chave criptografada exclusiva. Você também pode colocar informações dentro desse token.

Eu estou querendo implementá-lo em termos de uma API do ASP.NET 2 para ser consumido por um aplicativo móvel.

Então, passo 1:

app => Servidor: Login (usuário, senha)Servidor => aplicativo: Login OK, aqui está o seu JWTapp => server: Obter meu perfil (envia JWT com solicitação) O servidor descriptografa a JWT e determina a identidade das solicitações.

Agora, esse é apenas o meu entendimento. Olha, eu poderia estar no caminho totalmente errado.

O ideal da JWT é que você não precise se autenticar em todas as solicitações? Acabei de autenticar as credenciais dos usuários uma vez (no logon inicial) e depois o servidor pode simplesmente usar o JWT e não ter que procurar os usuários pw e user no DB?

Eu só quero usar o JWT para identificar quem é o usuário. Autorizarei então depois de autenticá-los. Como eu sei, há uma grande confusão com o novo MVC e a autenticação e autorização.

Então, qual é a minha pergunta.

Como posso implementar com segurança e eficácia um mecanismo de autenticação usando o JWT? Não quero cegar algo que pareça funcionar e que não tenha nenhuma idéia das implicações de segurança. Estou certo de que existe uma fonte em alguma parte que possivelmente tenha projetado um mecanismo seguro que atenda aos meus requisitos.

Meus requisitos são:

Só precisa verificar as credenciais do usuário no banco de dados uma vez por sessão? Devido ao uso de bcrypt, usando muitos recursos para comparar senhas.Deve ser capaz de identificar o usuário a partir de sua solicitação. (Por exemplo, quem são, userId será suficiente) e, de preferência, sem acessar o banco de dados tambémDeve ter a menor sobrecarga possível, com relação aos recursos no servidor que processam a solicitação.Se um invasor tiver que copiar uma solicitação anterior de um dispositivo, ele não poderá acessar os dados reais do usuário. (obviamente)

obrigado

questionAnswers(2)

yourAnswerToTheQuestion