使用AEM 6配置LDAP
- 适用对象:
- Experience Manager 6.5
- 主题:
- 安全
创建对象:
- 管理员
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身份提供程序
LDAP标识提供程序用于定义如何从LDAP服务器中检索用户。
可在管理控制台中的 Apache Jackrabbit Oak LDAP标识提供程序 名称下找到它。
以下配置选项可用于LDAP身份提供程序:
LDAP提供程序名称 | 此LDAP提供程序配置的名称。 |
LDAP服务器主机名 | LDAP服务器的主机名 |
LDAP服务器端口 | LDAP服务器的端口 |
使用SSL | 指示是否应使用SSL (LDAP)连接。 |
使用TLS | 指示连接时是否应启动TLS。 |
禁用证书检查 | 指示是否应禁用服务器证书验证。 |
绑定DN | 用于身份验证的用户的DN。 如果此字段留空,则执行匿名绑定。 |
绑定密码 | 用于验证的用户的密码 |
搜索超时 | 搜索超时前的时间 |
最大活动管理员池 | 管理连接池的最大活动大小。 |
最大活动用户池 | 用户连接池的最大活动大小。 |
用户基础DN | 用于用户搜索的DN |
用户对象类 | 用户条目必须包含的对象类的列表。 |
用户ID属性 | 包含用户ID的属性的名称。 |
用户额外筛选器 | 搜索用户时要使用的额外LDAP过滤器。 最终筛选器的格式如下:'(&(<idAttr>=<userId>)(objectclass=<objectclass>)<extraFilter>)' (user.extraFilter) |
用户DN路径 | 控制是否应使用DN计算中间路径的一部分。 |
组基本DN | 组搜索的基本DN。 |
组对象类 | 组条目必须包含的对象类的列表。 |
组名称属性 | 包含组名称的属性的名称。 |
分组额外筛选器 | 搜索组时要使用的额外LDAP过滤器。 最终筛选器的格式如下所示:'(&(<nameAttr>=<groupName>)(objectclass=<objectclass>)<extraFilter>)' |
组DN路径 | 控制是否应使用DN计算中间路径的一部分。 |
组成员属性 | 包含组的一个或多个成员的组属性。 |
配置同步处理程序
同步处理程序定义身份提供程序用户和组如何与存储库同步。
它位于管理控制台中的 Apache Jackrabbit Oak Default Sync Handler 名称下。
以下配置选项可用于同步处理程序:
同步处理程序名称 | 同步配置的名称。 |
用户过期时间 | 同步用户过期之前的持续时间。 |
用户自动成员资格 | 同步用户自动添加到其中的组的列表。 |
用户属性映射 | 外部属性的列表映射定义。 |
用户路径前缀 | 创建用户时使用的路径前缀。 |
用户成员资格过期 | 成员资格过期的时间。 |
用户成员资格嵌套深度 | 同步成员关系时返回组嵌套的最大深度。 如果值为0,则实际上禁用组成员资格查找。 值为1仅添加用户的直接组。 只有在同步用户成员资格祖先时,才同步各个组时,此值无效。 |
组过期时间 | 同步组过期之前的持续时间。 |
组自动成员资格 | 已同步组自动添加到其中的组的列表。 |
组属性映射 | 外部属性的列表映射定义。 |
组路径前缀 | 创建组时使用的路径前缀。 |
外部登录模块
外部登录模块位于管理控制台下的 Apache Jackrabbit Oak外部登录模块 下。
其工作是定义要使用哪个身份提供程序和同步处理程序,从而有效地绑定两个模块。
可以使用以下配置选项:
通过SSL配置LDAP
可以将AEM 6配置为通过SSL使用LDAP进行身份验证,过程如下:
-
配置LDAP身份提供程序时,请选中 使用SSL 或 使用TLS 复选框。
-
根据您的设置配置同步处理程序和外部登录模块。
-
如果需要,请在Java™ VM中安装SSL证书。 可以使用keytool完成此安装:
keytool -import -alias localCA -file <certificate location> -keystore <keystore location>
-
测试与LDAP服务器的连接。
创建SSL证书
在配置AEM以通过SSL通过LDAP进行身份验证时,可以使用自签名证书。 以下是生成用于AEM的证书的工作过程示例。
-
确保您已安装并运行SSL库。 此过程使用OpenSSL作为示例。
-
创建自定义的OpenSSL配置(cnf)文件。 可以通过复制默认 openssl.cnf 配置文件并对其进行自定义来完成此配置。 在UNIX®系统上,它位于
/usr/lib/ssl/openssl.cnf
-
通过在终端中运行以下命令继续创建CA根密钥:
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™密钥库中。
启用调试日志记录
可以为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
关于组隶属关系的消息
通过LDAP同步的用户可以属于AEM中的不同组。 这些组可以是作为同步过程的一部分添加到AEM的外部LDAP组。 但是,它们也可以是单独添加的组,而不是原始LDAP组关联方案的一部分。
通常,这些组由本地AEM管理员或任何其他身份提供程序添加。
如果从LDAP服务器上的组中删除用户,则同步时更改将反映在AEM端。 但是,用户的所有其他未由LDAP添加的组关联仍保持不变。
AEM使用rep:externalId
属性检测并处理从外部组中清除用户的操作。 此属性将自动添加到由同步处理程序同步的任何用户或组,并且包含有关原始身份提供者的信息。
请参阅有关用户和组同步的Apache Oak文档。
已知问题
如果您计划使用LDAP over SSL,请确保创建的证书不带Netscape注释选项。 如果启用此选项,身份验证将失败并出现SSL握手错误。