我是openID中的新手。我花了很多时间思考最佳做法是如何让用户选择使用各种支持OpenID的帐户进行登录。OpenID:如何最好地将多个OpenID帐户关联到一个用户?
(我必须进一步澄清,我的系统不是一个只需要一个简单的“一次性身份验证”来发布博客的系统,而是一个像社交网络站点这样的完整系统,用户将始终添加更多信息和编辑现有的“个人账户”制度本身的信息...所以需要有某种将与用户所从事的工作相关联,“账”。)
鉴于我不是这样的创建一个“密码和用户名为mysite的专用用户帐户”,只依赖openID登录我遇到了以下问题: 当用户“A”通过“Google帐户”登录(第一次)时,他所做的一切将与Google帐户相关联。当他回来并且没有点击“Google帐户登录”而是“雅虎登录”时,他将登录,但会创建/获取与雅虎相关的新帐户。他对Google帐户所做的一切似乎都已丢失。简单地向每个用户发布一个“openID独特和唯一的用户名”(不带密码)在我的网站上不起作用:就像我登录时要求这个唯一的用户名(没有密码),每个人都可以猜测其他用户的用户名并将OpenID跟他们。但是如果我还必须为这个用户名设置一个密码,那么我比以前在没有openID的情况下结束了我们的工作。然后,我必须向用户发出某种“主帐户”(包括usernam和passwort)为方便起见,可以关联任何数量的openId帐户。但在这种情况下,我比openID有什么理由?由于用户必须记住“我masterpassword和用户ID”反正...
=>这是否意味着,这OpenID的不“直接”支持多帐户的“自由选择”?如果我希望用户能够使用任意openID用户帐户登录(对于每一次登录),这是这样做的唯一方式:
1.)用户通过“已知的openID帐户“=>这是没有什么必须做
2.)用户通过”未知的openID帐户“=>”认证“用户通过”未知“openId(例如雅虎)认证用户,但当用户是回到我的页面,向用户说明,这个(雅虎)openID帐户是未知的(=没有进一步的工作与它相关联=它像一个新帐户)并询问,如果他可能通过其他帐户上次登录并提供支持的openID帐户列表。然后用户可以选择他上次使用的提供商之一(例如Google)。然后,他除了已经登录(与雅虎)之外,还必须登录他上次使用的“旧”(Google)帐户。这两个帐户然后“相互关联”,现在还可以通过较新的(Yahoo)openID帐户/登录访问旧版(Google)帐户上的任何工作?
或者是否有任何其他方式支持“一个USERACCOUNT”的“多个openID帐户”?我之所以这么问:OpenID对于普通用户来说还不是很了解,如果我打印一个包含Google登录信息的大型列表,Yahoo to Faceebook,那么会有很多用户使用Google首次登录,但下一次他们回来时可能会选择Facebook(因为他们刚刚离开了Facebook网站,并且更加吸引人,点击了facebook图标),这就是“网站在过去15年中如何运作”:只有一种方法可以登录:一个用户名输入字段和一个密码输入字段如果我现在打印一个帐户的巨大列表,其中每个用户都有一个帐户,一天不理解这将导致的问题,所以理想的世界将是,用户可以通过我的openID提供商列表的任意帐户登录,并将所有帐户“相关联”,彼此...
我希望我很难描述我的问题是什么。
我真的很感谢您的帮助和想法(mybe我在这里完全误解的东西)
谢谢合租了! Jan
您好杰里米,谢谢您的回答。 但是我在实践中如何将多个帐户的唯一标识符相关联?要做到这一点,唯一的方法是将唯一标识符的密码(=>拥有某种完整的masteraccount)或按照上述方式进行关联。但是,如果我发出某种“masteraccount”,那么OpenID是只是一些“有趣的小工具”,因为用户必须仍然记得我唯一IDENTIFER和密码。否则,不可能将多个openID帐户“安全”地彼此关联。 – jan 2009-11-12 18:11:16
您的认证模型应该只是:一个_authentication model_。它不应该规定你如何管理用户,只是你如何验证他们。您需要一个唯一标识符(UID),它允许您准确确定哪个用户连接到系统。即使SO使用它们生成的UID(例如65228),并且它们存储OpenID和它们的UID之间的连接。您遇到的问题是因为您将OpenID用作UID。今天知道使用Facebook的用户的唯一方法就是和Google昨天使用Google的用户相同,即让他们先登录Google。 – 2009-11-12 20:50:35