WSO2 Identity Server 6.1.0首次登录强制改密码配置咨询
在WSO2 Identity Server 6.1.0中实现首次登录强制修改密码
可以直接实现,无需借助重置密码功能模拟,WSO2 IS 6.1.0内置了相关支持,以下是两种可行的配置方案:
方案一:用身份验证脚本触发强制改密
这是最灵活的方式,通过自定义脚本判断用户是否首次登录,再引导至密码修改页面。
创建身份验证脚本
- 登录WSO2 IS管理控制台,进入「主菜单 > 身份验证 > 脚本」,点击「添加脚本」
- 脚本类型选
Authentication Script,命名为ForceFirstLoginPasswordChange - 粘贴以下脚本逻辑:
function onLoginRequest(context) { const user = context.currentKnownUser; const isFirstLogin = user.getClaim('http://wso2.org/claims/identity/firstLogin'); // 首次登录时该Claim默认值为true if (isFirstLogin === 'true') { // 标记为已触发过首次登录,避免循环 user.setClaim('http://wso2.org/claims/identity/firstLogin', 'false'); // 先完成基础登录,再触发改密步骤 executeStep(1, { onSuccess: function (ctx) { const stepConfig = { step: 2, authenticator: 'basic', options: { forceAuth: true, prompt: 'changePassword' } }; ctx.addStep(stepConfig); } }); } else { // 正常走登录流程 executeStep(1); } } - 保存脚本
绑定脚本到目标应用
- 进入「主菜单 > 应用程序 > 服务提供者」,选中需要启用该功能的应用
- 进入对应协议的配置页面(比如「SAML2 Web SSO配置」或「OAuth2/OpenID Connect配置」),点击「编辑」
- 在「高级配置 > 身份验证脚本」中选择刚创建的脚本,保存配置
方案二:通过身份验证序列配置改密步骤
无需写代码,直接通过可视化配置序列实现:
创建自定义身份验证序列
- 进入「主菜单 > 身份验证 > 序列」,点击「添加序列」,命名为
FirstLoginPasswordChangeSeq - 添加第一步:选择
Basic Authenticator(或你使用的登录认证器),勾选「标记为可选」 - 添加第二步:选择
Password Reset Authenticator,配置条件为http://wso2.org/claims/identity/firstLogin equals true,并勾选「跳过后续步骤」
- 进入「主菜单 > 身份验证 > 序列」,点击「添加序列」,命名为
关联序列到服务提供者
- 进入目标服务提供者的「入站认证配置」,在「身份验证序列」中选择刚创建的序列,保存即可
验证效果
- 创建新用户(默认
firstLoginClaim值为true) - 使用该用户登录绑定的应用,会自动跳转到密码修改页面,完成修改后才能进入应用
- 再次登录时,不会重复触发改密流程
注意事项
- 若用户的
firstLoginClaim被手动修改过,需确保其值为true才能触发首次登录改密 - 使用OAuth2/OIDC协议时,需确认服务提供者的回调URL配置正确,避免改密后跳转失败
内容的提问来源于stack exchange,提问作者tentoten
相关产品推荐
相关产品推荐

