根据我使用OpenID的经验,我看到了一些重要的缺点:
向站点添加单点故障
即使检测到,也不是站点可以修复的故障.如果OpenID提供商停机三天,该网站有哪些追索权允许其用户登录并访问他们拥有的信息?
将用户带到其他站点内容以及每次登录到您的站点时
即使OpenID提供程序没有错误,也会将用户重定向到其站点进行登录.登录页面包含内容和链接.因此,实际上有可能将用户从网站上拉下来,从而进入互联网兔子洞.
为什么我要将用户发送到其他公司的网站?
[注意:我的提供商不再这样做,似乎已解决了这个问题(目前).]
为注册添加非常重要的时间要注册
网站,新用户必须阅读新标准,选择提供商并注册.标准是技术人员应该同意的,以使用户体验无摩擦.它们不是应该吸引用户的东西.
这是一个网络钓鱼者的梦想
OpenID是非常不安全的,并且当他们登录时很容易窃取该人的ID.[取自David Arno的答案 ]
对于所有的缺点,一个好处是允许用户在互联网上登录更少.如果某个网站已选择加入OpenID,则需要该功能的用户可以使用该功能.
我想了解的是:
网站对OpenID 强制要求有什么好处?
使OpenID成为强制性的好处就是不需要编写网站的登录代码(超出OpenID集成),并且不需要在存储用户密码等方面采取预防措施.
没有自己的登录代码也意味着无需处理许多支持问题,例如重置丢失的密码等.
当然,你的大部分缺点都是有效的,所以我想这会成为一种折衷.
让我感到惊讶的是,没有更多的网站与特定的OpenID提供商建立密切的关系,只需要简单的帐户注册阶段 - 即某种'你可以使用你喜欢的任何OpenID,但你现在也可以通过输入一个用户名和密码等'登录页面,它会自动为您选择的提供商创建一个新帐户.
这是外包部分基础架构的好方法.您不必担心丢失密码等,其他人为您做.
不过,我不确定我是否会专门使用它.我没有使用足够的OpenID来完全信任它,并且需要简化注册过程,直到> 90%的用户拥有OpenID.
为站点的故障添加关键点
关于Stackoverflow的uservoice的第三个最高想法是允许更改OpenID提供程序.在评论中,建议允许关联多于OpenID.如果您的常规OpenID提供程序已关闭,则可以将多个OpenID与帐户关联的站点上仍可以使用其他提供程序登录(假设您已将其与该站点关联).
此外,它只是OpenID提供商用户无法正常工作的关键点.其他OpenID提供程序上的所有其他用户都可以继续记录它.随着时间的推移,您希望用户可以迁移到最可靠的提供商.
将用户带到其他网站内容以及每次登录到您的网站时
如果您已将OpenID提供程序设置为始终信任某个站点(或命名法中的OpenID使用者),并且您已登录到OpenID提供程序,那么他们将直接将您重定向回该站点,而您甚至不会看到您的OpenID提供程序站点.
在注册时添加非试用时间
目前情况可能如此,但正如andyuk所说,"支持OpenID的网站越来越少".我希望在几年后大多数用户已经拥有OpenID并知道它是什么.
从工程角度来看,仅使用OpenID的一大好处是,抽象出凭证认证文件可以让用户选择比您为网站构建的更复杂的认证方法.是的,一些OpenID提供商很容易被钓鱼.另一方面,其他OpenID用户使用信息卡,硬件令牌或电话验证登录,这些是网络钓鱼者无法捕获和重放的凭据.
正如Gabe Wachob 所说:
想要在认证方法上进行创新的人不必是在网上提供服务的创新者(运行Mediawiki,Drupal等的百万人中的任何一个).认证创新和服务创新的"脱钩"在OpenID中是有价值的.
因此,通过使用OpenID,您可以为用户提供更强大的身份验证方法.抽象允许您实现一个接口,然后您可以选择要使用的任何提供者,无论他们是使用明文或挑战 - 响应神经植入物中的八个字符密码.