使用 OpenID 对用户进行身份验证越来越流行,事实上,它使 web 应用程序更易于使用。
但是在决定是否实施 OpenID 时应该牢记哪些安全注意事项?
它适用于任何类型的 webapp 吗?或者是否存在不应该使用这种处理用户身份验证的方式的 Web 应用程序类别?
电子商务应用可以使用 OpenID 吗?
使用 OpenID 对用户进行身份验证越来越流行,事实上,它使 web 应用程序更易于使用。
但是在决定是否实施 OpenID 时应该牢记哪些安全注意事项?
它适用于任何类型的 webapp 吗?或者是否存在不应该使用这种处理用户身份验证的方式的 Web 应用程序类别?
电子商务应用可以使用 OpenID 吗?
我认为通过 OpenId提供注册是有意义的,但不需要它,即使对于电子商务网站也是如此。
这样做的原因是,精通技术的用户(仍然是 openid 的核心用户群)可以决定是否承担风险。
我不推荐使用 OpenId 的站点要么是高度敏感的站点,例如银行站点,要么是您希望控制用户身份的私人/公司系统(ala Enterprise-Centric Identity,而不是 User-Centric Identity )。
使用 OpenId 有一个明显的优势,因为您不必管理用户的身份,包括密码、重置、安全等,并接受所涉及的风险。
每个 OpenID 提供者都有安全特性和缺点的权衡。例如:
特征
Google、Facebook、MyOpenID 和 Verisign 都提供不同程度的双因素支持。(威瑞信是最安全的恕我直言)
他们都支持Javascript免费操作(对于安全偏执的用户)
MyOpenID 和 LiveID 的隐私和增强匿名性(虽然其他的不多)
密码更改政策
登录印章(雅虎,ADFSv2)
缺陷
许多站点不提供与此处记录的相同的 HTTP 标头安全性。这意味着某些站点比其他站点更容易受到 MITM、FireSheep、令牌重放或 Clickjacking 的攻击。
各个站点之间实际上根本没有一致性。
而这仅仅是个开始。我有一个更详细的帖子,这里有许多有价值的超链接。在那里,我比较了主要 OpenID 提供商的所有安全功能,并向社区请求我们应该考虑的任何其他功能或 IDP。
如果您发现 IDP 具有未列出的安全功能,我会鼓励任何人在此发帖。
它适用于任何类型的 webapp 吗?
我会说 Verisign 将是更高安全性场景的可信名称,假设最终用户选择了所有的花里胡哨。我不喜欢配置他们的 HTTP 标头(重复链接)。只需确保您的依赖方(网站)保护自己免受来自 RP 和以前会话的重放 cookie 的影响。
如果您使用 Windows / IIS 作为依赖方,我可以向您发送更多信息,以防止我在上一段中提到的场景。
额外研究
Microsoft 在此处提供了有关 OpenID 安全问题的详细白皮书。我给作者发了电子邮件,他们在http://sso-analysis.org/ 上发布了一个分析器,分析工具在这里可用:http: //sso-analysis.org/aaas/brm-analyzer.html
电子商务网站用openid我觉得不太好,但是社交网站和资讯网站用openid没问题。
原因是:
我不会将 OpenID 用于任何事情,原因很简单,我只是不太了解它的内部工作原理。总的来说,尽管我会这样说;
通过将您的访问管理外包给它,如果主要供应商之一发生任何事情,您就会陷入困境。
例如,假设谷歌决定开始作恶并将您的用户密码出售给第三方,第三方获得对您网站的访问权并代表用户做事。
用户不会生 Google 的气,他们会生你的气。
虽然在这种极端情况下,您有法律支持,但我不知道如果您的用户信息以其他形式泄露,您是否会有案例。