MSAL 受保护的 API 范围格式

问题描述 投票:0回答:1

当我根据以下内容请求受保护 api 的范围时(省略 api 客户端 ID):

  export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
  const protectedResourceMap = new Map<string, Array<string>>();
  protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);
  protectedResourceMap.set('https://pz-job-tracker-api.azurewebsites.net', ['api://MYGUID/user_impersonation']);

  return {
    interactionType: InteractionType.Redirect,
    protectedResourceMap
  };
}

我收到 401 消息,显示观众“IDX10214:观众验证失败”。受众:'api://MYGUID'。不匹配:validationParameters.ValidAudience:'MYGUID'或validationParameters.ValidAudiences:'null'。'

如果我稍微改变一下我的范围,如下所示:

  export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
  const protectedResourceMap = new Map<string, Array<string>>();
  protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);
  protectedResourceMap.set('https://pz-job-tracker-api.azurewebsites.net', ['MYGUID/user_impersonation']);

  return {
    interactionType: InteractionType.Redirect,
    protectedResourceMap
  };
}

有效!但为什么?我在文档中找不到任何地方说您需要省略客户端 id 的 URI 部分?为什么根据错误消息允许空观众?这一切都是按照 MS 关于简单身份验证的教程进行设置的,其中我的 API 应用程序中没有身份验证代码,全部由 Entra 和 Easy Auth 处理。

active-directory azure-web-app-service azure-ad-msal msal-angular
1个回答
0
投票

在应用服务应用程序中启用 Microsoft Entra ID

始终隐式考虑配置的应用程序(客户端)ID 成为允许的观众。如果您的应用程序代表一个 API 将被其他客户端调用,您还应该添加应用程序 您在应用注册时配置的 ID URI。有一个限制 允许的受众列表中总共 500 个字符。

© www.soinside.com 2019 - 2024. All rights reserved.