Как вы упоминаете в комментариях, вошедший в систему пользователь является участником более 6 групп.В таких случаях вы не получите запрос groups
со всеми идентификаторами групп, а вместо этого Azure AD вернет индикатор превышения, который дает вам понять, что пользователь является участником многих групп. Документы Microsoft
заявка на группы
В случае SPA, использующего неявный поток грантов OAuth 2.0, используется показатель превышения hasgroups
,Причина этого заключается в том, чтобы убедиться, что фрагмент URI не выходит за пределы длины URL.Таким образом, если пользователь входит в до 5 групп, длина не является проблемой, и вы получаете фактические идентификаторы группы.В случае 6 или более вам нужно сделать отдельный вызов, используя Graph API для получения групп.
![enter image description here](https://i.stack.imgur.com/8yTh2.png)
groups: утверждение src1
Заявка groups:src1
также является индикатором превышения, но этот дает немного больше информации о том, какую конечную точку вызывать для получения групп.Я видел это утверждение, когда ограничения, связанные с длиной URL, были неприменимы, например, если вместо Angular SPA вы, например, использовали консольное приложение на основе .NET с библиотеками ADAL.NET.Снова то же самое намерение, чтобы вы знали, что пользователь является частью многих групп, и вам нужно сделать отдельный звонок, чтобы получить эту информацию.
![enter image description here](https://i.stack.imgur.com/LSzl9.png)
Как получить информацию о группах для пользователя?
Поскольку в документации для hasgroups
упоминается само заявление, вы можете позвонить в Azure AD Graph API *
https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects
Вы также можете использовать более новый Microsoft Graph API.Это более новый и рекомендуемый.Вы можете прочитать о сравнении с API-интерфейсом Azure AD Graph и о том, когда его использовать, здесь Microsoft Graph или Azure AD Graph
Я вижу, что стабильная версия v1.0имеет по крайней мере два API, которые могут быть вам полезны:
Список memberOf
GET /users/{id | userPrincipalName}/memberOf
user: getMemberGroups
POST /users/{id | userPrincipalName}/getMemberGroups
Проверка этого API является транзитивной, в отличие от чтения свойства навигации memberOf, которое возвращает только те группы, непосредственным членом которых является пользователь.Он поддерживает Office 365 и другие типы групп, предоставляемые в Azure AD.Максимальное количество групп, которое может вернуть каждый запрос, составляет 2046