Liferay 6.2 GA6对接LDAP时无法读取userPassword属性问题咨询
问题排查方向
- 检查AD侧属性读取权限:确认Liferay配置中绑定AD的服务账号,是否拥有读取目标AD用户对象
unicodePwd属性的权限,默认AD域普通账号无该属性读取权限,仅域管理员、账号操作员等特权组账号默认持有该权限;同时检查AD域安全策略,是否开启了「禁止读取密码属性」的全局限制,该策略会覆盖账号单独权限配置 - 检查Liferay AD属性映射配置:确认Liferay LDAP配置中,密码字段是否映射到AD的
unicodePwd字段而非userPassword字段,MS AD默认不使用userPassword存储用户密码,所有密码哈希均存放在unicodePwd属性中;同时检查是否开启了Liferay LDAP配置中的「导入密码」开关,部分版本Liferay默认关闭该选项,开启后才会尝试拉取密码属性 - 检查密码导出策略配置:确认AD域是否开启了密码可导出的相关配置,默认AD存储的密码哈希为不可逆加密,且禁止导出,除非提前配置了密码导出策略
解决建议
- 优先采用Liferay AD绑定认证模式而非密码导入模式:无需拉取AD用户密码到本地MySQL,用户登录时Liferay会实时将账号密码提交到AD做认证,认证通过后自动生成本地会话,该模式是Liferay集成AD的官方推荐方案,也符合企业密码不落地的安全规范
- 若业务场景必须要导入密码到本地数据库,可按以下步骤调整:
- 给Liferay绑定的AD服务账号授予
Replicating Directory Changes和Replicating Directory Changes All域级权限 - 在AD域组策略中开启密码导出功能,配置允许该服务账号读取密码哈希
- 将Liferay LDAP配置中的密码属性映射修改为
unicodePwd,开启「导入密码」选项后重启Liferay实例重新测试
- 给Liferay绑定的AD服务账号授予
注意:导入AD用户密码到本地数据库存在较大安全风险,非必要不建议采用该方案
内容的提问来源于stack exchange,提问作者kaisa
相关产品推荐
相关产品推荐

