Pergunta

Recentemente, implementei os endpoints OpenID do Google e do Yahoo em meu sistema de autenticação em meu site para que os usuários possam evitar a criação de uma conta em meu site.Prática bastante comum, certo?

Tenho uma pergunta específica, mas primeiro algumas informações básicas.

Ao passar pela autenticação de três etapas, usei o Attribute Exchange para obter o nome e o endereço de e-mail do usuário.Atualmente, estou armazenando seu OpenID (uma longa string parecida com esta: https://me.yahoo.com/a/2Z7LplQsnI_DgtAw(...um monte de alfanuméricos) em um campo especial na tabela de usuários.

Digamos que minha tabela de usuários seja assim.

type  id  password                          email             key
1     1   0e9212587d373ca58e9bada0c15e6fe4  test@example.com
2     1   b8d2f4a50d2b364ff2766556ba50da48  me@gmail.com      https://www.google.com/accounts/o8/id?id=AItOawll6-m_y…
2     2   6687d5d88b359ee1340717ebf0d1afc6  you@gmail.com     https://www.google.com/accounts/o8/id?id=AItOawm3-C_9…
3     1   fd193c2fa449c9d6dc201d62d5ca86d3  him@yahoo.com     https://me.yahoo.com/a/2Z7LplQsnI_DgtAw…
1     2   2e710b13b3dd787e2b15eab3dde508c2  person@site.com

types
1 = native account
2 = Google OpenID
3 = Yahoo OpenID

Quando um usuário faz login com uma conta nativa, o e-mail e a senha são usados ​​para autenticação (duh).

Quando um usuário usa Google ou Yahoo OpenID, o OpenID (campo-chave) é usado para autenticação.

Ok, agora que todas as informações básicas foram eliminadas ... será seguro se eu esquecer de armazenar o próprio OpenID e simplesmente usar o e-mail que recebi do Attribute Exchange para autenticar o usuário? Alguém pode falsificar a terceira etapa de uma transação OpenID ou posso confiar que sempre que recebo you@gmail.com da parte Attribute Exchange de uma transação OpenID com o Google, ela é genuína e não falsificada?

Foi útil?

Solução

Essa quebra intencional do protocolo causará grandes dores de cabeça no longo prazo.Por exemplo, considere casos em que um usuário faz login usando um servidor OpenID personalizado, mas fornece um endereço de e-mail @gmail.com.

A única informação garantida como absolutamente consistente e confiável após uma troca de autenticação OpenID é o URL de identidade.

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