A terminologia do OAuth já me incomoda há muito tempo. É a autorização OAuth como alguns sugerem ou é autenticação?
Corrija-me se estiver errado, mas sempre li a Autorização como o ato de permitir que alguém acesse um recurso, embora o OAuth não pareça ter nenhuma implementação que realmente permita o acesso de usuários a um determinado recurso. Todas as implementações OAuth falam sobre fornecer a um usuário um token (assinado e às vezes criptografado). Esse token é então passado com cada chamada para um terminal de serviço de back-end onde é verificado quanto à validade, novamente não é uma preocupação do OAuth.
É a autenticação OAuth (todo artigo diz que não é) que, suponho, exige que um usuário forneça credenciais que, por sua vez, prova que um usuário deve / não deve ter acesso?
Portanto, parece que OAuth não é Autenticação de Autorização NOR, uma vez que estes devem ser executados por outros processos. Então, o que diabos é isso? É um processo para comunicar um token? É uma palavra fofa que realmente não tem um significado específico?
É difícil fazer uma pergunta sobre esse assunto sem soar enigmático e supersticioso (fantasmas e goblins), então espero que responder a essa pergunta também não seja uma coisa simples. Entre por seu próprio risco.
Respostas:
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:
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
fonte