Как проверить, входит ли пользователь в группу в Azure AD?

Я написал Python приложение размещено на Open Shift,

После входа пользователя в приложение его привилегии определяются на основе членства его группы в Azure Active Directory,

Как я могу проверить, является ли пользователь частью группы в Azure Active Directory через мое приложение?

1 ответ

Вы можете вызывать следующие API-интерфейсы Microsoft Graph из своего приложения в зависимости от вашего сценария -

  1. Проверьте группы участников

    Этот будет полезен, если вы уже знаете группы, в которых вы хотите проверить / утвердить членство.

     POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/checkMemberGroups 
    

    В теле запроса вы можете указать groupdIdsт.е. коллекция, содержащая идентификаторы объектов групп, в которых проверяется членство. Можно указать до 20 групп.

     {
      "groupIds": [
           "fee2c45b-915a-4a64b130f4eb9e75525e",
           "4fe90ae065a-478b9400e0a0e1cbd540"
       ]
     }
    
  2. пользователь: 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, где обсуждается подобное требование. В нем также упоминается рассмотрение ролей приложений для принятия решений об авторизации, поскольку в некоторых случаях это может быть более уместным.

Другие вопросы по тегам