401 Unauthorized - вызов API Azure с аутентификацией AD - PullRequest
1 голос
/ 02 апреля 2020

У меня есть API, размещенный в Azure, с включенной аутентификацией AD. При просмотре URL-адреса он запрашивает аутентификацию, а при вводе учетных данных API работает нормально. Но при вызове API в приложении Postman с методом Get с аутентификацией Basi c и методами аутентификации Oauth2 получается 401 несанкционированная ошибка.

Получены идентификатор клиента, секретный ключ, идентификатор арендатора.

URI приложения в приложении Ad совпадает с URL-адресом веб-приложения без знака "/", заканчивающегося на. Дали вход и разрешение на чтение для API в рекламном приложении.

$.ajax({
    "async": true,
    "crossDomain": true,
    "url": "https://login.microsoftonline.com/tenantID/oauth2/token",
    "method": "POST",
    "headers": {
        "Accept": "*/*",
        "Cache-Control": "no-cache",
        "content-type": "application/x-www-form-urlencoded"
    },
    "data": {
        "grant_type": "client_credentials",
        "client_id ": "********************",
        "client_secret": "********************",
        "scope ": "https://graph.windows.net"
    },
    success: function (response) {
        console.log(response);
        token = response.access_token;
        $.ajax({
            url: "https://azure.azurewebsites.net/api/example",
            type: "GET",
            "async": true,
            "crossDomain": true,
            dataType: "json",
            useDefaultXhrHeader: false,
            headers: {
                "Accept": "*/*",
                "Cache-Control": "no-cache",
                "content-Type": "application/json;odata=verbose",
                "authorization": "Bearer " + response.access_token
            },
            success: function (data) {
                console.log(data);
            }
        });
    }
});

Я что-то пропустил при настройке приложения AD для веб-приложения? Также приведенный выше код предназначен для получения токена доступа и вызова API с использованием этого токена доступа. Буду признателен за любую оказанную помощь.

Заранее спасибо

1 Ответ

0 голосов
/ 06 апреля 2020

Параметры для получения токена доступа неверны. Поскольку вы хотите использовать конечную точку v1.0 для доступа к вашему веб-приложению, вы должны использовать параметр resource вместо scope, и значение должно быть таким же client_id. Кроме того, вы не должны использовать поток учетных данных клиента во внешнем интерфейсе.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...