O que exatamente é OAuth (Autorização Aberta)?
O OAuth permite notificar um provedor de recursos (por exemplo, o Facebook) que o proprietário do recurso (por exemplo, você) concede permissão a terceiros (por exemplo, um Aplicativo do Facebook) para acessar suas informações (por exemplo, a lista de seus amigos).
Se você o ler claramente, eu entenderia sua confusão. Então, vamos dar um exemplo concreto: ingressar em outra rede social!
Digamos que você já tenha uma conta no GMail. Você decide se juntar ao LinkedIn. Adicionar todos os seus muitos e muitos amigos manualmente é cansativo e propenso a erros. Você pode ficar farto até a metade ou inserir erros de digitação no endereço de e-mail para convite. Portanto, você pode ficar tentado a não criar uma conta, afinal.
Diante dessa situação, o LinkedIn tem a Good Idea (TM) para escrever um programa que adiciona sua lista de amigos automaticamente, porque os computadores são muito mais eficientes e eficazes em tarefas cansativas e propensas a erros. Como ingressar na rede agora é tão fácil, não há como você recusar tal oferta, não é?
Sem uma API para trocar essa lista de contatos, você teria que fornecer ao LinkedIn o nome de usuário e a senha da sua conta do GMail, dando-lhes muito poder .
É aqui que entra o OAuth. Se o seu GMail suporta o protocolo OAuth, o LinkedIn pode solicitar que você os autorize a acessar sua lista de contatos do GMail.
OAuth permite:
- Diferentes níveis de acesso: leitura e gravação VS somente leitura. Isso permite conceder acesso à sua lista de usuários ou um acesso bidirecional para sincronizar automaticamente seus novos amigos do LinkedIn com seus contatos do GMail.
- Granularidade de acesso: você pode optar por conceder acesso apenas às suas informações de contato (nome de usuário, email, data de nascimento etc.) ou a toda a sua lista de amigos, calendário e outros.
- Ele permite gerenciar o acesso a partir do aplicativo do provedor de recursos. Se o aplicativo de terceiros não fornecer mecanismo para cancelar o acesso, você ficaria preso ao acesso a suas informações. Com o OAuth, existe a possibilidade de revogar o acesso a qualquer momento.
Será que isso se tornará de fato (padrão?) No futuro próximo?
Bem, embora o OAuth seja um avanço significativo, ele não resolve problemas se as pessoas não o usarem corretamente. Por exemplo, se um provedor de recursos fornecer apenas um nível de acesso de leitura / gravação a todos os seus recursos de uma só vez e não fornecer mecanismo para gerenciar o acesso, não há sentido em fazê-lo. Em outras palavras, o OAuth é uma estrutura para fornecer funcionalidade de autorização e não apenas autenticação.
Na prática, ele se encaixa muito bem no modelo de rede social. É especialmente popular para as redes sociais que desejam permitir "plugins" de terceiros. Essa é uma área em que o acesso aos recursos é inerentemente necessário e também não é confiável (por exemplo, você tem pouco ou nenhum controle de qualidade sobre esses aplicativos).
Eu não vi tantos outros usos na natureza. Quero dizer, não conheço uma empresa de consultoria financeira on-line que acessará seus registros bancários automaticamente, embora tecnicamente possa ser usada dessa maneira.
OAuth é simplesmente um protocolo de autorização seguro que lida com a autorização de aplicativos de terceiros para acessar os dados do usuário sem expor sua senha. por exemplo. (Entre com fb, gPlus, twitter em muitos sites ..) todos funcionam sob este protocolo.
O protocolo se torna mais fácil quando você conhece as partes envolvidas. Basicamente, existem três partes envolvidas: oAuth Provider, oAuth Client e Owner.
Supus um cenário em que um site (stackoverflow) precisa adicionar login com o recurso do facebook. Assim, o facebook é o provedor OAuth e o fluxo de empilhamento é o cliente Client.
Esta etapa é realizada pelo desenvolvedor do aplicativo . No início, o facebook (oAuth Provider) não tem idéia sobre o stackoverflow (oAuth Client) porque não há vínculo entre eles. Portanto, o primeiro passo é registrar o stackoverflow no site de desenvolvedores do facebook . Isso é feito manualmente, onde os desenvolvedores precisam fornecer informações do aplicativo para o Facebook, como nome, site, logotipo, URL de redirecionamento (importante). Em seguida, o stackoverflow é registrado com êxito, possui ID do cliente, segredo do cliente etc. do facebook e está em funcionamento com o OAUTH .
2. Agora, quando o usuário do stackoverflow clicar no login com o botão fb . O Stackoverflow solicita o facebook com ClientId (fb, use-o para reconhecer o cliente) e redirectUrl (fb retornará a esse URL após o sucesso). Assim, o usuário será redirecionado para a página de login do facebook. Essa é a melhor parte que o usuário (proprietário) não está dando à sua credencial do facebook para o stackoverflow.
Para mais:
Vídeo rápido
link da web
fonte
Simplificando, o OAuth é uma maneira de os aplicativos obterem credenciais para suas informações sem obter diretamente as informações de login do usuário em algum site. Por exemplo, se você escreve um aplicativo em seu próprio site e deseja que ele use dados da conta do facebook de um usuário, pode usar o OAuth para obter um token por meio de um URL de retorno de chamada e usá-lo para fazer chamadas para a API do facebook para obter seus use dados até que o token expire. Os sites contam com isso porque permite que os programadores acessem seus dados sem que o usuário precise divulgar diretamente suas informações e espalhar suas credenciais on-line, mas ainda fornecer um nível de proteção aos dados. Ele se tornará o método de autorização de fato? Talvez tenha ganhado muito apoio recentemente do Twitter, Facebook,
fonte
Oauth definitivamente está ganhando força e se popularizando também entre as APIs corporativas. No mundo dos aplicativos e dos dados, as empresas estão expondo APIs cada vez mais ao mundo exterior, de acordo com o Google, Facebook e Twitter. Com esse desenvolvimento, um triângulo de autenticação de três vias é formado
1) Fornecedor de API - Qualquer empresa que exponha seus ativos por API, como Amazon, Target etc. 2) Desenvolvedor - Aquele que cria aplicativos móveis / outros sobre essas APIs 3) O usuário final - O usuário final do serviço fornecido pelo - digamos usuários registrados / convidados da Amazon
Agora, isso desenvolve uma situação relacionada à segurança - (estou listando algumas dessas complexidades) 1) Você como usuário final deseja permitir que o desenvolvedor acesse APIs em seu nome. 2) O provedor da API precisa autenticar o desenvolvedor e o usuário final. 3) O usuário final deve poder conceder e revogar as permissões pelo consentimento que concedeu. 4) O desenvolvedor pode ter um nível variável de confiança com o provedor da API, em qual o nível de permissão dado a ela é diferente
O Oauth é uma estrutura de autorização que tenta resolver o problema acima mencionado de maneira padrão. Com a proeminência de APIs e aplicativos, esse problema se tornará cada vez mais relevante e qualquer padrão que tente resolvê-lo - seja sob juramento ou outro - será algo para se preocupar como fornecedor / desenvolvedor de API e até mesmo como usuário final!
fonte
OAuth ( S caneta Auth orization) é um padrão aberto de protocolo de acesso à concessão / deligation. Ele era usado para os usuários da Internet concederem sites ou aplicativos a acessar suas informações em outros sites, mas sem fornecer as senhas. Não lida com autenticação .
Ou
O OAuth 2.0 é um protocolo que permite ao usuário conceder acesso limitado aos seus recursos em um site, em outro site, sem precisar expor suas credenciais.
Analogia 1: Muitos carros de luxo hoje vêm com uma chave de manobrista. É uma chave especial que você fornece ao atendente de estacionamento e, diferentemente da chave normal, não permitirá que o carro dirija mais de uma milha ou duas. Algumas chaves de valet não abrirão o porta-malas, enquanto outras bloquearão o acesso ao seu catálogo de endereços de celular a bordo. Independentemente das restrições impostas pela chave do manobrista, a ideia é muito inteligente. Você concede a alguém acesso limitado ao seu carro com uma chave especial, enquanto usa a chave normal para desbloquear tudo. src de auth0
Analogia 2: suponha que queremos preencher um formulário de inscrição para uma conta bancária. Aqui o Oauth trabalha, pois, em vez de preencher o formulário pelo solicitante, o banco pode preencher o formulário usando Adhaar ou passaporte.
Aqui, as três entidades a seguir estão envolvidas:
fonte
OAuth tem tudo a ver com delegar autorização (escolher alguém que possa fazer autorização para você). Observe que autenticação e autorização são coisas diferentes. OAuth é autorização (controle de acesso) e, se você deseja implementar a autenticação (verificação de ID) também, o protocolo OpenID pode ser usado sobre o OAuth.
Todas as grandes empresas como Facebook, Google, Github, ... usam esse tipo de autenticação / autorização hoje em dia. Por exemplo, acabei de entrar neste site usando minha conta do Google. Isso significa que o Stackoverflow não sabe minha senha, recebe a permissão do Google onde minha senha (hash obviamente) é salva. Isso oferece muitos benefícios, um deles é; Num futuro próximo, você não precisará criar várias contas em todos os sites. Um site (no qual você confia mais) pode ser usado para fazer login em todos os outros sites. Portanto, você precisará apenas lembrar uma senha.
fonte
Fonte: provedores de serviços OAuth1
fonte
OAuth é um padrão aberto de autorização, comumente usado como uma maneira de os usuários da Internet acessarem sites de terceiros usando suas contas da Microsoft, Google, Facebook ou Twitter sem expor sua senha.
fonte
OAuth é um protocolo usado pelo Proprietário do Recurso (facebook, google, tweeter, microsoft live e assim por diante) para fornecer as informações necessárias ou fornecer uma permissão para o êxito da gravação no sistema de terceiros (seu site, por exemplo). Provavelmente, sem o protocolo OAuth, as credenciais devem estar disponíveis para os sistemas de terceiros, o que será um meio inadequado de comunicação entre esses sistemas.
fonte