使用OpenID与现有网站登录系统
-
14-09-2020 - |
题
我最近在我的网站上实现了Google和Yahoo的OpenID端点,以便用户可以避免在我的网站上创建帐户。相当常见的做法,对吧?
我有一个具体的问题,但首先是一点背景信息。
当我通过三条腿的身份验证时,我使用的属性交换以获取用户的姓名和电子邮件地址。目前,我正在存储他们的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)。
当用户使用谷歌或yahoo OpenID时,openID(键字段)用于进行身份验证。
好的,现在所有的背景信息都脱离了...... 如果我忘记存储OpenID本身并且只需使用我从属性交换返回以验证用户的电子邮件来验证,则会安全? 有人可以欺骗一个OpenID交易的第三站,或者我可以通过使用Google的OpenID交易的属性交换部分来信任它,这是真实的,而不是欺骗?
解决方案
故意破坏协议将导致您长期重大头痛。例如,考虑用户登录使用自定义内置OpenID服务器的情况,但提供@ Gmail.com电子邮件地址。
在OpenID身份验证Exchange之后,唯一保证的信息绝对一致,可靠是标识URL。
不隶属于 StackOverflow