为了跨多个应用程序同步用户帐户,OJS和OCS支持LDAP和Shibboleth,这两种技术在其他应用程序中都有不同程度的支持,包括PhpBB、Drupal、WordPress和其他内容管理系统。
LDAP(轻量级目录访问协议)虽然不如Shibboleth强大(例如,LDAP不支持单点登录,登录到一个服务会自动登录到所有其他服务),但却是在服务器上集中身份验证的常见选择。一个流行的LDAP实现是OpenLDAP协议的开源实现。
特殊的习惯在用户管理和身份验证方面是LDAP的强大替代方案,并且越来越受欢迎。Shibboleth提供了LDAP的帐户同步功能以及单点登录功能(登录到一个服务会自动登录到其他服务),从而在web应用程序之间提供了更无缝的集成。但是,Shibboleth的安装和配置可能比LDAP复杂得多。
设置LDAP服务器超出了本指南的范围,但是请参考参考资料部分,以获得有助于设置LDAP源的两个有用指南。同样,请参考其他web应用程序的文档,以获得LDAP集成方面的帮助。
要在OJS和OCS中设置LDAP,以站点管理员身份登录,然后在管理员主页的“站点管理”下,单击“身份验证源”。在“Create authentication source”下,选择“LDAP”并单击“Create”。这将打开LDAP设置页面。
警告请注意,默认情况下,LDAP插件并不与OCS一起发布——你必须从最近版本的OJS(或CVS)中获取它。可以找到更多的信息在这里.
LDAP设置的标题是任意的;保持原样或选择自己的标题。接下来的三个设置自定义OJS/OCS与LDAP服务器之间的集成级别。
下一组设置将OJS/OCS配置为允许与LDAP服务器通信。
本地主机
.ou=人,dc=示例,dc=com
“ou”(或“Organization Unit”)表示主要用户组,您应该能够从LDAP源的配置文件中确定该用户组。同样,“dc”(或“域组件”)应该在LDAP源配置文件的“后缀”下。每个域组件表示您的域名的一个组件(例如example.com有两个域组件“example”和“com”。如果您使用的是本地主机,请使用dc = localhost, dc = localdomain
.如果您的PHP版本是5.0或更高版本,您可以将LDAP配置为使用SASL(简单身份验证和安全层)进行身份验证。由于此特性适用于高级用户,请参阅参考资料部分中的链接以获得更多信息。
笔记:请注意,Shibboleth支持尚未移植到OCS。
Shibboleth由Internet2中间件项目,因此,他们的网站为下载和文档提供了一个中心位置。目前,他们为所有主要操作系统提供二进制形式的Shibboleth服务提供商2.1,并提供源代码。有关安装和设置Shibboleth服务提供商的更多信息,请咨询Internet2的支持文档
一旦在系统上设置了Shibboleth,与PKP应用程序的集成就需要使用Shibboleth插件从插件库。启用此插件后,请访问插件的设置页面以获取有关配置的说明。
OxS的一个主要组成部分是用户活动的一致记录,特别是在提交和编辑方面。如果用户记录存储在OxS之外,则无法保证记录会保留或保持一致,从而导致OxS出现问题。因此,除非OxS中有匹配的用户,否则LDAP凭据将无法工作。
也就是说,有几种方法可以将LDAP用户导入OxS数据库。如果您希望一次性将用户转储到OxS中,您可以构建一个XML文件,其中包含用户信息,以便导入到OxS中(参见users XML插件)。此外,还可以编写代码,以便在另一个应用程序中注册用户时自动将用户插入数据库。中的execute函数类/经理/形式/ UserManagementForm.inc.php
显示了如何将用户注册到OJS中,并且可以在另一个应用程序的用户注册函数中建模。很可能可以实施多种其他解决方案来克服这一问题。
默认情况下,OJS和OCS在散列之前将用户名附加到密码。若要更改此行为,请修改在类/security/Validation.inc.php中使用encryptCredentials函数
. 如果更改密码哈希行为,则必须重置数据库中的所有现有密码。
尝试连接到LDAP服务器时出现以下错误:PHP致命错误:调用未定义的函数ldap_connect()
默认情况下不包括PHP的LDAP扩展,可能需要编译。看见PHP安装指南了解更多信息。