Как проверить, входит ли пользователь в группу в Azure AD? - PullRequest
0 голосов
/ 11 января 2019

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

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

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

1 Ответ

0 голосов
/ 11 января 2019

Вы можете вызывать следующие 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 Post , где обсуждается аналогичное требование. В нем также упоминается рассмотрение ролей приложений для принятия решений об авторизации, поскольку в некоторых случаях это может быть более уместным.

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