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

原生安卓使用MSAL对接Azure AD B2C重置密码后重启应用报错如何解决

错误根因

该报错是Azure AD B2C多用户流场景下的典型令牌匹配问题:密码重置操作走的是B2C_1_PasswordReset用户流,MSAL会将该流下发的刷新令牌(refresh token)存入本地缓存。后续应用静默申请令牌时,默认调用的是B2C_1_SignInSignUp用户流的接口端点,两个用户流的令牌不互通,缓存的重置流刷新令牌和请求的登录流端点不匹配,就会抛出该异常。

解决方案
  • 重置完成后主动切换登录流获取令牌
    密码重置流程结束跳转回应用时,不要直接使用重置流返回的令牌,立即调用signIn接口走B2C_1_SignInSignUp用户流,引导用户用新密码完成一次登录,拿到登录流对应的访问令牌和刷新令牌存入本地,从根源避免后续静默请求用错令牌。
  • 新增异常捕获处理分支
    在静默获取令牌的逻辑中增加异常捕获,当捕获到MsalUiRequiredException且错误信息包含AADB2C90088时,直接清除MSAL本地缓存的所有令牌,强制触发B2C_1_SignInSignUp用户流的交互式登录,让用户重新认证获取匹配的令牌。
  • 统一MSAL配置的默认用户流
    在安卓项目的auth_config_b2c.json配置文件中,将默认用户流指定为B2C_1_SignInSignUp,所有静默令牌请求默认走登录流端点,避免误调用重置流的端点发起请求。
  • 合并用户流从根源避免冲突
    如果业务流程允许,无需单独创建passwordReset用户流,直接在SignInSignUp用户流中开启自助密码重置功能即可。用户在登录页点击「忘记密码」就可以直接完成密码重置,全程在同一个用户流内完成,不存在跨流令牌不匹配的问题。

内容的提问来源于stack exchange,提问作者I'm Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:01