Pergunta

Eu acabei de (re)leitura de Rob Conery de 2010, post de blog OpenID é um Pesadelo como parte de algumas pesquisas em OpenID/OpenAuth.Idealmente, eu estou olhando para utilizar vários OAuth provedores ligados a uma única conta, para fornecer resistência contra os provedores de ser indisponível - inicie a sessão com o Facebook, o link do seu Twitter e contas do Google, e se da próxima vez que você visitar o Facebook login não está funcionando, não importa, você pode usar o Twitter OU o Google para obter e acessar as suas coisas - assim como, no mundo real, você pode abrir uma conta bancária com um passaporte, e retirar o dinheiro mais tarde usando a sua licença de condução, se seu passaporte não estiver disponível.

Uma das Rob principais preocupações em seu artigo é a de que não há nenhuma maneira consistente para identificar um usuário que está usando o OpenID - alguém pode fazer login com o Google um dia, comprar um produto e, em seguida, voltar e fazer o login com o Google, alguns dias mais tarde e não conseguir acessar o produto que comprou, pois não há qualquer identificador exclusivo que é garantido para manter a coerência entre os dois Google autenticação de chamadas.

Eu estou curioso para saber se este tem sido abordada no OAuth 2.0, de forma explícita através da especificação de protocolo, ou por meio de implementação de consenso entre os principais fornecedores.Qual o campo se posso confiar em não mudar para que a vida útil de uma relação do utilizador com um determinado provedor de OAuth?

Foi útil?

Solução

Como parte de sua OAuth2 para login processo, o Google fornecer uma TokenInfo ponto final é usado para validar e fornecer informações sobre os access_token que é obtido anteriormente no processo.

As informações de token inclui userid:

"O valor deste campo é um identificador imutável para o usuário conectado, e pode ser usada quando a criação e o gerenciamento de sessões de usuário em seu aplicativo.Este identificador é o mesmo, independentemente do client_id.Isso fornece a capacidade de correlacionar informações de perfil em várias aplicações na mesma organização."

o que parece ser apenas o bilhete (ou talvez token)!

userid só está presente se o https://www.googleapis.com/auth/userinfo.profile escopo foi incluído na solicitação de token de acesso, portanto não se esqueça que.

Da mesma forma, no Facebook API você tem acesso à API gráfica uma vez que você tenha obtido um token de acesso onde você pode obter os dados do usuário, incluindo a IDENTIFICAÇÃO.

Twitter incluem o user_id no token de acesso de resposta, como parte de sua autenticação de API


Se você estiver usando o OAuth em um .LÍQUIDO do projeto, isso pode ser útil...Eu descobri hoje que O WebMatrix Beta 2 inclui OAuth2 clientes para o Facebook, Twitter, Windows Live, Google e Yahoo, e pode ser usado a partir de um projeto MVC.Me disseram que você só precisa do WebMatrix.Security.dll e você é bom para ir.Ele é instalado em C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies.Embora em versão beta, e escondido, é uma boa maneira de começar e pode fazer o que a curva de aprendizagem com o DotNetOpenAuth a biblioteca um pouco menos íngreme.

Outras dicas

oauth 2.0 não resolve isso - não é um protocolo de identidade / SSO.

No entanto, OpenID Connect (construído no OAuth 2.0).Você pode ter sortuda e recuperar o endereço de e-mail do usuário via OpenID Connect (l="nofollow">Veja aqui - dependendo dos escopos), ou você pode recuperar o PPID, que deve ser exclusivo para uma determinada parte contente .De qualquer forma - deve ser possível.

Alternativamente, Saml poderia ser usado.Suporta muitos sabores diferentes de identificadores de usuários que se adequam.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top