Есть два возможных способа сделать это:
Использование соответствующих 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
Получение заявок на членство в группе как часть токена
Вы можете разрешить групповым заявкам входить в качестве маркера доступа для вашего приложения, отредактировав манифест приложения (это можно сделать непосредственно на портале Azure) и установив для свойства groupMembershipClaims значение «Все» или «SecurityGroup», если необходимо..
После обновления манифеста приложения, как указано выше, вы можете получить идентификаторы группы как часть утверждений.Вот краткий пример для декодированного токена JWT
Сравнение подходов и ограничение количества групп, которые могутможет быть возвращен как часть токена
Подход с Microsoft Graph API может иметь несколько преимуществ, поэтому выбирайте его в зависимости от требований / сценариев вашего приложения, которые вы хотите поддерживать.
Вам не нужно беспокоиться об избыточном сценарии с Microsoft Graph API
Когда вы включаете groupMembershipClaims входить как часть токена, если пользователь входит в слишком много групп, чтобы гарантировать, чтоРазмер токена не превышает ограничения размера заголовка HTTP, Azure AD ограничивает число идентификаторов объектов, включаемых в утверждение групп.Если пользователь является участником большего числа групп, чем предел превышения (150 для токенов SAML, 200 для токенов JWT), то Azure AD не отправляет утверждение группы в токене.Вместо этого он включает в себя маркер превышения в токене, который указывает приложению использовать Graph API для получения членства в группе пользователя.
Маркер доступа будет включать только идентификаторы группы, если вам нужнолюбую другую информацию, такую как имя группы или любое другое свойство, которое необходимо запросить с помощью Microsoft Graph API.
Рассмотрите возможность использования ролей приложений
Поскольку вы упоминаете, что собираетесь использовать информацию о членстве в группе для принятия некоторых решений по авторизации, имейте в виду, что Azure AD также предоставляет функцию для определения специфических ролей приложений, которые затем можно назначать пользователям, и помогает принимать решения об авторизации.
Подробнее об этом можно прочитать здесь Документы Microsoft .Они могут использоваться отдельно или даже в сочетании с групповыми заявками для принятия решений об авторизации.Эти ссылки также могут помочь.
Примеры кода