.Net Core Azure AD Cloud, как войти в систему пользователя и получить доступ к его группам безопасности Azure AD, чтобы определить, входят ли они в группу - PullRequest
1 голос
/ 18 апреля 2019

Azure AD Cloud, как войти в систему пользователя и получить доступ к его группам безопасности Azure AD, чтобы определить, входят ли они в группу? Я использовал WindowsIdentity для получения этой информации в прошлом, когда у нас была AD, но она не работает для облака Azure AD. Как я могу получить информацию о пользователях и всех группах безопасности, в которые они входят? Я заблудился о том, как это сделать. Я потратил много времени, пытаясь найти ответы, но не повезло.

1 Ответ

1 голос
/ 26 апреля 2019

Есть два возможных способа сделать это:

  1. Использование соответствующих API-интерфейсов Microsoft Graph для запроса информации о группе

    Вот параAPI, которые кажутся релевантными (вы также можете найти и другие)

    Проверка групп участников - эта информация будет полезна, если вы уже знаете набор групп, которые хотите проверить / подтвердить членствопротив уже известного списка групп и принять некоторые решения.

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

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

     {
      "groupIds": [
           "fee2c45b-915a-4a64b130f4eb9e75525e",
           "4fe90ae065a-478b9400e0a0e1cbd540"
       ]
     }
    

    user: getMemberGroups - эта информация будет полезна, если вы хотите получить все группы, к которым принадлежит этот пользователь.Возвращает все группы, в которые входит пользователь.

    Проверьте, является ли этот режим транзитивным, поэтому вы уверены, что все группы будут возвращены.До 2046 года возвращается как часть 1 запроса.Он также работает с группами O365, и вы можете фильтровать группы SecurityEnabled, используя параметр

    POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/getMemberGroups
    
  2. Получение заявок на членство в группе как часть токена

    Вы можете разрешить групповым заявкам входить в качестве маркера доступа для вашего приложения, отредактировав манифест приложения (это можно сделать непосредственно на портале Azure) и установив для свойства groupMembershipClaims значение «Все» или «SecurityGroup», если необходимо..

    После обновления манифеста приложения, как указано выше, вы можете получить идентификаторы группы как часть утверждений.Вот краткий пример для декодированного токена JWT

    enter image description here

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

Подход с Microsoft Graph API может иметь несколько преимуществ, поэтому выбирайте его в зависимости от требований / сценариев вашего приложения, которые вы хотите поддерживать.

  • Вам не нужно беспокоиться об избыточном сценарии с Microsoft Graph API

    Когда вы включаете groupMembershipClaims входить как часть токена, если пользователь входит в слишком много групп, чтобы гарантировать, чтоРазмер токена не превышает ограничения размера заголовка HTTP, Azure AD ограничивает число идентификаторов объектов, включаемых в утверждение групп.Если пользователь является участником большего числа групп, чем предел превышения (150 для токенов SAML, 200 для токенов JWT), то Azure AD не отправляет утверждение группы в токене.Вместо этого он включает в себя маркер превышения в токене, который указывает приложению использовать Graph API для получения членства в группе пользователя.

  • Маркер доступа будет включать только идентификаторы группы, если вам нужнолюбую другую информацию, такую ​​как имя группы или любое другое свойство, которое необходимо запросить с помощью Microsoft Graph API.

Рассмотрите возможность использования ролей приложений

Поскольку вы упоминаете, что собираетесь использовать информацию о членстве в группе для принятия некоторых решений по авторизации, имейте в виду, что Azure AD также предоставляет функцию для определения специфических ролей приложений, которые затем можно назначать пользователям, и помогает принимать решения об авторизации.

Подробнее об этом можно прочитать здесь Документы Microsoft .Они могут использоваться отдельно или даже в сочетании с групповыми заявками для принятия решений об авторизации.Эти ссылки также могут помочь.

Примеры кода

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