Управление AzureSearch через (Rest) API

Я пытаюсь создать инструмент, который должен масштабировать "Реплики" и "Разделы" компонента поиска Azure. Для этого я прочитал следующую статью от Microsoft:

https://docs.microsoft.com/en-us/rest/api/

Сейчас у меня проблемы с аутентификацией на Azure, чтобы получить AuthToken. Есть ли способ сделать это проще? В качестве альтернативы, у вас есть пример, как это сделать?

Вот пример моего кода:

var clientId = "2aaced54873e4a94b6d5518bc815dcb1";
var redirectUri = new Uri("https://thissucks.search.windows.net");
var resource = "resource"; // What exactly should the value be?

var authContext =
    new AuthenticationContext(
        "https://login.windows.net/ba1cb781739c4cdea71c619ccba914e0/oauth2/authorize", new TokenCache());

var result = authContext.AcquireTokenAsync(resource, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
var result2 = result.Result;

После этого я получаю экран входа Azure. После входа с действительными учетными данными я получаю следующее исключение:

System.AggregateException: "произошла одна или несколько ошибок."

InnerException:

AdalServiceException: AADSTS50001: указанное приложение не найдено в указанном клиенте.
Это может произойти, если приложение не было установлено администратором клиента или не было одобрено каким-либо пользователем в клиенте.
Возможно, вы отправили запрос аутентификации не тому арендатору.

1 ответ

Решение

Итак, в вашем коде есть несколько проблем.

Сначала убедитесь, что вы выполнили действия, описанные здесь: https://docs.microsoft.com/en-us/rest/api. После успешного создания приложения вы должны записать идентификатор клиента этого приложения и использовать его в своем коде.

Далее, пожалуйста, убедитесь, что ba1cb781739c4cdea71c619ccba914e0 это действительно идентификатор арендатора. Вы также можете использовать имя домена Azure AD (something.onmicrosoft.com) вместо этого значения типа GUID. Так что ваш URL будет https://login.windows.net/something.onmicrosoft.com/oauth2/authorize

Наконец, есть проблемы со значениями для следующих параметров:

var redirectUri = new Uri("https://thissucks.search.windows.net");
var resource = "resource"; // What exactly should the value be?

redirectUri это URI, где Azure AD будет перенаправлен после успешной аутентификации пользователя. За Web Applications обычно это URL вашего сайта. Убедитесь, что оно соответствует значению, которое вы указали при создании приложения в Azure AD. Когда Azure AD перенаправляет пользователя на этот URL-адрес, он передает токен JWT в code параметр строки запроса, с помощью которого вы получаете токен доступа / обновления.

resource это ресурс, для которого вы получаете токен. Так как вы хотите получить доступ Resource Manager API, значение здесь должно быть https://management.core.windows.net/,

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