Autorizacao OAuth 2.0
OAuth 2.0 e um framework de autorizacao que se tornou o padrao de facto para autorizar o acesso a recursos protegidos. Permite que aplicacoes de terceiros obtenham acesso a dados de utilizadores sem expor as credenciais do utilizador. Em vez de partilhar passwords, os servicos fornecem tokens.
Contexto
Imagine que pretende usar uma aplicacao de terceiros que precisa de aceder a dados da sua conta Google. Nao iria querer fornecer a esta aplicacao o seu nome de utilizador e password do Google, certo? E aqui que o OAuth entra. Permite conceder a esta aplicacao acesso aos seus dados do Google sem partilhar as suas credenciais Google.
Basicos do OAuth 2.0
O OAuth 2.0 foca-se na simplicidade para o programador cliente enquanto fornece fluxos de autorizacao especificos para aplicacoes web, aplicacoes desktop, telemoveis e dispositivos de sala de estar. Aqui esta uma decomposicao simplificada:
Resource Owner: O utilizador que autoriza uma aplicacao a aceder a sua conta. O acesso da aplicacao a conta do utilizador e limitado ao "scope" da autorizacao concedida (por exemplo, ler ou escrever um tipo especifico de dados).
Client: A aplicacao que pretende aceder a conta do utilizador. Antes de o poder fazer, deve ser autorizada pelo utilizador e a autorizacao deve ser validada pela API.
Resource Server: O servidor que aloja as contas de utilizador. Pode aceitar e responder a pedidos de recursos protegidos usando tokens de acesso.
Authorization Server: Este servidor verifica a identidade do utilizador e depois emite tokens de acesso para a aplicacao.
Fluxos OAuth 2.0
Existem varios "fluxos" ou "grant types" para diferentes tipos de aplicacoes e casos de uso:
Authorization Code (para aplicacoes a correr num servidor web): Este e o fluxo mais comum, especialmente para aplicacoes web. Envolve redirecionar o utilizador para o servico, onde faz login. Apos o login, e redirecionado de volta para a aplicacao com um codigo de autorizacao, que a aplicacao pode trocar por um token de acesso.
Implicit (para aplicacoes a correr num navegador): Este fluxo e para aplicacoes baseadas em user-agent (por exemplo, aplicacoes de pagina unica) onde o token de acesso e retornado imediatamente sem um passo extra de troca de codigo de autorizacao.
Resource Owner Password Credentials: Este fluxo permite que a aplicacao forneca diretamente o nome de utilizador e password do utilizador. So e recomendado para aplicacoes confiaveis, pois envolve a partilha das credenciais do utilizador.
Client Credentials: Usado quando o proprio cliente e o proprietario do recurso; por exemplo, quando o cliente e um servico em segundo plano.
Tokens
Em vez de usar as credenciais do utilizador, o OAuth 2.0 usa tokens. Existem dois tipos:
Access Token: Permite que a aplicacao faca pedidos API em nome do utilizador. Tem curta duracao.
Refresh Token: Pode ser usado para obter um novo token de acesso se o token de acesso original expirou. Tem duracao mais longa que um token de acesso.
Seguranca
O OAuth 2.0 depende de SSL/TLS para seguranca. Garante a confidencialidade dos dados entre o cliente, servidor de autorizacao e servidor de recursos. Mesmo que atacantes consigam interceptar um token de acesso, nao o podem usar para alem da sua expiracao (tipicamente uma curta duracao) ou fora do scope para o qual foi emitido.
Conclusao
O OAuth 2.0 e um framework poderoso e flexivel que permite que aplicacoes de terceiros acedam a dados de utilizadores sem expor as credenciais do utilizador. Tornou-se uma ferramenta essencial na web moderna, fornecendo a utilizadores e programadores um meio seguro e eficiente de conceder e gerir permissoes em varios servicos e aplicacoes.