У меня есть веб-API в Azure, для которого требуется авторизация, и я использую Azure AD для аутентификации учетных записей и создания токенов доступа.
Я могу успешно получить токены доступа из Azure AD с помощью ADAL для одной и той же учетной записи двумя различными способами, но только один из них авторизуется через web-api, а другой отказывает.
Следующее аутентифицирует учетную запись в интерактивном режиме, и токен авторизуется web-api
result = AuthenticationContext.AcquireTokenAsync(resource, clientId, redirectUri, new PlatformParameters(PromptBehavior)).Result;
где ресурс - это идентификатор приложения web-api (guid).
Ниже приводится аутентификация учетной записи неинтерактивно с заданным именем пользователя и паролем, но токен не авторизован веб-интерфейсом
UserPasswordCredential cred = new UserPasswordCredential(userName, password);
result = AuthenticationContext.AcquireTokenAsync(resource, clientId, cred).Result;
где ресурс = https://{tenant}/{api имя}.
Вызов веб-API выглядит следующим образом:
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
HttpResponseMessage response = await httpClient.GetAsync(ApplicationCallUri);
Оба способа возвращают идентичные объекты AuthenticationResult (кроме токенов и меток времени), и я не могу понять, почему авторизация не удалась для второго.
Ответ web-api: «В этом запросе отказано в авторизации».
Поскольку аутентификация проходит успешно в обоих направлениях, я предполагаю, что она должна быть на стороне веб-API. Помощь очень ценится. Спасибо.