O que exatamente é OAuth (Autorização Aberta)?

201

O que exatamente é OAuth (Autorização Aberta)?

Eu colhi algumas informações de

Mas eu quero aprender e saber mais. Estou procurando informações sobre o ciclo de vida. Por que a maioria das redes sociais depende desse protocolo aberto?

Isso se tornará de fato no futuro próximo com as várias tecnologias (por exemplo, ASP.NET)?

bryanjclark
fonte

Respostas:

327

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:

  1. 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.
  2. 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.
  3. 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.

André Caron
fonte
6
Você facilitou o entendimento. Posso ter alterado a primeira linha para algo assim. "O Outh permite notificar um provedor de recursos (por exemplo, Gmail) que o proprietário do recurso (por exemplo, você é um usuário do Gmail) concede permissão a terceiros (por exemplo, sua conta do LinkedIn) para acessar suas informações (por exemplo, sua lista de contatos)." O que você escreveu, ou seja, o Fornecedor e o terceiro 'Facebook' é confuso. Apesar de apresentar um cenário interessante, o Oauth também pode ser usado internamente - entre diferentes projetos da sua empresa. Certo? Foi por isso que você introduziu uma introdução complicada?
Mel
Segundo meu entendimento, o objetivo do OAuth é conceder autorização por tempo limitado a um aplicativo de terceiros em nome do proprietário do recurso sem compartilhar credenciais. Estou curioso para saber se preciso do OAuth para consumir APIs hospedadas no meu servidor de aplicativos a partir de aplicativos móveis (sem terceiros envolvidos)?
Monish Kamble
Quando uma parte confiável me autoriza, isso não implica que também seja um mecanismo de autenticação?
variável
245

O que é oAuth?

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.

Partes envolvidas

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.

  • Cliente oAuth (aplicativo que deseja acessar sua credencial)
  • Fornecedor oAuth (por exemplo, facebook, twitter ...)
  • Proprietário (a pessoa com facebook, twitter .. conta)

Como funciona?

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.

  1. 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 . insira a descrição da imagem aqui

    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.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

  1. Após o Proprietário, permita ao Stackoverflow acessar as informações . Em seguida, o Facebook redireciona de volta ao stackoverflow, junto com o authcode, usando o redirectUrl fornecido na etapa 2.
  2. Em seguida, o Stackoverflow entra em contato com o Facebook, juntamente com o código de autenticação obtido, para garantir que tudo esteja bem.
  3. Somente então o facebook dará token de acesso ao stackoverflow. Em seguida, o token de acesso é usado pelo stackoverflow para recuperar as informações do proprietário sem usar a senha. Esse é todo o motivo do oAuth, onde credenciais acutais nunca são expostos a aplicativos de terceiros.

Para mais:

Vídeo rápido

link da web

Balman Rawat
fonte
Certifique-se de que localhost também é um URL e por que você não expira e publica o resultado aqui.
Balman Rawat
2
Você pode usar o endereço IP como URL de redirecionamento: redirect_uri = ' 127.0.0.1:4200 ' e o nome de domínio do OAuth deve ser 127.0.0.1
Samson Maben
Mas o email deve ser o mesmo no cliente oAuth e no provedor oAuth para que ele funcione?
Rowayda Khayri
Boa
OAuth 2 é um protocolo de segurança, não um protocolo de autorização. A resposta começa na nota errada.
Rajat
13

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,

ameer
fonte
14
OAuth não é um processo de autenticação, mas um processo de autorização.
André Caron
Não estou sugerindo que a aplicação precisa de autenticação diretamente, mas os autentica usuários com o provedor de serviços para autorizar uma terceira parte dos dados do usuário de acesso Eu acho ...
ameer
Eu adicionei a precisão porque o OpenID visa especificamente a autenticação delegada (reutilize uma conta externa existente) na esperança de que as pessoas parem de compartilhar suas credenciais de compartilhamento. OAuth visa especificamente a autorização (reutilização de recursos) na esperança de facilitar o intercâmbio de informações.
André Caron
9

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!

aleatoriedade
fonte
9

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:

    1. Requerente, ou seja, Proprietário
    2. A conta bancária é o cliente OAuth, eles precisam de informações
    3. O ID de Adhaar / passaporte é o provedor OAuth
Premraj
fonte
7

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.

Ozkan
fonte
2

OAuth aconteceu quando criamos uma conta SO com o botão Facebook / Google.

  1. Aplicativo (SO) que redireciona o usuário para o URL de autorização do provedor. (Exibindo uma página da web perguntando ao usuário se ele ou ela deseja conceder acesso ao aplicativo para ler e atualizar seus dados).
  2. O usuário concorda em conceder o processo de inscrição.
  3. O provedor de serviços redireciona o usuário de volta ao aplicativo (SO), passando o código de autorização como parâmetro.
  4. O SO troca o código por uma concessão de acesso.

Fonte: provedores de serviços OAuth1

John Joe
fonte
Olá, preciso trabalhar com a API REST para instalar o oAuth. Na verdade, estou usando o Magento. No localhost, instalei o oAuth, no servidor ao vivo, como posso instalar, estou usando o servidor GoDaddy VPS, ajuda? @john joe
Gem
@Rathinam oi, eu gostaria de ajudar, mas está fora do meu conhecimento. Sinto muito.
John Joe
É possível usar a API REST sem oAuth? @John Joe
Gem
@Rathinam sim, depende de você
John Joe
1

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.

Yuvraj Singh Shekhawat
fonte
2
Eu acho que você confundiu OAuth e OpenID #
A23149577
0

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