Конечная точка безопасности Graph, генерирующая HTTP 403 с ADALJS - PullRequest
1 голос
/ 23 апреля 2019

Попытка создать клиентское приложение с помощью Microsoft Graph Security API .

Мы предоставили гранты на портале Azure, получили согласие администратора, и JWT показываетобласти действия присутствуют (фрагмент ниже):

"scp": "Calendars.Read MailboxSettings.Read offline_access People.Read profile SecurityEvents.Read.All SecurityEvents.ReadWrite.All User.Read User.Read.All",

Вот как мы запрашиваем токен:

// acquire token for ms graph. the service we're acquiring a token for 
// should be the same service we call in the ajax request below
authContext.acquireToken('https://graph.microsoft.com', (error, token) => {
    // Handle ADAL Error
    if (error || !token) {
        printErrorMessage('ADAL Error Occurred: ' + error);
        return;
    }

    this.token = token; //update our data with the token
});

Но когда мы попадаем на конечную точку с помощью веб-вызова, мывсе еще получаю 403 без данных:

$.ajax({
    type: "GET",
    url: "https://graph.microsoft.com/v1.0/security/alerts",
    headers: {
        'Authorization': 'Bearer ' + this.token,
    }
}).done(async (data) => {
    console.log(data);
}).fail(() => {
    console.log('Error getting top 10 people!');
});

И вот основная ошибка (через Почтальона):

{
  "error": {
    "code": "UnknownError",
    "message": "Auth token does not contain valid permissions or user does not have valid roles.",
    "innerError": {
      "request-id": "6411dbc9-eebb-4522-b789-62ab5f754d0c",
      "date": "2019-04-23T15:17:12"
    }
  }
}

Редактировать: пользователь, обращающийся к приложению, имеет "Безопасностьчитатель "Справочник роль прилагается.

directory_role

Любая помощь будет принята с благодарностью.:)

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Похоже, что ваше приложение имеет правильные области действия, но пользователь, запрашивающий предупреждения из API безопасности Microsoft Graph, не имеет роли Security reader в Azure AD.

Чтобы добавить роли пользователям, войдите на портал Azure в качестве администратора клиента, затем выберите Azure Active Directory blade-сервер> Users>, выберите имя пользователя> Directory Role> и затем выберите Add role.

Как только пользователь получит доступ к информации о безопасности, он сможет получать оповещения через API безопасности Microsoft Graph.

Источник: https://docs.microsoft.com/graph/security-authorization#assign-azure-ad-roles-to-users

0 голосов
/ 07 мая 2019

Я работал за кулисами с некоторыми ресурсами MS DEV, и мы считаем, что мы выяснили, почему это не работает.

Взято из электронного письма:

Неявное предоставление через AAD по умолчанию использует response_mode = фрагмент.После изменения режима ответа на response_mode = form_post токен id и токен доступа, если требуется, отправляются как POST-запрос и содержат утверждение wids, позволяющее использовать конечные точки безопасности Graph API.

Обходной путьбыло предложено в основном создать приложение на стороне сервера, которое будет перехватывать POST-запрос с ролями, а затем использовать его для вызова API безопасности Graph.

Это работает, но в основном означает неявные приложения на стороне клиента потока.по существу несовместимы с Graph Secuirty API.Супер расстраивает и чрезвычайно трудно отследить из документации.

Надеюсь, есть какой-то другой механизм, который может придумать MS.

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