Я пытаюсь получить доступ к защищенному . net core 3.1 Web API через Angular 9 интерфейс . Я использовал пример кода Angular 9 из MSAL Angular репо .
. Я могу успешно войти в систему, используя свои собственные регистрации приложений Azure AD, но при вызове моей конечной точки ( украшенный [Authorize]), я получаю 401 в своем интерфейсе, а также в почтальоне (ожидается).
My Angular Interceptor даже не добавляет токен-носитель в запросе к API, потому что getScopesForEndpoint () возвращает null для запроса:
let scopes = this.auth.getScopesForEndpoint(req.url);
console.log(scopes);
// scopes is null here.
Если я жестко закодирую области видимости в перехватчике следующим образом:
scopes = [
"user.read",
"openid",
"profile",
"api://[My API ID]/weatherforecast"
];
Я получаю эту ошибку:
InteractionRequiredAuthError: AADSTS65001: The user or administrator has not consented to use the
application with ID '[MY APP CLIENT ID]' named '[MY APP]'. Send an interactive
authorization request for this user and resource.
Я следовал этому уроку здесь: Урок , и я настроил Azure AD, чтобы он был очень похож на это. Единственным существенным изменением было то, что я разрешил MutiTenant вместо SingleTenant:
Мое приложение Angular, похоже, не зарегистрировано через API, в соответствии с ошибкой, но я подумал, что это то, что было в Azure AD:
Я пропустил шаг, позволяющий моему приложению позвонить авторизованной конечной точке моего API? Вот пост, очень похожий на настройку, за которой я следовал Related SO Post . Единственное отличие состоит в том, что мой веб-API находится на https://localhost:44381/weatherforecast
вместо развертывания на Azure. Принятый ответ, кажется, не помогает с моим сценарием. Также еще один очень похожий пост здесь: Связанный SO Post 2 , но ответ говорит о проблеме Cors, которая не имеет отношения к делу.