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

如何使用MSAL Python获取V2类型令牌?

解决MSAL Python获取V2令牌时Issuer不符合预期的问题
  • 确认Authority参数格式
    V2端点的Authority必须带/v2.0后缀,格式应为https://login.microsoftonline.com/{tenant-id-or-name}/v2.0。检查你环境变量AUTHORITY是否符合该格式,不带v2.0的话,MSAL会默认使用V1端点,返回的令牌Issuer就是https://sts...开头的V1格式。如果使用通用租户(common/consumers/organizations),也要加上后缀,比如https://login.microsoftonline.com/common/v2.0。

  • 规范Scope的格式
    V2令牌的scope需采用资源标识符+权限的格式,比如["https://graph.microsoft.com/User.Read"]或["https://graph.microsoft.com/.default"],不能使用V1风格的纯resource字符串。确保你的scopes变量符合V2规范。

  • 清理不必要的参数
    如果你的场景不是External ID自定义域名,移除oidc_authority参数,该参数会干扰默认的Authority处理逻辑,可能导致切换到V1端点。仅保留正确格式的authority参数即可。

  • 验证应用注册的权限模型
    除了修改accesstokentype为V2,还要确认应用注册使用的是V2权限模型。在Azure门户的应用注册页面,检查“API权限”中添加的是否为V2类型权限(比如Microsoft Graph的Delegated权限,权限标识为User.Read而非V1的https://graph.microsoft.com/user.read)。

  • 强制刷新令牌缓存
    若之前通过V1端点获取过令牌,缓存中可能残留旧令牌。可以清空global_token_cache,或者在调用acquire_token_by_username_password时添加force_refresh=True参数强制获取新令牌:

result = global_app.acquire_token_by_username_password(
    os.getenv("USERNAME"), 
    password, 
    scopes=scopes,
    force_refresh=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:59:53