Неверная версия токена доступа (ожидание V2, получено V1)

Я пытаюсь зарегистрировать пользователей из каталога Azure Active Directory с помощью @azure / msal-angular, чтобы быть более точным, я попробовал следующий учебник

Это изменения, которые я внес в проект

      export function MSALInstanceFactory(): IPublicClientApplication {
  return new PublicClientApplication({
    auth: {
      clientId: 'my_real_client_id,
      redirectUri: 'http://localhost:4200',
      authority: 'https://login.microsoftonline.com/my_real_tenant_id',
      postLogoutRedirectUri: '/'
    },
    cache: {
      cacheLocation: BrowserCacheLocation.LocalStorage,
      storeAuthStateInCookie: isIE, // set to true for IE 11
    },
    system: {
      loggerOptions: {
        loggerCallback,
        logLevel: LogLevel.Info,
        piiLoggingEnabled: false
      }
    }
  });
}

  export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
  const protectedResourceMap = new Map<string, Array<string>>();
  protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);
  protectedResourceMap.set('http://localhost:5000/', ['profile']);

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

Проблема в том, что MsalInterceptor добавляет токен V1 к URL-адресу для запроса к моему API, который ожидает V2.

Azure настроен на accessTokenAcceptedVersion: 2.

При необходимости я могу предоставить дополнительную информацию

1 ответ

Несмотря на то, что вы решили проблему, я хотел бы уточнить некоторые детали.

На самом деле это не разрешения «user.read» и «профиль» требуют V1 accessToken. Настоящая причина в том, что:

Версии токенов доступа определяются конфигурацией вашего приложения/API в манифесте. Вы должны изменить часть манифеста accessTokenAcceptedVersion на 2, если вам нужен токен доступа V2. Это также является причиной того, что вы не можете контролировать, какую версию токена доступа вы получите из своего клиентского приложения при запросе токена доступа.

Мы не можем изменить accessTokenAcceptedVersionсо стороны Microsoft Graph.

Таким образом, вывод состоит в том, что токен доступа для MS Graph всегда является токеном доступа V1.

Другие вопросы по тегам