Точнее, : у меня есть небольшое Azure AD, под которым я зарегистрировал свое приложение.Приложение помечено как мультитенантное, так как я хочу, чтобы люди могли входить в него со своими корпоративными учетными записями.Я хотел бы получить членство в группах для пользователей, которые входят в систему, используя делегированные права доступа, которые не требуют согласия администратора, потому что я не хочу, чтобы процесс адаптации новых арендаторов AAD требовал от администратора предоставления там моего приложения специальногоразрешения.
Вот что я попробовал:
Получение информации непосредственно в токенах
Путем настройки поля groupMembershipClaims
в моем манифесте приложения на All
как задокументировано здесь .Я могу получить группы в моем токене.Это может быть сделано без какого-либо согласия администратора.на самом деле единственными необходимыми делегированными правами являются openid
, т.е. вход пользователя в систему.
Однако этот подход ограничивает меня получением групп для пользователей, которые являются членами менее 200 групп.В противном случае я вообще ничего не получаю, а вместо этого получаю конечную точку для API-интерфейса Graph Azure, где я могу их получить.
Это приводит нас ко второму подходу.
Использование Microsoft Graph API
К сожалению, old Azure Graph API и новый Microsoft Graph API Кажется, для получения групп требуются разрешения с согласия администратора.
Документация для пользователя : getMemberGroups состояния вызовачто мы должны иметь возможность с делегированным User.Read
разрешением сделать этот вызов.Однако это не работает и на самом деле Directory.Read.All
является наименее разрешающим разрешением, которое действительно работает.Смотрите документацию проблема на GitHub .
Глядя на историю документации, мы видим, что раньше это считали известной ошибкой , а не проблемой документации.Возвращение в прошлое, по-видимому, подразумевает, что как минимум User.Read
и Group.Read.All
требовались вместе.
Это оставляет меня в некотором роде застрявшим.В идеале я бы предпочел использовать график api во всех случаях, а не только в случае с более чем 200, потому что в противном случае мои токены могут стать слишком большими для некоторых случаев, несмотря на установленный лимит microsoft. Но я не уверен, каково реальное намерение здесь в отношениичтобы получить согласие администратора для такого рода запросов.
У кого-нибудь есть другие идеи?