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

Azure B2C场景下,如何用MSAL通过Refresh Token为App2获取令牌?

使用MSAL借助外部传入的Refresh Token获取令牌并生成对应Cookie

MSAL没有直接提供“传入外部Refresh Token来获取新令牌并初始化Cookie”的开箱即用方法,但可以通过以下步骤实现和Postman调用/token端点等效的效果:

  • 手动初始化MSAL令牌缓存
    MSAL的acquireTokenSilent依赖内部令牌缓存,你需要把持有的Refresh Token手动注入缓存:

    1. 构造符合MSAL缓存结构的条目,包含refresh_token、client_id、tenant_id、username、权限范围等必要字段(可参考Postman调用/token接口返回的响应字段)。
    2. 调用对应平台MSAL的缓存操作API将条目存入缓存:
      • 前端MSAL.js v2:使用instance.getTokenCache().addRefreshToken()方法,传入构造好的RefreshTokenCacheItem对象;或通过tokenCache.deserialize()直接导入序列化后的缓存数据。
      • 后端.NET MSAL:通过ITokenCache的BeforeAccess事件,手动将Refresh Token写入缓存字典。
  • 调用acquireTokenSilent完成令牌刷新与Cookie生成
    缓存注入Refresh Token后,调用acquireTokenSilent方法,MSAL会自动用该Refresh Token向Azure B2C的/token端点请求新的Access Token和ID Token,同时自动生成MSAL库所需的Cookie(如msal.<client-id>.token系列Cookie)。

  • 关键注意事项

    • 传入的Refresh Token必须与App2的客户端ID匹配,且权限范围符合App2的需求,否则Azure B2C会拒绝请求。
    • 不同平台的MSAL缓存API细节不同,需结合对应语言的官方文档调整缓存注入逻辑。
    • 若对缓存结构不熟悉,可先让App2完成一次正常认证,导出缓存样本后参照格式替换为传入的Refresh Token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:05:22