不久前我写了一篇关于新 GMail 认证插件的博客。最近我收到了一些关于我的 LDAP 集成工作的问题(我还做了 Kerberos 的工作,但这不是给胆小管理员做的)。所以我决定写这篇澄清文章,讨论 SSO(单点登录)与 SSI(单点签到)。

注意:这是我对于这两项的理解以及如何应用我的定义,其他人可能会有不同的处理方式。

对我来说,我们有三种系统用于在系统中认证用户。我们可以使用独立的登录框架(比如 Joomla! 默认使用的),单点签到接口(例如 LDAP 和现在的 GMail)以及单点登录(例如 LDAP 和 Kerberos)。对于大多数网站来说,内置的 Joomla! 认证系统很棒,因为它允许他们以独立的方式控制用户。当我们转向拥有大量社区用户基础的网站时,使用他们的 GMail 凭据来验证登录(和电子邮件)或者可能已有的 LDAP 系统来实现地址簿的功能。最后一种是中到大型企业环境,运行着可能是 Microsoft Active Directory(Kerberos SSO)或 Novell Netware/eDirectory(LDAP SSO)。在这两种情况(SSO 和 SSI)中,我都使用了 LDAP 作为例子 - 那么区别在哪里?

当用户坐在他们的电脑前,在早上登录时,他们的凭证被用于在整个会话期间验证他们,这被称为单点登录。通过一次登录,他们已经验证了自己。支持这种方式的系统有 Kerberos(即 Windows 环境)和 LDAP(使用 IP 地址验证)。用户将感受到的一个副作用是他们无法从托管站点“签出” - 他们将始终保持登录状态。由于我自己的原因,我禁用了管理员的这个功能,并且只在前端启用。这是一个单点登录事件,用户只需输入一次他们的用户名和密码。

单点登录(Single Sign In)用于确定多个系统使用了相同的凭证,但每个系统通常还是需要用户重新输入详细信息。GMail 是我最典型的例子,现在在启用了相应插件的 Joomla 中可以这样使用。虽然您的用户名和密码在登录 GMail/GTalk/GServiceNameHere 时保持不变,但您仍然需要再次将其输入到 Joomla! 网站中。您不会像在 SSO 中那样自动获得权限,但您的详细信息在各个独立系统中是相同的。

目前在 Joomla! 1.5 中,除了默认的 Joomla! 用户表认证外,还支持 GMail 和 LDAP 支持(请记住,在 1.5 版本中,用户必须存在于这个表中,其他任何形式的认证才能工作,但在后续版本中将修复这个问题,使其更加灵活)。这些插件为 Joomla! 提供了单点登录接口,例如,社区网站可以使用非常常见和受欢迎的系统(GMail)来处理辅助认证,或者更大、结构更复杂的组织可以使用他们的 LDAP 数据(这可以轻松地与 Active Directory 或 Netware 同步,还不知道其他什么)。

这就是单点登录(SSO)和单点登录(SSI)之间的区别——但哪一个适合您呢?对于大多数人来说,我会说 SSI 是大多数人所需的一切。虽然有点不便,但至少在一定程度上是同步的。在 AD 等地方更改密码,它会在 Joomla! 中自动更改。SSO 对于那些有许多员工访问企业内网门户的公司非常有用,因为它免除了用户的登录过程。这些地方可能更有可能有额外的基础设施来充分利用该平台——以及实施这些技术技能(对于使用 Netware/eDirectory 的人来说,LDAP SSO 是最容易的,Kerberos SSO 对于 Linux 服务器需要大量的配置)。

我希望这能提供信息并让您了解我幕后的一些工作内容。我希望建议发布设置和配置 Kerberos SSO 的说明,目前有一个 Joomla! 1.5 版本的 LDAP SSO 机器人可用于 Novell eDirectory,作为 LDAP 工具项目的一部分。此外,我目前正在开发一个同步管理器,以减轻 Joomla! 对用户存在于系统中才能登录的限制。

祝你好运,
Sam :)

附言:我将 GMail 插件放入核心的逻辑是,它不仅提供了如何开发这项技术的示例,而且为社区网站提供了一个非常有用的工具,他们可以启用它。由于这个过程证明了电子邮件地址是有效的,并且该人可以访问它——自动用户创建可以无缝进行。

更新:现在有一个JAuthTools 维基,其中包含有关如何配置各种 LDAP 实现与 Joomla! 的信息。