Авторизация веб-API MSAL отклонена из-за этой ошибки запроса

я получаю сообщение

{    "Message": "Authorization has been denied for this request." }

при попытке использовать API из https://github.com/AzureADQuickStarts/AppModelv2-WebAPI-DotNet как показано на скриншоте почтальона ниже:

введите здесь описание изображения

Я пытаюсь вызвать его из файла js

$.ajax({
    type: "GET",
    url: window.config.webApi + "TodoList/Get",
    headers: {
        'Authorization': 'Bearer ' + accessToken,
    },
}).done(function (data) {
    logMessage("Web APi returned:\n" + JSON.stringify(data));
})
.fail(function (jqXHR, textStatus) {
    logMessage("Error calling the Web api:\n" + textStatus);
});

person Sarabjeet Singh    schedule 15.06.2017    source источник
comment
Можете ли вы опубликовать свой код контроллера WebAPI? Также опубликуйте код вашего запуска класса веб-API   -  person Souvik Ghosh    schedule 15.06.2017
comment
Вам нужно проверить токен доступа в таком сервисе, как jwt.io. Убедитесь, что утверждение аудитории соответствует вашему API.   -  person juunas    schedule 15.06.2017


Ответы (1)


Судя по токену на рисунке, вы получали access_token с учетной записью Microsoft, которую невозможно расшифровать.

Насколько я знаю, в этом сценарии для вызова веб-API, защищенного приложением Azure AD V2.0, мы можем использовать id_token, идентификатор приложения которого совпадает с приложением, которое вы использовали для защиты веб-API. . И если вы отлаживаете код и перехватываете запрос с помощью Fiddler, в упомянутом вами примере кода также используется id_token для отправки запроса на авторизацию.

Пожалуйста, не стесняйтесь, дайте мне знать, если это работает для вас.

person Fei Xue - MSFT    schedule 16.06.2017