我是openID的新手。我花了很多时间思考最佳实践是什么让用户可以选择,使用各种支持OpenID的帐户登录。
(我必须进一步澄清,我的系统不是一个系统,只需要一个简单的“一次性身份验证”来进行博客发布,而是一个完整的系统,如社交网络网站,用户将始终添加更多信息并编辑“他的个人帐户”的现有信息...因此系统本身需要具有某种与用户所做工作相关联的“帐户”。)
鉴于我没有为mysite创建“具有密码和用户名的专用useraccount”,并且只依赖于openID登录,我遇到了以下问题: 当用户“A”通过“Google帐户”登录(第一次)时,他所做的一切都将与Google帐户相关联。当他回来并且不点击“Google帐户登录”而是点击“Yahoo Signin”时,他将登录,但将创建/获得与Yahoo关联的新帐户。他使用Google帐户所做的一切似乎都丢失了。只是在我的网站上向每个用户发出“openID indepedant and unique username”(无密码)并不起作用:就好像我在登录时要求这个唯一的用户名(没有密码),每个人都可以猜到其他人的用户名并关联OpenID跟他们。但是,如果我还必须拥有此用户名的密码,那么我最终会在没有openID的情况下结束我们的位置:然后我必须向用户发出某种“主帐户”(使用usernam和passwort),他可以,为方便起见,与任意数量的openId帐户相关联。但是,在这种情况下,我有什么理由而不是openID?因为用户必须记住“我的masterpassword和userid”...
=>这是否意味着,openID不“直接”支持多个帐户的“自由选择”?如果我希望用户能够使用任意openID用户帐户登录(对于每次登录),那么这是唯一的方式:
1.)用户通过“已知的openID帐户”登录=>多数民众赞成无所事事
2.)用户通过“未知的openID帐户”登录=>通过“未知”openId(例如Yahoo)对用户进行“身份验证”,但当用户返回我的页面时,向用户说明此(Yahoo)openID帐户未知(=没有进一步的工作与其关联=它就像一个新帐户)并询问,如果他最后一次通过其他帐户登录并提供支持的openID帐户列表。然后,用户可以选择他上次使用的提供商之一(例如Google)。然后他除了已经登录(与雅虎),他还必须登录他最后一次使用的“旧”(谷歌)帐户。这两个帐户然后“相互关联”,现在可以通过较新的(Yahoo)openID帐户/登录访问旧(Google)帐户上的任何工作?
或者还有其他方法可以支持“USERACCOUNT”的“多个openID帐户”吗?
(我之所以这样问:OpenID对于普通的终端用户来说并不是很了解。如果我打印一个包含来自谷歌,雅虎登录Faceebook的大型列表,将会有很多用户使用Google进行初始化登录,但下次他们回来时可能选择Facebook(因为他们刚离开Facebook网站,更有吸引力点击facebook图标)。这就是“网站工作”过去“15年”的方式:只有一种单一的登录方式:一个用户名 - 输入字段和一个密码输入字段。如果我现在打印一个巨大的帐户列表,其中每个用户都有一个帐户,每天都可以使用不同的帐户登录不理解这将导致的问题。所以理想的世界是用户可以通过我的openID-Provider列表的任意帐户登录,并且所有帐户都相互“关联”......
我希望我能够描述我的问题。
我非常感谢你的帮助和想法(mybe我在这里完全被误解了)
谢谢你! 扬
答案 0 :(得分:14)
是的,用户必须同时登录。
此外,任何时候当用户希望他可以选择将登录添加到他的个人资料并识别他/她的其他openID,如Blogger,Facebook等。如果他使用这些帐户创建了不同的登录(在grombeestje的表用户中),那么他可以使用应用程序删除其中一个本地登录(在grombeestje的表用户中)或将它们合并为一个。
答案 1 :(得分:7)
OpenID是一种身份验证机制,而不是配置文件存储机制。您应该仍然拥有站点上人员的唯一标识符,并且应该维护一个记录,该记录存储与该唯一标识符相关的OpenID,其存储方式与存储与该唯一标识符相关的密码的方式相同。
答案 2 :(得分:6)
在数据库中有一个包含用户ID的表,其中包含用户ID 并有一个链接表,将OpenID链接到用户ID。
像
表用户
ID NAME
1 PIET
2 KEES
和
表openid
OPENID USERID
http:// ..... 1
http:// ..... 1
http:// ..... 2
http:// ..... 2
答案 3 :(得分:2)
好像你必须让用户登录才能将它们连接在一起。