2010-07-13 47 views
2

我最近在我的网站上将Google和Yahoo的OpenID端点实现到了我的身份验证系统中,以便用户可以避免在我的网站上创建帐户。很常见的做法,对吗?将OpenID与现有网站登录系统结合使用

虽然我有一个具体的问题,但首先有一点背景资料。

当我通过三段身份验证时,我使用了Attribute Exchange来获取用户的姓名和电子邮件地址。目前,我保存其OpenID(长字符串,看起来像这样:。https://me.yahoo.com/a/2Z7LplQsnI_DgtAw(...字母数字的users表中的一个特殊领域一堆)

比方说,我的用户表看起来像这样

type id password       email    key 
1  1 0e9212587d373ca58e9bada0c15e6fe4 [email protected] 
2  1 b8d2f4a50d2b364ff2766556ba50da48 [email protected]  https://www.google.com/accounts/o8/id?id=AItOawll6-m_y… 
2  2 6687d5d88b359ee1340717ebf0d1afc6 [email protected]  https://www.google.com/accounts/o8/id?id=AItOawm3-C_9… 
3  1 fd193c2fa449c9d6dc201d62d5ca86d3 [email protected]  https://me.yahoo.com/a/2Z7LplQsnI_DgtAw… 
1  2 2e710b13b3dd787e2b15eab3dde508c2 [email protected] 

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

当与本地帐户的用户登录,电子邮件和密码用于验证(杜)。

当用户使用谷歌或雅虎的OpenID,那么OpenID的(键字段)用于认证。

好吧,现在在所有的背景信息中都不存在... 如果我忘记存储OpenID本身并仅使用从属性交换中获得的电子邮件来验证用户,它会安全吗?有人可以欺骗OpenID交易的第三段,或者我可以相信,只要我从Google的OpenID交易的属性交换部分获得[email protected],它是真实的,没有欺骗?

回答

3

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

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

+1

这正是我想知道的。谢谢! – 2010-07-14 19:01:21