Microsoft Graph - почему разрешение / область действия Group.ReadWrite.All может выполнять PATCH для свойств профиля пользователя?

Инструмент: почтальон

  1. Создано рекламное приложение Azure, которому предоставлено разрешение Group.ReadWrite.All только для приложения для приложения Microsoft Graph, приложение имеет стандартные разрешения делегирования как «Вход и чтение профиля пользователя в приложении Windows Azure Active Directory».
  2. Запрошенный токен для api графика AzureAD в конечной точке https://login.windows.net/ с параметром ресурса "https://graph.windows.net ", используя потоки предоставления учетных данных клиента;
  3. Получил токен обратно
  4. Использовал токен и выполнил GET для пользователя OK
  5. Выполнил ПАТЧ для пользователя (модификация прошла успешно с HTTP-кодом 204);

Мне это кажется очень странным, почему приложение могло делать patch для пользователя в лазурном объявлении, когда приложение предоставляется только Group.ReadWrite.All в Microsoft Graph API?


person Maqsood Ali Bhatti - bElaie.    schedule 01.01.2017    source источник
comment
Не могли бы вы взглянуть на токен доступа, который вы получаете обратно? Используйте JWT-декодер, например jwt, calebb.net, и обновите свой пост, включив в него значение утверждения ролей. Для этого могла быть другая причина ... Используя AAD PowerShell, можете ли вы посмотреть, чтобы увидеть членов роли авторов каталогов? Возможно ли, что вы добавили в эту роль субъекта-службы (представляющего ваше приложение)?   -  person Dan Kershaw - MSFT    schedule 01.01.2017
comment
Только что проверил токен в декодере Jwt, доступного appRole calim нет. Я бы проверил роль автора каталогов и обновил этот комментарий.   -  person Maqsood Ali Bhatti - bElaie.    schedule 02.01.2017
comment
@ DanKershaw-MSFT --- это странно, я только что посмотрел на роль каталога из PowerShell (Get-MsolRoleMember -RoleObjectId), и я вижу, что приложение является членом роли Directory Writer, но это могло быть правильным, поскольку Group.ReadWrite. Всем была бы назначена эта роль. Я на правильном пути?   -  person Maqsood Ali Bhatti - bElaie.    schedule 02.01.2017
comment
Ваше приложение не будет добавлено к роли Directory Writer как часть настройки вашего приложения для требования Group.ReadWrite.All. Похоже, вы не согласились с приложением (или вы увидите заявление о ролях в токене). На каком портале вы зарегистрировали свое приложение? Это недавно зарегистрированное приложение? Также есть ли вероятность, что вы вручную добавили приложение к этой роли?   -  person Dan Kershaw - MSFT    schedule 02.01.2017
comment
@ DanKershaw-MSFT - это недавно зарегистрированное приложение, которое было зарегистрировано с помощью нового портала Azure, вошедшего в систему как учетная запись администратора. Я совершенно уверен, что я не добавлял это приложение к этой роли вручную. Я бы пошел и посмотрел, смогу ли я воспроизвести то же поведение с другим новым приложением.   -  person Maqsood Ali Bhatti - bElaie.    schedule 02.01.2017
comment
Спасибо. Я отправил ответ. Другой вопрос - есть ли причина, по которой вы используете AAD Graph API против Microsoft Graph? Прочтите dev.office.com/blogs/microsoft-graph- или-azure-ad-graph, чтобы получить подробную информацию о нашей дорожной карте для Microsoft Graph.   -  person Dan Kershaw - MSFT    schedule 03.01.2017
comment
@ DanKershaw-MSFT --- Провел здесь дополнительное расследование. Создал новое рекламное приложение Azure на классическом портале, добавил разрешения приложения Microsoft Graph на чтение и запись для всех групп в моем приложении. Полученный токен как client_credentials предоставляет поток, определяющий область graph.microsoft.com/Group.ReadWrite.All, получен токен, выполнено GET для групп graph.microsoft.com/v1.0/groups?$filter=groupTypes/, но я получаю следующую ошибку: код: Authorization_RequestDenied, сообщение: недостаточно прав для завершения операции.,   -  person Maqsood Ali Bhatti - bElaie.    schedule 04.01.2017
comment
определил область как Group.ReadWrite.All, тогда я смог успешно выполнить GET и PATCH для групп, но обновление Owner для группы дает мне ту же ошибку {error: {code: Authorization_RequestDenied, message: Недостаточно прав для завершения операция., innerError: {идентификатор-запроса: d216c7af-99a5-4baf-9dec-4e20408a4387, date: 2017-01-04T09: 18: 52}}} в токене jwt. Я могу очистить список ролей требований: [Group.ReadWrite. All], URL-адрес PATCH для владельца группы: graph.microsoft.com/v1.0/groups/‹ id ›/ owner / $ ref   -  person Maqsood Ali Bhatti - bElaie.    schedule 04.01.2017
comment
Согласно документации graph.microsoft.io/en -us / docs / api-reference / v1.0 / api /, в нем говорится, что для выполнения этого API требуется одна из следующих областей: Group.ReadWrite.All или Directory.ReadWrite.All или Directory.AccessAsUser. Все, но указание Group.ReadWrite.All не помогает!   -  person Maqsood Ali Bhatti - bElaie.    schedule 04.01.2017
comment
@ DanKershaw-MSFT - Я разобрался. Похоже, что когда вы добавляете разрешение приложения Windows Azure Active Directory как чтение и запись данных каталога, портал Azure Ad добавляет приложение servicePrincipal в роли администратора каталогов и PATCH при добавлении владельца. Удаление разрешений Чтение и запись данных каталога, портал Azure Ad не удаляет приложение servicePrincipal из роли модуля записи каталогов !!!!!   -  person Maqsood Ali Bhatti - bElaie.    schedule 04.01.2017
comment
Извините - я действительно изо всех сил пытаюсь это понять. Мне не удалось воспроизвести ваш исходный отчет (я создал приложение на новом портале и не смог обновить пользователей). У нас может быть ошибка для владельца обновления в документации. Возможно, вам понадобится иметь возможность читать пользователей, чтобы обновить владельца (в конце концов, вам нужно заставить пользователя обновить владельца).   -  person Dan Kershaw - MSFT    schedule 08.01.2017
comment
@ DanKershaw-MSFT - 2 вещи A) Неверная документация, B) Портал Azure добавляет приложение к роли Directory Writer, но не удаляет эту роль; См. Подробности в моих последних комментариях в разделе «Ответ»: вот почему я подумал, что создал эту тему здесь.   -  person Maqsood Ali Bhatti - bElaie.    schedule 10.01.2017


Ответы (2)


Мы работаем над возможностью использования нового портала Azure для «согласия / утверждения» приложения в вашем клиенте. А пока вам нужно будет выполнить последний шаг в инструкциях, прилагаемых к этому образцу приложения (чтобы разрешить приложение): https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console. После этого вы должны увидеть утверждение «роли» в токене доступа (содержащем Group.ReadWrite.All).

Другая проблема, о которой вы сообщаете (похоже, ваше приложение было добавлено к роли Directory Writers, что позволяет вашему приложению выполнять больше, чем просто групповые манипуляции) - это потребует дополнительного расследования, так как этого не должно происходить. Отчитаюсь.

Надеюсь это поможет,

person Dan Kershaw - MSFT    schedule 03.01.2017
comment
Здесь есть две проблемы; ‹Br/› Проблема № 1) Неверный документ для добавления владельца graph.microsoft.io/en-us/docs/api-reference/v1.0/api/ (Для выполнения этого API требуется одна из следующих областей: Group.ReadWrite.All или Directory. ReadWrite.All или Directory.AccessAsUser.All), для этого требуются как Directory.ReadWrite.All, так и Group.ReadWrite.All, проблема № 2) Портал Azure AD не удаляет субъект-службу приложения из роли Directory Writer, если вы удаляете каталог для чтения и записи. разрешение данных из приложения Windoes AzureAD. - person Maqsood Ali Bhatti - bElaie.; 04.01.2017
comment
Более того, разрешение приложения для Microsoft Graph Чтение и запись данных каталога также не работало. Работали только разрешения для Windows Azure Active Directory Чтение и запись данных каталога. - person Maqsood Ali Bhatti - bElaie.; 04.01.2017

Здесь есть две проблемы;

Проблема №1) Неверный документ для добавления владельца graph.microsoft.io/en-us/docs/api-reference/v1.0/api/… (Для выполнения этого требуется одна из следующих областей API: Group.ReadWrite.All или Directory.ReadWrite.All или Directory.AccessAsUser.All), для этого требуются как Directory.ReadWrite.All, так и Group.ReadWrite.All,

Проблема № 2) Портал Azure AD не удаляет субъект-службу приложения из роли модуля записи каталогов при удалении разрешения «Чтение и запись данных каталога» из приложения Windows AzureAD.

person Maqsood Ali Bhatti - bElaie.    schedule 09.01.2017