2

我最近在我的站点上的身份验证系统中实现了 Google 和 Yahoo 的 OpenID 端点,这样用户就可以避免在我的站点上创建帐户。很常见的做法,对吧?

我有一个具体的问题,但首先是一些背景信息。

当我通过三足身份验证时,我使用 Attribute Exchange 来获取用户的姓名和电子邮件地址。目前,我将他们的 OpenID(一个长字符串,如下所示:https ://me.yahoo.com/a/2Z7LplQsnI_DgtAw (...一堆字母数字)存储在用户表的一个特殊字段中。

假设我的用户表看起来像这样。

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

当用户使用本机帐户登录时,使用电子邮件和密码进行身份验证(duh)。

当用户使用 Google 或 Yahoo OpenID 时,OpenID(关键字段)用于进行身份验证。

好的,现在所有的背景信息都没有了……如果我忘记存储 OpenID 本身并简单地使用我从 Attribute Exchange 返回的电子邮件来验证用户身份,它会安全吗?有人可以欺骗 OpenID 交易的第三部分吗,或者我可以相信,每当我从与 Google 的 OpenID 交易的属性交换部分收到 you@gmail.com 时,它是真实的且不是欺骗的?

4

1 回答 1

3

从长远来看,这种故意破坏协议的行为会让你头疼。例如,考虑用户使用定制的 OpenID 服务器登录但提供@gmail.com 电子邮件地址的情况。

在 OpenID 身份验证交换之后,唯一保证绝对一致和可靠的信息是身份 URL。

于 2010-07-13T17:22:39.477 回答