Вы можете вызывать следующие API-интерфейсы Microsoft Graph из своего приложения в зависимости от вашего сценария -
Проверка групп участников
Это будет полезно, если вы уже знаете группы, в которых вы хотите проверить / утвердить членство.
POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/checkMemberGroups
В теле запроса вы можете указать groupdIds
, т. Е. Коллекцию, содержащую идентификаторы объектов групп, в которых проверяется членство. Можно указать до 20 групп.
{
"groupIds": [
"fee2c45b-915a-4a64b130f4eb9e75525e",
"4fe90ae065a-478b9400e0a0e1cbd540"
]
}
пользователь: getMemberGroups
Это будет полезно, если вы еще не знаете группу и хотите получить все группы, к которым принадлежит этот пользователь.
POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/getMemberGroups
Вы также можете разрешить вход групповых заявок в качестве маркера доступа для вашего приложения, отредактировав манифест приложения (это можно сделать непосредственно на портале Azure) и установив для свойства "groupMembershipClaims"
значение "All"
или "SecurityGroup"
по мере необходимости.
Однако с groupMemembershipClaims есть одна загвоздка: этот токен не всегда присутствует во всех группах, членом которых является пользователь. В случае, если пользователь является членом слишком большого количества групп (AFAIK это 6 или более), вы получите только заявление о превышении показателя, например hasGroups
, сообщающее, что пользователь является частью многих групп, и вам нужно вызвать graph api, чтобы получить список все группы. Вот почему я выделил соответствующий Microsoft Graph API.
Вот пример приложения, которое выполняет авторизацию на основе групповых утверждений. Он использует .NET 4.5 MVC, C #, но концепции одинаковы -
Авторизация в веб-приложении с использованием групп и утверждений Azure AD
Вот еще один SO Post , где обсуждается аналогичное требование. В нем также упоминается рассмотрение ролей приложений для принятия решений об авторизации, поскольку в некоторых случаях это может быть более уместным.