WSO2 Identity Server 5.11 按文档无法找到密码过期配置选项咨询
WSO2 Identity Server 5.11 密码过期功能实现方案
WSO2 IS 5.11版本未内置官方高版本的密码过期可视化配置项,也不兼容新版的password policy authenticator组件,可通过以下内置功能组合实现需求:
1. 启用密码过期事件配置
编辑配置文件 IS_HOME/repository/conf/identity/identity-event.properties,修改以下参数:
- 开启密码过期事件监听器:
event.listener.passwordExpiry.enable=true - 设置密码有效天数(可根据业务调整):
password.expiry.days=90 - 可选:开启密码过期前提醒,设置提前提醒天数:
password.expiry.reminder.enable=truepassword.expiry.reminder.days=7
2. 开启密码时间戳声明
登录WSO2 IS管理控制台,按路径操作:用户和角色 → 声明 → 选择http://wso2.org/claims声明集 → 找到「上次密码更改时间戳」选项,勾选支持、由管理员读取/编辑,保存配置。该字段会在用户每次修改密码时自动更新时间戳。
3. 配置认证强制跳转逻辑
进入身份提供商 → Resident → 登录与注册配置 → 自适应认证设置,给需要启用密码过期校验的应用添加如下认证判断脚本:
function onLoginRequest(context) { const currentUser = context.currentKnownUser; if (!currentUser) { executeStep(1); return; } // 获取用户上次改密码时间戳 const lastPwdChange = parseInt(currentUser.localClaims['http://wso2.org/claims/lastPasswordChangedTimestamp']); // 和步骤1配置的有效天数保持一致 const expiryDays = 90; const expiryTime = lastPwdChange + (expiryDays * 24 * 60 * 60 * 1000); // 密码已过期,强制跳转密码修改页 if (Date.now() > expiryTime) { sendPasswordReset(context); return; } // 密码未过期,继续正常认证流程 executeStep(1); }
4. 生效验证
修改完所有配置后重启WSO2 IS实例,创建测试账号并将其「上次密码更改时间戳」设置为超过有效天数的历史值,登录测试即可验证自动跳转逻辑是否正常。
注意事项
- 若使用自定义外部用户存储,需自行配置用户改密码时同步更新
lastPasswordChangedTimestamp字段的逻辑 - 密码修改页面可自行修改
IS_HOME/repository/deployment/server/webapps/authenticationendpoint/下的前端文件自定义样式
内容的提问来源于stack exchange,提问作者Pragati
相关产品推荐
相关产品推荐

