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

Angular中使用MSAL-Auth规避MS Graph依赖的配置方法

解决MSAL-Auth规避MS Graph的方案

一、移除MS Graph相关权限配置

你代码里authRequest中的scopes: ['user.read']是MS Graph专属权限,这是系统依赖MS Graph的核心原因,直接替换为自己业务API的权限:

MsalModule.forRoot( new PublicClientApplication(msalConfig),{
  interactionType: InteractionType.Redirect,
  authRequest: {
    // 替换为你自己API的权限,格式一般为 api://{你的客户端ID}/{自定义权限名}
    scopes: ['api://your-client-id/your-custom-scope']
  }
}, {
  // 保留其他配置
})

二、正确配置protectedResourceMap

这个配置用于告诉MSAL拦截器,哪些API请求需要附加令牌及对应权限,务必只配置自身业务域名,完全避开MS Graph:

protectedResourceMap: new Map([
  // 域名需写完整(如https://your-api-domain.com),避免模糊匹配到无关地址
  ['https://your-api-domain.com', [
    'api://your-client-id/all.scope',
    {
      httpMethod: 'GET',
      scopes: ['api://your-client-id/read.scope']
    },
    {
      httpMethod: 'POST',
      scopes: ['api://your-client-id/info.scope']
    }
  ]]
])
  • 注意事项:
    • 域名必须精准,防止误匹配到MS Graph的域名(如graph.microsoft.com)
    • 所有权限都使用自身API的标识符,绝对不能包含MS Graph相关的scope

三、排查后台的MS Graph依赖

即使前端无MS Graph代码,后台仍可能存在隐性依赖,常见情况及解决方法:

  • 后台使用微软身份验证SDK默认配置,自动拉取MS Graph数据:关闭默认配置,直接从令牌的JWT声明中提取用户信息(如name、email、oid等字段)
  • 后台验证令牌时调用MS Graph:改用Azure AD的OIDC元数据端点(https://login.microsoftonline.com/{租户ID}/v2.0/.well-known/openid-configuration)获取公钥,本地验证令牌签名与有效性,无需调用MS Graph
  • 后台中间件配置了默认用户信息拉取策略:检查并移除相关配置,改用本地令牌解析逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:21:24