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

MSAL Angular登录返回Ew开头非JWT令牌问题求助

解决方案:获取JWT格式Graph令牌或通过OnBehalfOf流程初始化Graph Client

你拿到的Ew开头的令牌是Azure AD专属的访问令牌(非JWT格式),仅能用于Azure AD内部端点(如令牌刷新、用户信息查询),无法直接调用Microsoft Graph API。以下是两种可行的解决路径:

一、直接获取JWT格式的Microsoft Graph Bearer令牌

要拿到可用于Graph API的JWT令牌,需修正MSAL配置和请求逻辑:

  1. 明确指定Graph权限范围
    在调用MSAL的令牌获取方法(acquireTokenPopup/acquireTokenRedirect)时,必须传入Microsoft Graph的具体权限,而非默认通用范围。例如你在Azure注册的权限是User.Read、Mail.Read,请求代码应改为:
    const tokenRequest = {
      scopes: ["https://graph.microsoft.com/User.Read", "https://graph.microsoft.com/Mail.Read"]
      // 简写形式也支持:["User.Read", "Mail.Read"](MSAL会自动补全Graph前缀)
    };
    
    msalInstance.acquireTokenPopup(tokenRequest)
      .then(res => {
        // 此处返回的accessToken即为JWT格式,可直接用于Graph Client
        console.log(res.accessToken);
      })
      .catch(err => console.error(err));
    
  2. 验证Azure应用注册配置
    • 确认添加的是Microsoft Graph的委托权限(而非其他API权限);
    • 若权限需要管理员同意(如Mail.ReadWrite等),需在Azure门户完成管理员同意操作;
    • SPA的重定向URI需与代码中redirectUri完全一致(含协议、端口、路径)。

二、通过OnBehalfOfCredential初始化Graph Client(后端中转场景)

若业务需要通过后端API中转调用Graph,可采用On-Behalf-Of流程:

  1. 配置后端应用注册
    • 为后端企业应用添加Microsoft Graph的委托权限(如User.Read),并完成管理员同意;
    • 在后端应用的“API权限”中,添加SPA应用暴露的API权限(需先在SPA应用注册中配置“暴露API”,设置自定义范围如access_as_user)。
  2. SPA请求后端API的JWT令牌
    修改MSAL的scope为后端API的暴露范围,例如:
    const backendTokenRequest = {
      scopes: ["api://backend-client-id/access_as_user"]
    };
    // 获取针对后端API的JWT令牌,传给后端
    
  3. 后端使用OnBehalfOfCredential初始化Graph Client
    在.NET代码中,用SPA传来的JWT令牌作为用户断言,初始化Graph Client:
    using Azure.Identity;
    using Microsoft.Graph;
    
    var oboCredential = new OnBehalfOfCredential(
        tenantId: "你的租户ID",
        clientId: "后端应用ClientID",
        clientSecret: "后端应用ClientSecret",
        userAssertionToken: "SPA传来的JWT令牌");
    
    var graphClient = new GraphServiceClient(oboCredential, new[] { "User.Read", "Mail.Read" });
    

注意:Ew开头的令牌无法直接作为OnBehalfOf流程的用户断言,必须使用针对后端API的JWT格式令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:32:50