# OAuth

OAuth (Open-Authorization) é um padrão aberto de delegação de autorização/autenticação, comumente utilizado para permitir que os usuários da Internet possam fazer login em sites de terceiros usando contas de um provedor de identidade, como Google, Facebook, Microsoft, Twitter (prinicpalmente sites de rede social e e-mail), etc.—mas, sem expor credenciais de autenticação, como senhas. Geralmente, o OAuth fornece aos clientes um "acesso seguro delegado" aos recursos do servidor em nome do proprietário do recurso. Ele especifica um processo para proprietários de recursos para autorizar o acesso de terceiros aos seus recursos de servidor sem compartilhar suas credenciais. Projetado especificamente para trabalhar com o HTTP, o OAuth permite essencialmente tokens de acesso a ser emitidos para clientes de terceiros, mediante autorização do servidor, com a aprovação do proprietário do recurso. O terceiro, em seguida, usa o token de acesso para recursos protegidos hospedados pelo servidor.
O OAuth é um serviço complementar e diferente do OpenID e, também do OATH que é uma arquitetura de referência para autenticação, e não uma norma para autorização. No entanto, o OAuth está diretamente relacionada com o OpenID Connect (OIDC) pois OIDC é uma camada de autenticação construída em cima do OAuth 2.0. OAuth é também distinto do XACML, que é a política de autorização padrão. OAuth pode ser usado em conjunto com XACML onde OAuth é utilizado para a transferência de propriedade de consentimento e de acesso delegação considerando que XACML é usado para definir as diretivas de autorização (por exemplo, os gestores podem visualizar os documentos em sua região).

## Versão 2.0

O OAuth 2.0 não é compatível com o OAuth 1.0 pois a versão 2.0 fornece fluxos de autorização específicos para aplicações web, aplicações desktop, celulares e dispositivos de sala de estar. A especificação e RFCs associados são desenvolvidos pelo IETF OAuth WG; o principal framework foi publicado em outubro de 2012.
A Graph API do Facebook suporta apenas OAuth 2.0. O Google oferece suporte a esta versão como o mecanismo de autenticação recomendado para todas as suas API. A partir de 2011, a Microsoft também adicionou experimentalmente o suporte à versão 2.0 nas API.
O OAuth 2.0 Framework e o Bearer Token foram publicados em outubro de 2012.

## História

Começa em Novembro de 2006, quando Blaine Cook trabalhava na implementação de segurança para o Twitter. Juntamente com outros desenvolvedores, Cook percebeu que não havia um padrão aberto para a delegação de acesso à APIs. Um grupo de discussão foi criado para o planejamento de um protocolo aberto. Recebeu interesse do Google.
Em 4 de Dezembro de 2007, OAuth 1.0 foi lançado [RFC 5849].
Em Outubro de 2012, OAuth 2.0 foi publicado [RFC 6749].

## Funcionamento

● Dono do Recurso (Resource Owner): uma entidade capaz de conceder acesso à um recurso protegido (pode ser o usuário final).
● Servidor do Recurso (Resource Server): o servidor que hospeda os recursos protegidos. O acesso a ele é feito através de tokens.
● Cliente (Client): uma aplicação requisitando recursos protegidos, através da autorização do dono.
● Servidor de Autorização (Authorization Server): servidor que emite tokens de acesso ao cliente, depois de sua autenticação e obtenção de autorização.