Autenticação JWT em APIs — ASP.NET Core 2.1

Renicius Pagotto Fostaini
3 min readAug 7, 2018

--

Implementar a parte de segurança da nossa aplicação é um dever, afinal, não queremos que qualquer pessoa possa acessá-la e fazer o que bem quiser, gerando problemas como roubo de informações confidenciais.

O JWT é uma das práticas mais adotadas para segurança de APIs. Essa técnica utiliza tokens que liberam acesso a determinada API, e para tudo isso funcionar, precisamos de um gerador e um autenticador de token.

Na utilização de uma API, os seguintes passos são necessários:

  • Obter um token através do login;
  • Guardar o token recebido;
  • Para cada requisição, se faz necessário passar o token.

Vamos para a implementação.

No arquivo “appsettings.json”, adicione o código:

Na instrução acima eu criei 3 parâmetros:

  • Issuer: Representa quem está emitindo o token;
  • Audience: Para quem se destina o token;
  • SecretKey: Servirá para codificar e decodificar o token.

Feito isso, vamos agora criar nosso gerador de token da aplicação. Para isso, crie uma controller “LoginController” e implemente o seguinte código:

Note que estou utilizando dois Claims:

  • Jti: É o identificador do token. Deve ser único para cada token gerado.
  • userId: É um identificador do usuário que se autenticou na aplicação, nesse caso, eu passo o Id do usuário.

Finalizamos nosso gerador de token; agora é necessário implementar nosso middleware de autenticação, ou seja, o autenticador de token. Vá até a “Startup.cs” e no método “ConfigureServices”, adicione o trecho abaixo:

Perceba que no dentro do services.AddMvc(), foi adicionado um filtro novo AuthorizeFilter, que é responsável por barrar toda e qualquer requisição que não esteja autorizada em nossa API.

Vale ressaltar também, que todas as informações de Issuer, Audience e SecretKey, utilizadas pelo login, também devem ser utilizadas aqui, pois o middleware de autenticação usa essas informações para validar o token passado.

E por fim, para que toda essa configuração seja utilizada, na classe “Startup.cs”, no método “Configure”, adicione o seguinte trecho:

Finalizamos nossa autenticação, agora nossa aplicação somente poderá ser acessada por quem realmente é autorizado.

Para realizar os testes, vamos criar um novo método em nossa própria controller “LoginController”

Vou utilizar o postman, porém você pode utilizar outro a sua escolha.

Realizando uma requisição GET na URL: http://localhost:64166/api/login, percebemos que imediatamente é retornado um “http status 401-unauthorized”, pois você não tem permissão para acessar.

Precisamos nos autenticar para obter o token de acesso e para isso, realizamos uma requisição para a URL: http://localhost:64166/api/login, passando username e password no corpo da requisição.

Com o token disponível, vamos novamente realizar uma requisição passando o token no Header para acessar qualquer recurso:

Código disponível em https://github.com/reniciuspagotto/jtw-auth-sample

Até mais!!!

--

--

Renicius Pagotto Fostaini
Renicius Pagotto Fostaini

Written by Renicius Pagotto Fostaini

Solutions Architect | Speaker | Community Manager

Responses (1)