OAuth é uma especificação para autorização
OAuth 2.0 é uma especificação para autorização, mas NÃO para autenticação. RFC 6749, 3.1. O Endpoint de autorização diz explicitamente o seguinte:
O terminal de autorização é usado para interagir com o proprietário do recurso e obter uma concessão de autorização. O servidor de autorização DEVE primeiro verificar a identidade do proprietário do recurso. A maneira como o servidor de autorização autentica o proprietário do recurso (por exemplo, nome de usuário e login de senha, cookies de sessão) está além do escopo desta especificação .
Autenticação OAuth?
A autenticação trata de informações sobre "quem é". A autorização trata das informações sobre "quem concede quais permissões a quem". O fluxo de autorização contém autenticação como sua primeira etapa. É por isso que as pessoas costumam ficar confusas.
Existem muitas bibliotecas e serviços que usam OAuth 2.0 para autenticação. Geralmente é chamado de "login social" e torna as pessoas mais confusas. Se você vir "Autenticação OAuth" (não "Autorização OAuth"), é uma solução que usa OAuth para autenticação.
OpenID Connect
OpenID 1.0 e OpenID 2.0 são especificações antigas para autenticação. Aqueles que fizeram as especificações esperavam que as pessoas usassem OpenID para autenticação. No entanto, algumas pessoas começaram a usar OAuth 2.0 para autenticação (não para autorização) e a autenticação OAuth prevaleceu rapidamente.
Do ponto de vista dos caras do OpenID, a autenticação baseada em OAuth não era segura o suficiente, mas eles tinham que admitir que as pessoas preferiam a autenticação OAuth. Como resultado, os caras do OpenID decidiram definir uma nova especificação, OpenID Connect , em cima do OAuth 2.0.
Sim, isso deixou as pessoas muito mais confusas.
Definições de uma frase de OAuth 2.0 e OpenID Connect
OAuth 2.0 é uma estrutura onde um usuário de um serviço pode permitir que um aplicativo de terceiros acesse seus dados hospedados no serviço sem revelar suas credenciais (ID e senha) para o aplicativo.
OpenID Connect é uma estrutura no topo do OAuth 2.0 onde um aplicativo de terceiros pode obter informações de identidade de um usuário que são gerenciadas por um serviço.
(Desculpe, essas definições são trechos da página de visão geral da minha empresa)
Definições do ponto de vista dos implementadores
A autenticação é um processo para determinar o assunto (= identificador exclusivo) de um usuário final. Existem muitas maneiras de determinar o assunto. ID e senha, impressões digitais, reconhecimento de íris, etc.
Autorização é um processo para associar o assunto às permissões solicitadas e ao aplicativo cliente que solicitou as permissões. Um token de acesso representa a associação.
Veja também
- Implementador Full-Scratch de OAuth e OpenID Connect Palestras sobre descobertas
- Diagramas e filmes de todos os fluxos OAuth 2.0
- Diagramas de todos os fluxos do OpenID Connect
- O guia mais simples para OAuth 2.0