.NET

1 jun, 2018

ASP .NET Web API – Implementando a segurança via Tokens – Parte 04

Publicidade

Continuando o artigo anterior, vamos agora testar a nossa implementação da segurança em uma Web API usando Tokens.

Na figura abaixo, vemos o esquema de funcionamento bem resumido do fluxo das informações:

Explicando:

Primeiro, temos que autenticar o usuário usando suas credencias e obter o token. Fazemos isso enviando um POST para o servidor usando a URI:

  • http://servidor:XXX/token

A seguir, para cada requisição feita temos que enviar junto o token obtido para poder acessar a Web API. Fazemos isso enviando a requisição usando a URI.

  • http://servidor:XXX/api/usuarios

Acessando a Web API

A primeira coisa que vamos fazer é verificar se a nossa Web API esta funcionando. Para isso, vamos executar o projeto e tentaremos acessar os recursos da nossa Web API usando o Postman.

Neste momento, nossa Web API ainda não está protegida e deve permitir o acesso total à todos os serviços.

Nota: Para instalar o Postman, acesse este link: https://www.getpostman.com/apps ou abra o Google Chrome, digite postman e clique no link: Postman – Chrome Web Store

1- GET – http://localhost:2480/api/funcionarios

2- GET – http://localhost:2480/api/funcionarios/3

3- POST – http://localhost:2480/api/funcionarios

4- PUT – http://localhost:2480/api/funcionarios/1010

5- DELETE – http://localhost:2480/api/funcionarios/1010

Vemos pelo resultado, que nossa Web API está totalmente funcional. mas não esta protegida, e assim, qualquer um pode enviar requisições, acessar e realizar as operações usando a Web API.

Protegendo a Web API

Vamos agora proteger a nossa Web API de forma que somente usuários que possuam o token de acesso possam acessar nossa Web API.

Fazer isso é bem simples; basta incluir no controlador FuncionariosController o atributo [Authorize] conforme mostrado a seguir:

Agora vamos executar o projeto e tentar enviar uma requisição para acessar a Web API.

Tentaremos obter a lista de funcionários enviando um GET: http://localhost:2840/api/funcionarios.

Veja que a reposta obtida, foi: 401 Unauthorized, ou seja, usuários anônimos não têm mais acesso à Web API. Qualquer outra requisição irá obter o mesmo resultado.

Obtendo um token de acesso

Como podemos acessar a nossa Web API?

Simples; vamos usar a implementação feita no artigo anterior e obter um token de acesso usando a classe FuncionariosSeguranca que autentica as credenciais do usuário.

Para isso, temos que enviar uma requisição posta para URI: http://localhost:2480/token e informar as credenciais do usuário e o tipo de acesso no corpo do request.

Precisamos passar três informações no Body:

  • username: nome do usuário
  • password: senha do usuário
  • grant_type: tipo de acesso

Veja no Postman como fica o request:

Repare que no response temos o token de acesso gerado, o tipo do token e a data de expiração do token. Agora podemos usar o token gerado para poder acessar a nossa Web API enviando esse token em uma requisição.

Vamos tentar acessar novamente nossa Web API, agora usando o token:

A requisição deve informar o verbo HTTP GET e a url: http://localhost:2480/api/funcionarios e no Header, informar:

Authorization bearer

l9RoaczivJ4tYhxU2WGBDLVQvXoO3JNXxBgokEeU9ZxqXM3sAo77zleKhNTrfQXjhRowulSsxotvznQke0BaBt0MrwFbLuKowiPMTN8wfxT2xSeYkucqXqCBGMvUXfnjeudxOSym00EsqoFQ9DegxwcKoYqPLpxBjUaIbaVW5zAEPYjlsivlM_PvvYEdKN4kd1ij5BY-ZV5Im3JI6nMFR2HMBa_raM7jDC4ks9SZFs

Veja o resultado abaixo:

Vemos que agora, após enviar o token gerado com a requisição, o usuário para quem o token foi gerado já pode acessar a nossa web api.

Concluindo

Criamos uma WEB API, implementamos a segurança via Token e acessamos a Web API usando o token.

Pegue o projeto completo no link abaixo: