使用AEM 6配置LDAP configuring-ldap-with-aem
LDAP (L 高 D 目录 A 访问 P 协议)用于访问集中式目录服务。 它有助于减少管理用户帐户所需的工作量,因为多个应用程序可以访问用户帐户。 其中一个LDAP服务器是Active Directory。 LDAP通常用于实现单点登录,它允许用户在一次登录后访问多个应用程序。
用户帐户可以在LDAP服务器和存储库之间同步,LDAP帐户详细信息将保存在存储库中。 此功能允许将帐户分配给存储库组,以便分配所需的权限和特权。
存储库使用LDAP身份验证来验证此类用户,凭据将传递到LDAP服务器进行验证,在允许访问存储库之前需要验证。 为了提高性能,存储库可以缓存已成功验证的凭据,并且存在过期超时以确保在适当时间段后进行重新验证。
从LDAP服务器中删除帐户后,将不再授予验证并拒绝对存储库的访问。 还可以清除保存在存储库中的LDAP帐户的详细信息。
此类帐户的使用对用户是透明的。 也就是说,他们发现从LDAP创建的用户帐户和组帐户与仅在存储库中创建的帐户之间没有任何区别。
在AEM 6中,LDAP支持随附了一个新实施,该实施需要与以前的版本不同的配置类型。
现在,所有LDAP配置都作为OSGi配置提供。 它们可以通过Web管理控制台进行配置,网址为:https://serveraddress:4502/system/console/configMgr
要使LDAP与AEM配合使用,您必须创建三个OSGi配置:
- LDAP身份提供方(IDP)。
- 同步处理程序。
- 外部登录模块。
配置LDAP身份提供程序 configuring-the-ldap-identity-provider
LDAP标识提供程序用于定义如何从LDAP服务器中检索用户。
可在管理控制台中的 Apache Jackrabbit Oak LDAP标识提供程序 名称下找到它。
以下配置选项可用于LDAP身份提供程序:
配置同步处理程序 configuring-the-synchronization-handler
同步处理程序定义身份提供程序用户和组如何与存储库同步。
它位于管理控制台中的 Apache Jackrabbit Oak Default Sync Handler 名称下。
以下配置选项可用于同步处理程序:
外部登录模块 the-external-login-module
外部登录模块位于管理控制台下的 Apache Jackrabbit Oak外部登录模块 下。
其工作是定义要使用哪个身份提供程序和同步处理程序,从而有效地绑定两个模块。
可以使用以下配置选项:
通过SSL配置LDAP configure-ldap-over-ssl
可以将AEM 6配置为通过SSL使用LDAP进行身份验证,过程如下:
-
配置LDAP身份提供程序时,请选中 使用SSL 或 使用TLS 复选框。
-
根据您的设置配置同步处理程序和外部登录模块。
-
如果需要,请在Java™ VM中安装SSL证书。 可以使用keytool完成此安装:
keytool -import -alias localCA -file <certificate location> -keystore <keystore location>
-
测试与LDAP服务器的连接。
创建SSL证书 creating-ssl-certificates
在配置AEM以通过SSL通过LDAP进行身份验证时,可以使用自签名证书。 以下是生成用于AEM的证书的工作过程示例。
-
确保您已安装并运行SSL库。 此过程使用OpenSSL作为示例。
-
创建自定义的OpenSSL配置(cnf)文件。 可以通过复制默认 openssl.cnf 配置文件并对其进行自定义来完成此配置。 在UNIX®系统上,它位于
/usr/lib/ssl/openssl.cnf
-
通过在终端中运行以下命令继续创建CA根密钥:
code language-none openssl genpkey -algorithm [public key algorithm] -out certificatefile.key -pkeyopt [public key algorithm option]
-
接下来,创建自签名证书:
openssl req -new -x509 -days [number of days for certification] -key certificatefile.key -out root-ca.crt -config CA/openssl.cnf
-
要确保一切正常,请检查新生成的证书:
openssl x509 -noout -text -in root-ca.crt
-
确保证书配置(.cnf)文件中指定的所有文件夹都存在。 如果没有,请创建它们。
-
通过运行创建随机种子,例如:
openssl rand -out private/.rand 8192
-
将创建的.pem文件移动到.cnf文件中配置的位置。
-
最后,将证书添加到Java™密钥库中。
启用调试日志记录 enabling-debug-logging
可以为LDAP身份提供程序和外部登录模块启用调试日志记录,以解决连接问题。
要启用调试日志记录,必须执行以下操作:
- 转到Web管理控制台。
- 查找“Apache Sling日志记录器配置”,并使用以下选项创建两个日志记录器:
-
日志级别: Debug
-
日志文件logs/ldap.log
-
消息模式: {0,date,
dd.MM.yyyy
HH:mm:ss.SSS
} &;ast;{4}&;ast; {2} -
记录器:org.apache.jackrabbit.oak.security.authentication.ldap
-
日志级别: Debug
-
日志文件:logs/external.log
-
消息模式: {0,date,
dd.MM.yyyy
HH:mm:ss.SSS
} &;ast;{4}&;ast; {2} -
日志记录器:org.apache.jackrabbit.oak.spi.security.authentication.external
关于组隶属关系的消息 a-word-on-group-affiliation
通过LDAP同步的用户可以属于AEM中的不同组。 这些组可以是作为同步过程的一部分添加到AEM的外部LDAP组。 但是,它们也可以是单独添加的组,而不是原始LDAP组关联方案的一部分。
通常,这些组由本地AEM管理员或任何其他身份提供程序添加。
如果从LDAP服务器上的组中删除用户,则同步时更改将反映在AEM端。 但是,用户的所有其他未由LDAP添加的组关联仍保持不变。
AEM使用rep:externalId
属性检测并处理从外部组中清除用户的操作。 此属性将自动添加到由同步处理程序同步的任何用户或组,并且包含有关原始身份提供者的信息。
请参阅有关用户和组同步的Apache Oak文档。
已知问题 known-issues
如果您计划使用LDAP over SSL,请确保创建的证书不带Netscape注释选项。 如果启用此选项,身份验证将失败并出现SSL握手错误。