使用openId开发站点的最佳实践-用户表?

使用openId开发站点的最佳实践-用户表?,openid,Openid,我对OpenId很陌生,在身份验证完成后,我在理解如何使用OpenId时遇到了一些问题 我正在创建一个新的站点,我在让openId身份验证正常工作方面没有问题。但我不确定在用户登录后应该如何存储与用户相关的数据 在openId之前,我会有自己的注册过程,一个具有唯一UserId(integer)的UserTable,以及所有涉及与某个用户活动相关的数据的其他表都会有一个UserId列来标识用户 我现在应该在表中使用OpenId吗?我是否应该创建一个非常简单的OpenId->UserId表,每个登

我对OpenId很陌生,在身份验证完成后,我在理解如何使用OpenId时遇到了一些问题

我正在创建一个新的站点,我在让openId身份验证正常工作方面没有问题。但我不确定在用户登录后应该如何存储与用户相关的数据

在openId之前,我会有自己的注册过程,一个具有唯一UserId(integer)的UserTable,以及所有涉及与某个用户活动相关的数据的其他表都会有一个UserId列来标识用户


我现在应该在表中使用OpenId吗?我是否应该创建一个非常简单的OpenId->UserId表,每个登录都映射到该表,并像以前一样存储数据?当用户想要使用不同的OpenId提供者时会发生什么情况?

我建议您将用户id映射到
OpenId
映射,因为一对多映射是有意义的-允许用户将多个
OpenId
身份绑定到帐户是一种很好的做法。

我在我的网站上使用两个表:

1) 用户-存储用户配置文件信息

2) 凭据-存储用户登录信息。凭证可能不同:{email、password/hash}、openID等。

雅虎openID常见问题解答有一个很好的链接,链接到Plaxo的Joseph Smarr创建的食谱,该食谱详细介绍了向已有用户的网站添加openID的方法,包括DB表结构:

这是一个实现OpenID的分步教程指南 已拥有用户的网站的消费者端支持 账户。它将解释如何轻松地让新用户注册 使用其OpenID URL在您的网站上注册帐户,以及如何允许现有 用户附加他们的OpenID以便他们可以使用它们登录


所以我想当一个用户通过身份验证时,我应该检查我的用户表,看看openId是否存在,如果不存在的话,创建一个新行。。。但是,如何(以安全的方式)允许人们将多个OpenId映射到现有的用户ID?是的,实际上,如果用户带有未知的
OpenId
,最好询问用户是否想要创建新帐户或将其绑定到现有帐户(在后一种情况下,用户必须使用其他OpenId进行身份验证)。至于管理OpenID的安全方法,它或多或少是UI的东西。解决方案之一是在成功的
OpenID
roundtrip(或未经请求的身份断言)后请求确认。另一种是在往返过程中使用特殊的nonce或cookie。不管你能想出什么。