我正在将Open ID与已拥有用户帐户的网站集成。我已经检查了相关的代码文档,到目前为止事情很简单,现在在我开始实现之前,我想问一下将Open ID与现有成员集成的最佳方法是什么。
我的计划
我有一个特定的计划,想知道这是否是一个好方法,或者它会在以后出现问题。
说,我有一个用于存储用户和密码的主表(这适用于现有用户,直接订阅我们的网站而没有开放ID) 现在我将创建一个OpenId表,它将使用开放id提供者映射一对多的用户。
注意:如果是第一次通过open id注册,它将始终在master用户表中创建一个帐户,然后在open id map表中相应地映射。
我要做的是当用户点击使用yahoo登录,并在雅虎提供商处进行身份验证并返回我们的网站时,我们的应用会弹出一个问题: -
1)您是否已在此网站上拥有帐户?如果是这样,那么将为用户提供登录站点用户名和密码的选项,如果正确完成则会将现有用户映射到yahoo,将记录插入到使用yahoo映射现有用户的开放id表中,但是在此我会使用什么元素来唯一标识雅虎帐户?电子邮件?雅虎用户名?
一个可能的困境出现在图片中,如果用户最初使用开放ID注册而不是通过正常的登录/注册,我需要让用户通过谷歌进行身份验证然后返回然后如果成功映射了雅虎帐户到帐户。将记录插入到使用yahoo映射现有用户的开放id映射表中,默认情况下它也将已经映射了谷歌。
2)新用户?在这种情况下,它将获取用户名/电子邮件,并在主表中使用随机生成的密码创建帐户,并在open id表中将该用户与open id映射。
这种方法听起来合理吗?如果不是为什么?我可以采用哪些其他可能的方式来集成open id。