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

如何在生成刷新令牌时触发Azure AD B2C自定义策略API连接器

解决Azure AD B2C无需重新登录更新令牌声明的问题

背景

应用基于Azure AD B2C实现用户注册/登录,流程如下:

  • 用户登录时与Azure AD B2C交互完成身份验证
  • 验证通过后生成包含用户声明的id_token,存储在浏览器本地存储维持会话
  • 登录、注册阶段通过API连接器调用自定义后端API,为令牌添加productId等自定义声明

当前问题:用户登录后购买产品,原有id_token中的productId声明未同步更新,且需要实现无需用户重新登录即可生成含最新声明的新令牌。

可行方案

1. 利用Refresh Token静默刷新令牌

通过Azure AD B2C的令牌刷新流程,在后台获取更新后的id_token:

  • 确保登录时获取并保存refresh_token(默认Azure AD B2C在授权流程中会返回该令牌)
  • 构造POST请求到B2C令牌端点,参数示例:
    grant_type=refresh_token
    client_id=你的应用客户端ID
    refresh_token=用户当前的refresh_token
    scope=openid offline_access
    response_type=id_token
    
  • 成功响应后,将新的id_token替换本地存储中的旧令牌,新令牌会包含通过API连接器获取的最新productId声明

2. 创建自定义"声明刷新"用户旅程

在Azure AD B2C中配置专门的用户旅程,用于静默更新用户声明:

  • 设计用户旅程,仅包含API连接器调用步骤(无需用户交互),用于拉取最新的productId等声明
  • 使用id_token_hint参数触发该用户旅程,实现无感知的声明更新
  • 配置应用权限,允许调用该用户旅程的授权端点

3. 后端动态获取最新数据(替代令牌更新)

若业务场景允许,可调整验证逻辑,不依赖令牌中的静态声明:

  • 后端处理请求时,直接从业务数据库查询用户最新的产品信息,而非读取id_token中的productId
  • 此方式无需更新令牌,能保证数据实时性,适合对声明实时性要求高的场景

关键注意点

  • 合理配置refresh_token的有效期,避免频繁过期导致用户被迫重新登录
  • 静默刷新需处理错误情况(如refresh_token过期),此时需引导用户重新登录
  • 自定义用户旅程需做好权限控制,防止未授权的声明更新请求

内容的提问来源于stack exchange,提问作者gANDALF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:37:52