概述
Fess 支持与LDAP(轻量级目录访问协议)服务器集成, 可以实现企业环境中的认证和用户管理。
通过LDAP集成可以实现:
使用Active Directory或OpenLDAP进行用户认证(登录)
基于组和角色的访问控制
通过管理界面管理LDAP用户/角色/组(可选)
支持的LDAP服务器
Fess 支持与以下LDAP服务器集成:
Microsoft Active Directory
OpenLDAP
389 Directory Server
Apache Directory Server
其他LDAP v3兼容服务器
前提条件
对LDAP服务器的网络访问
用于LDAP搜索的服务账号(绑定DN)
对LDAP结构(基础DN、属性名等)的了解
设置方法概述
Fess 的LDAP设置根据用途在两个地方进行管理。
- 连接与认证设置(管理界面 /
system.properties) 与LDAP服务器的连接及登录认证相关的设置。 可通过管理界面 “系统 > 通用” 页面中的”LDAP”部分进行设置, 保存至
app/WEB-INF/conf/system.properties。- LDAP管理功能与行为设置(
fess_config.properties) 通过管理界面管理LDAP用户/角色/组的功能, 以及角色解析等行为相关的设置。这些设置在
app/WEB-INF/classes/fess_config.properties中定义, 如需更改值请编辑此文件。
Note
仅使用登录认证时,只需”连接与认证设置”即可运行。 “LDAP管理功能”(ldap.admin.enabled)仅在需要通过管理界面 对LDAP端的用户/角色/组进行创建、更新、删除时才需要启用。
连接与认证设置
这些设置可通过管理界面”系统 > 通用”的LDAP部分进行配置, 保存至 app/WEB-INF/conf/system.properties。也可以直接编辑该文件。
设置示例(直接编辑 system.properties 时):
Note
%s 占位符由Java的 String.format() 处理。 ldap.security.principal、ldap.account.filter、ldap.group.filter 以及 各管理用过滤器均使用 %s 格式(而非 {0} 格式)。 另外,传递给过滤器的用户名会由 Fess 内部自动转义,以防止LDAP注入攻击。
LDAP管理功能与行为设置
以下属性在 app/WEB-INF/classes/fess_config.properties 中定义。 如需更改值请编辑此文件。
管理功能的启用
用户/角色/组管理用过滤器与基础DN
在 ldap.admin.enabled=true 时,用于通过管理界面操作LDAP条目。
角色解析与行为控制
控制登录后角色/组解析的行为。
属性映射
LDAP属性与 Fess 用户属性的对应关系通过 ldap.attr.* 属性定义。 通常无需更改,但在模式不同时可进行调整。典型示例:
Note
ldap.attr.state 映射到 st,ldap.attr.city 映射到 l 等, 存在属性名与LDAP属性名不一致的情况。 完整列表请参考 fess_config.properties 中以 ldap.attr. 开头的行。
Active Directory设置
针对Microsoft Active Directory的设置示例(system.properties 或管理界面)。
如需解析嵌套组(嵌套组),可使用Active Directory特有的 LDAP_MATCHING_RULE_IN_CHAIN。
OpenLDAP设置
针对OpenLDAP的设置示例。
Note
标准OpenLDAP不具有 memberOf 属性, 因此使用 ldap.group.filter 解析组。 若已启用 memberof overlay,也可使用 ldap.memberof.attribute。
安全设置
LDAPS(SSL/TLS)
使用加密连接:
使用自签名证书时,将证书导入Java truststore:
密码保护
ldap.admin.security.credentials 保存在 system.properties 中。 通过管理界面设置的认证信息会在内部加密后保存。 请对文件访问权限进行适当限制。
故障转移
如需对多个LDAP服务器进行故障转移,在 ldap.provider.url 中 用空格分隔指定多个URL。
故障排除
连接错误
症状: LDAP连接失败
确认事项:
LDAP服务器是否已启动
防火墙是否开放端口(389或636)
ldap.provider.url是否正确(ldap://或ldaps://)ldap.admin.security.principal和密码是否正确
认证错误
症状: 用户认证失败
确认事项:
ldap.security.principal的模板是否正确(是否包含%s)用户是否存在于指定基础DN内
ldap.account.filter是否正确
无法获取组/角色
症状: 无法获取用户的组或角色
确认事项:
ldap.group.filter是否正确ldap.memberof.attribute是否正确(Active Directory时)组是否存在于搜索基础DN内
ldap.role.search.*.enabled是否已启用
无法通过管理界面管理用户
症状: 无法通过管理界面创建、编辑、删除LDAP用户
确认事项:
ldap.admin.enabled是否设置为trueldap.admin.user.base.dn等管理用基础DN是否正确ldap.admin.security.principal的服务账号是否具有写入权限
调试设置
如需输出详细日志,在 app/WEB-INF/classes/log4j2.xml 中添加日志记录器。
参考信息
基于角色的搜索配置 - 基于角色的访问控制
Windows集成认证SSO配置 - SPNEGO(Kerberos)认证
用户 - 用户管理指南