ASP .NET Web API -  Implementando a Segurança via Tokens - IV


  Neste artigo vou mostrar como podemos implementar a segurança na Web API ASP .NET  usando Tokens.

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:

  1. 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
  2. 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 vamos tentar acessar os recursos da nossa Web API usando o Postman.

Neste momento nossa Web API ainda não esta protegida e deve permitir o acesso total a todos os serviços.

Nota: Para instalar o Postman acesse esse link : https://www.getpostman.com/apps ou abra o Google Chrome e digite postam e a seguir 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 esta totalmente funcional mas não esta protegia e assim qualquer pode enviar requisições e 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 acessare a Web API.

Vamos tentar 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 tem mais acesso a 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 :

Veja no Postman como fica o request :

Veja 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 uri :  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...

Pegue o projeto completo aqui : FuncionariosAPIService_Token.zip (sem as referências)

"Jesus disse-lhes: A minha comida é fazer a vontade daquele que me enviou, e realizar a sua obra."
João 4:34

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti