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

个人微软账号使用OAuth2认证无法获取JWT访问令牌如何解决

Overview

根本原因

Azure AD针对个人微软账号签发访问令牌时,如果请求的scope对应微软官方服务(比如Microsoft Graph、UserInfo端点的权限),返回的是微软私有加密格式的令牌,仅微软自有服务可识别解析,因此不会是标准JWT格式,自然以EwC而非eyJ开头,无法被自定义JWT校验模块解析。这也是你用该令牌调用微软官方的UserInfo端点可以正常响应,但自有API返回401错误的核心原因。

可行解决方案

  • 第一步:进入你的Azure AD应用注册页面,在「暴露API」板块添加自定义作用域,示例格式为api://<你的应用客户端ID>/access_as_user,按照页面提示完成作用域配置并启用。
  • 第二步:SPA请求访问令牌时,将scope参数指定为你刚才创建的自定义作用域,而非默认的User.Read等微软服务权限。如果你的应用同时需要调用Microsoft Graph和自有API,需要分开两次请求令牌:一次用微软服务的scope获取私有格式令牌用于调用Graph,一次用自有API的scope获取JWT格式令牌用于调用后端接口。
  • 第三步:调整后端API的JWT校验配置,确保aud(受众)校验值匹配你自定义作用域的前缀(即api://<你的应用客户端ID>),iss(签发者)匹配个人账号场景下Azure AD的标准签发地址。

配置完成后获取到的访问令牌就是标准eyJ开头的JWT格式,后端可正常解析校验,不会再返回401错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:18:03