所以我喜欢 OpenID 的想法。我在我的网站上支持它,并在任何可能的地方使用它(比如这里!)。但我不清楚一件事。
支持 OpenID 的站点基本上接受任何 OpenID 提供程序,对吗?这如何与想要减少机器人注册的网站一起使用?如何阻止恶意 OpenID 提供者自动设置无限制的机器人 ID?
我有一些想法,并将它们作为可能的答案发布,但我想知道是否有人能看到我错过的明显东西?
你混淆了两个不同的东西——识别和授权。仅仅因为您知道某人是谁,并不意味着您必须自动授予他们做任何事情的权限。Simon Willison 在An OpenID is not an account 中很好地介绍了这一点! 更多关于白名单的讨论可以在使用 OpenID 的社交白名单中找到。
对您的问题的简短回答是,“它没有。” OpenID 特意只提供了一种具有集中认证站点的机制;由您决定您个人认为可以接受的 OpenID 提供商。例如,微软最近决定在其 Healthvault 站点上只允许来自少数几个供应商的 OpenID。公司可能决定只允许从其 LDAP 支持的接入点登录 OpenID,政府机构可能只接受来自生物特征支持网站的 OpenID,而博客可能只接受 TypePad,因为它们对垃圾邮件的审查非常严格。
OpenID 似乎有很多困惑。它最初的目标只是提供一个标准的登录机制,这样当我需要一个安全的登录机制时,我可以从任何或所有 OpenID 提供者中选择来为我处理。允许任何地方的任何人建立自己的受信任的 OpenID提供商从来都不是目标。有效地做第二个是不可能的——毕竟,即使使用加密,你也没有理由不能设置你自己的提供商来安全地撒谎并说它正在验证你想要的任何人。拥有一个单一的、标准化的登录机制本身已经是一大进步。
OpenId 只不过是用户在注册您的站点时选择的用户名和密码。您不依赖 OpenId 框架来清除机器人;您的注册系统应该仍然这样做。
可能的解决方案 - 您仍然可以要求新 ID 通过 CAPTCHA 测试。就像机器人可以使用虚假/多个电子邮件地址注册到任何站点一样,但那里的“验证”步骤也会失败。
还是我们将不得不开始维护提供商黑名单?考虑到建立一个新的提供者是多么容易,这些不会真的很好用。
据我所知,OpenID 只处理身份,而不是授权。停止机器人是一个授权问题。
请注意,与传统的“每个站点”登录不同,OpenID 为您提供了一个可能超越单个站点的身份。更好的是,这个身份甚至是一个 URI,因此它非常适合与 RDF 一起使用来交换或查询有关身份的任意元数据。
您可以使用 OpenID 执行一些您无法使用新用户的常规用户名执行的操作。
首先你可以做一些简单的白名单操作。如果 *.bigcorp.example 是 Big Corp 员工的 OpenID,并且您知道 Big Corp 不是垃圾邮件发送者,那么您可以将这些 OpenID 列入白名单。这应该适用于半封闭的网站,也许它是一个为当前和过去员工提供的社交网站。
不过更好的是,您可以从使用特定 OpenID 的其他地方进行推断。假设您有一张 OpenID 到 Stackoverflow.com 的信誉值的映射。当有人使用 OpenID 出现在您的网络论坛时,您可以查看他们在 Stackoverflow 上是否有良好的声誉,并跳过这些用户的验证码或试用期。