跳转到目录

用户身份验证和单点登录

为了跨多个应用程序同步用户帐户,OJS和OCS支持LDAP和Shibboleth,这两种技术在其他应用程序中都有不同程度的支持,包括PhpBB、Drupal、WordPress和其他内容管理系统。

LDAP(轻量级目录访问协议)虽然不如Shibboleth强大(例如,LDAP不支持单点登录,登录到一个服务会自动登录到所有其他服务),但却是在服务器上集中身份验证的常见选择。一个流行的LDAP实现是OpenLDAP协议的开源实现。

特殊的习惯在用户管理和身份验证方面是LDAP的强大替代方案,并且越来越受欢迎。Shibboleth提供了LDAP的帐户同步功能以及单点登录功能(登录到一个服务会自动登录到其他服务),从而在web应用程序之间提供了更无缝的集成。但是,Shibboleth的安装和配置可能比LDAP复杂得多。

设置LDAP#

设置LDAP服务器超出了本指南的范围,但是请参考参考资料部分,以获得有助于设置LDAP源的两个有用指南。同样,请参考其他web应用程序的文档,以获得LDAP集成方面的帮助。

要在OJS和OCS中设置LDAP,以站点管理员身份登录,然后在管理员主页的“站点管理”下,单击“身份验证源”。在“Create authentication source”下,选择“LDAP”并单击“Create”。这将打开LDAP设置页面。

一个名为LDAP的身份验证源,带有OJS中的选项列表。

警告请注意,默认情况下,LDAP插件并不与OCS一起发布——你必须从最近版本的OJS(或CVS)中获取它。可以找到更多的信息在这里

LDAP设置的标题是任意的;保持原样或选择自己的标题。接下来的三个设置自定义OJS/OCS与LDAP服务器之间的集成级别。

  • 启用用户配置文件同步. 如果选中,用户信息(包括密码、姓名、电子邮件地址、电话号码和其他个人数据)将在LDAP源和OJS/OCS之间自动同步,从而在应用程序之间实现一致的用户配置文件。
  • 启用用户密码修改.如果勾选,允许用户更改密码和恢复丢失的密码。
  • 启用用户创建. 如果选中,在OJS/OCS中创建的任何用户都将自动添加到LDAP源中。

下一组设置将OJS/OCS配置为允许与LDAP服务器通信。

LDAP设置字段为OJS。

  • 服务器主机名. 承载LDAP源的服务器的域/IP地址。如果OJS/OCS与LDAP在同一台服务器上运行,则可以输入本地主机
  • 服务器端口. 如果LDAP在非标准端口上运行,请在此处输入数字。如果您不确定,请留空。
  • 基本DN. 这就是它变得有点复杂的地方。LDAP的设计类似于目录树,非常类似于您的计算机文件系统。为了识别要搜索用户的目录条目,LDAP插件需要从其开始搜索的基本DN或“可分辨名称”。在提供的示例中,ou=人,dc=示例,dc=com“ou”(或“Organization Unit”)表示主要用户组,您应该能够从LDAP源的配置文件中确定该用户组。同样,“dc”(或“域组件”)应该在LDAP源配置文件的“后缀”下。每个域组件表示您的域名的一个组件(例如example.com有两个域组件“example”和“com”。如果您使用的是本地主机,请使用dc = localhost, dc = localdomain
  • 经理DN.类似于Base DN,但是这个设置是插件作为管理员与LDAP源通信所必需的,即进行管理更改。域组件应该与基本DN相同,但是cn(或“公共名称”,即根用户的昵称)应该是“Manager”或在LDAP服务器配置中设置的任何名称。
  • 帐户名属性. 该值唯一标识用户对象,对于OpenLDAP,该值应为“uid”,但对于其他LDAP源,该值可能不同(例如,对于Microsoft Active Directory,该值应为sAMAccountName)。
  • 密码管理器.管理帐户的密码(仅在启用了用户配置文件/密码同步或用户创建选项时才需要)。
  • 密码加密.出于安全原因,建议您使用某种形式的密码加密。如果你的PHP版本是4.3.0或更高,我们建议使用SSHA。

如果您的PHP版本是5.0或更高版本,您可以将LDAP配置为使用SASL(简单身份验证和安全层)进行身份验证。由于此特性适用于高级用户,请参阅参考资料部分中的链接以获得更多信息。

设置Shibboleth#

笔记:请注意,Shibboleth支持尚未移植到OCS。

Shibboleth由Internet2中间件项目,因此,他们的网站为下载和文档提供了一个中心位置。目前,他们为所有主要操作系统提供二进制形式的Shibboleth服务提供商2.1,并提供源代码。有关安装和设置Shibboleth服务提供商的更多信息,请咨询Internet2的支持文档

一旦在系统上设置了Shibboleth,与PKP应用程序的集成就需要使用Shibboleth插件从插件库。启用此插件后,请访问插件的设置页面以获取有关配置的说明。

常见问题#

我无法使用LDAP凭据登录到OxS。#

OxS的一个主要组成部分是用户活动的一致记录,特别是在提交和编辑方面。如果用户记录存储在OxS之外,则无法保证记录会保留或保持一致,从而导致OxS出现问题。因此,除非OxS中有匹配的用户,否则LDAP凭据将无法工作。

也就是说,有几种方法可以将LDAP用户导入OxS数据库。如果您希望一次性将用户转储到OxS中,您可以构建一个XML文件,其中包含用户信息,以便导入到OxS中(参见users XML插件)。此外,还可以编写代码,以便在另一个应用程序中注册用户时自动将用户插入数据库。中的execute函数类/经理/形式/ UserManagementForm.inc.php显示了如何将用户注册到OJS中,并且可以在另一个应用程序的用户注册函数中建模。很可能可以实施多种其他解决方案来克服这一问题。

OxS散列密码的方式似乎与LDAP中不同。如何让OX符合LDAP的哈希技术?#

默认情况下,OJS和OCS在散列之前将用户名附加到密码。若要更改此行为,请修改在类/security/Validation.inc.php中使用encryptCredentials函数. 如果更改密码哈希行为,则必须重置数据库中的所有现有密码。

尝试连接到LDAP服务器时出现以下错误:PHP致命错误:调用未定义的函数ldap_connect()

默认情况下不包括PHP的LDAP扩展,可能需要编译。看见PHP安装指南了解更多信息。

资源#

Baidu