根据我关于减轻密码爆炸的问题,我已经联系了一些我们支付费用以访问他们的网站的服务,询问我们是否可以验证我们自己的用户,其中一些人说可以,并向我发送有关如何这样做。(其中一个网站将这样的系统称为“门户”页面;我从未听说过以这种方式使用的术语。)
这很简单,我很想自己动手。最大的复杂性是,一个站点希望我们在数据库中的每个用户(我认为 LDAP 数据库是有意义的)在他们初始登录后存储一个密钥。所以,不是微不足道的,而是可行的。
我预计,这类任务的本质是,如果它们从小而简单开始,它们就不会以这种方式结束。肯定有一些软件可以解决这个问题,并且很容易扩展。
在我的搜索中,我遇到了:
[哇,哎呀。我在以前的搜索中错过了一些!Central Authentication Services上的 wikipedia 页面很有用,OpenID 的替代方案部分看起来有很多选择。]
任何人都可以推荐其中的任何一个,或建议避免这些吗?
在内部,我们使用 Apple 的 Open Directory [== OpenLDAP + Kerberos + Password Server(我相信 == SAML)] 进行身份验证。
至于系统的扩展/调整/高级配置,我可以用 Python、C++ 编程,可以做一些基本的 PHP,并且可能能够记住一些 Java。看起来我需要在某个时候拿起 Ruby。
附录:我还希望用户能够通过网络更改他们的密码(并让某些用户更改其他用户的密码)。
我的印象(基于最近一次关于云计算的会议)是“嗡嗡声”和支持的三个参与者是 OpenID、SAML和Information Cards。
OpenID 对个人更有用,更容易使用/安装/无论如何,在安全性方面做出了一些妥协,以使“更容易”发生。
SAML 和信息卡更面向企业,具有很强的安全性。
这三个都可以满足您的身份管理需求,但我认为 OpenID 不像其他两个那样真正的 SSO,即如果我使用 OpenID 登录到一个网站,它不会自动让我登录到我的其他网站已授权。
SAML 得到 Google 和朋友的支持,因此如果您使用 Google Apps、Salesforce.com 等,这是一个简单的选择。信息卡或多或少源自微软,并且(我认为)被 MSN Live 使用。
有基于 Python 的 OpenID 和 SAML 库,但我还没有找到任何信息卡(好吧,不是真的在寻找 :)
Shibboleth 仅真正适用于保护对通过 HTTP 可用资源的访问。它还被设计为仅处理受信任的站点网络,这与 OpenID 不同,OpenID 是为不受信任的站点进行身份验证而设计的。我建议 OpenID 比 Shibboleth 实现起来要简单得多。
我同时使用了 Shibboleth 和 SimpleSAML,并为两者开发了扩展。
在我们的办公室,我们使用 SimpleSAML php 的自定义版本向 Google Apps 提供 IDP。因此,我们的员工可以使用与本地办公室 LDAP 相同的凭据登录 Google Apps。
恕我直言:
希博莱特
简单SAML
在我们的理想设置中,我们将使用带有 SimpleSAML IDP 的 Shibboleth SP。