:::: MENU ::::

Usando o OAuth para proteger sua API

Neste post vou falar de como podemos usar o OAuth para adicionar segurança a nossa API e de uma forma simples.

O exemplo a seguir é mais focado para API’s que não precisam pegar autorização do usuario para dados e etc.

O que  OAuth?

OAuth é um protocolo padrão livre de autorização. Designado para trabalhar com requisições de protocolo HTTP o OAuth funciona como um um centro de informação possuindo as credenciais do cliente e as informações do recurso requisitado.

Como isso funciona?

O funcionamento basicamente se divide em dois atores o cliente e o recurso.

Quem  é o cliente?

O cliente é o ator que irá fazer a requisição para determinado recurso de nossa API, por exemplo, o nosso recurso de produtos que fica em http://example.com/products digamos que minha requisição é do tipo GET, ou seja eu quero uma lista de produtos.

Mas antes de fazer essa requisição o nosso cliente vai precisar de uma autorização, então de alguma maneira, seja em um painel administrativo ou outra forma é preciso gerar uma credencial para esse cliente, uma credencial única que ele usara para se autenticar em nosso servidor do OAuth.

O cliente com sua credencial chamado de access_token, que normalmente  é um hash md5 agora ja consegue gerar um token de autorização para conseguir acessar o recurso.

O cliente com sua credencial faz uma requisição para o servidor de autorização no caso o servidor do OAuth e se estiver ativo e correto o servidor de autorização devolvera para ele um token de autorização, normalmente com um prazo de expiração. O prazo de expiração serve para que se em algum momento for preciso desativar um certo cliente, ele não conseguira mais gerar um novo token de autorização e ira parar de usar a nossa API.

Quem é o recurso e como é acessado?

O recurso é o destino que o cliente deseja acessar na nossa API, em nosso caso de exemplo o nosso recurso é o produtos que fica em http://example.com/products , agora o cliente que ja esta com seu token de autorização em mãos vai fazer uma requisição para a URL do recurso informando esse token de autorização que normalmente vem em um header da requisição HTTP em um formato como este Authorization: Bearer e9d1b97bfd3e30a46684ff9737bf36e8cd5d65b4.

Como o servidor de recursos sabe que o cliente tem autorização?

Agora o provedor do recurso ou seja o servidor, precisa saber se o cliente tem ou não autorização para acessar o recurso que ele esta requisitando, para isto o servidor precisa consultar o servidor de autorização, o servidor do OAuth no caso, e verificar se o token temporário é valido e tem autorização para acessar o recurso que ele precisa.

Caso ele tenha autorização o servidor ira processar a requisição normalmente e dar a resposta para o cliente. Caso não, cabe a o servidor informar o cliente que seu token de autorização tem problema e ele precisa gerar um novo para poder acessar o recurso.

Esta na verdade é uma breve introdução para que seja possivel entender como funciona o fluxo.

Referencias:

Http headers: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

OAuth2: http://oauth.net/2/

Restful: http://www.restapitutorial.com/