Как проверить, входит ли пользователь в группу в Azure AD?
Я написал Python
приложение размещено на Open Shift
,
После входа пользователя в приложение его привилегии определяются на основе членства его группы в Azure Active Directory
,
Как я могу проверить, является ли пользователь частью группы в Azure Active Directory
через мое приложение?
1 ответ
Вы можете вызывать следующие API-интерфейсы Microsoft Graph из своего приложения в зависимости от вашего сценария -
Этот будет полезен, если вы уже знаете группы, в которых вы хотите проверить / утвердить членство.
POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/checkMemberGroups
В теле запроса вы можете указать
groupdIds
т.е. коллекция, содержащая идентификаторы объектов групп, в которых проверяется членство. Можно указать до 20 групп.{ "groupIds": [ "fee2c45b-915a-4a64b130f4eb9e75525e", "4fe90ae065a-478b9400e0a0e1cbd540" ] }
Этот будет полезен, если вы еще не знаете группу и хотите получить все группы, к которым принадлежит этот пользователь.
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, где обсуждается подобное требование. В нем также упоминается рассмотрение ролей приложений для принятия решений об авторизации, поскольку в некоторых случаях это может быть более уместным.