You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成LDAP的Keycloak强制生效密码过期策略相关问题咨询

核心问题:Keycloak密码过期策略生效方案

你遇到的密码过期规则不生效问题,核心原因是LDAP用户联邦场景下,Keycloak判断密码过期依赖的「密码最近修改时间」没有被持久化同步,配置调整步骤如下:

  1. 先确认Realm侧「安全 > 认证 > 密码策略」中的*密码过期(天)*规则配置正确,数值符合你的预期。
  2. 在LDAP中新增一个自定义时间戳类型字段(例如命名为keycloakPwdLastModified),用于存储密码修改时间。
  3. 回到Keycloak的LDAP用户联邦Mapper配置页,新增一个user-attribute-ldap-mapper:
    • 用户属性字段填passwordLastChanged
    • LDAP属性字段填你刚才新增的LDAP自定义字段
    • 映射方向选择双向同步,读取权重设为高于Keycloak本地存储
  4. 关闭LDAP侧自带的密码过期策略,避免双策略冲突,所有密码规则统一由Keycloak管控即可。
  5. 存量用户如果需要补全密码修改时间,可以调用Keycloak Admin API的GET /{realm}/users/{userId}/credentials接口获取已有密码的创建时间,批量同步到LDAP对应字段即可。

附带问题解答

1. 密码最近修改时间的存储位置

  • Keycloak本地存储在数据库的credential表中,筛选credential_type = 'password'的记录,created_date字段存储的就是密码最近修改的毫秒级时间戳。
  • 管理界面默认不展示该属性,两种查询方式:
    • 调用Admin API:GET /{realm}/users/{userId}/credentials,返回结果中password类型凭证的createdDate即为对应时间
    • 配置对应的用户属性Mapper将该字段映射到用户属性列表,即可在UI的用户详情页直接查看。

2. 是否需要将密码修改时间同步到LDAP

你当前的配置场景下必须同步:你开启了Import Users开关,用户每次登录时Keycloak都会从LDAP拉取最新用户属性覆盖本地缓存,如果密码修改时间只存在Keycloak本地,会在用户下次登录时被清空,导致过期判断逻辑没有时间依据无法触发。

3. 是否需要额外配置密码相关Mapper

必须新增passwordLastChanged对应的用户属性Mapper,你当前已配置的Mapper列表中未覆盖该字段,这就是密码过期规则不生效的核心诱因。密码本身不需要额外配置Mapper,你已开启的Enable the LDAPv3 Password Modify Extended Operation已经可以支持Keycloak向LDAP同步密码变更。


内容的提问来源于stack exchange,提问作者Erick G. Hagstrom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:36:01