Идентификатор объекта Azure AD Graph мультитенантного приложения является уникальным для каждого арендатора. Как динамически получить идентификатор servicePrincipal? - PullRequest
0 голосов
/ 10 декабря 2018

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

Конечная точка API, которую я пытаюсь запросить:

https://graph.windows.net/{ tenantID} / servicePrincipals / {Идентификатор участника службы должен быть вставлен} /appRoleAssignedTo?api-version=1.6

Я просматривал документацию весь день, но я не могу найти способ получить это динамически для каждого арендатора.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

@ Ответ Рохита работает и является решением, но я просто хотел предоставить альтернативу - именно так я и получил этот идентификатор объекта арендатора.Запрос следующей конечной точки API:

https://graph.windows.net/myorganization/servicePrincipalsByAppId/
{ appId of the AD app }/objectId?api-version=1.6

Идентификатор приложения будет основным мультитенантным приложением, зарегистрированным в группе AD разработчика, всегда одинаковым для каждого арендатора.Вы также можете получить его из токена динамически в качестве значения ключа с именем «aud», чтобы получить объект JSON с ключом «value», значение которого будет содержать уникальный servicePrincipal для этого клиента.

0 голосов
/ 10 декабря 2018

Этот идентификатор уникален для каждого арендатора, и я пытаюсь динамически заполнить его в ссылке API, просто не знаю, где его получить для каждого арендатора.

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

Как вы упомянули, это мультитенантное приложение.Таким образом, вы можете использовать «appId» оригинального приложения.Свойство AppId будет одинаковым для всех участников службы, созданных для любых клиентов для этого приложения.

$filter=appId eq '{GUID appId for application}'

Вот запрос, который я протестировал в Azure AD Graph Explorer с выбранной api-версиейкак 1.6 в выпадающем списке версий

https://graph.windows.net/{tenantName or tenantID}/servicePrincipals?$filter=appId eq '{GUID appId for application}'  

Таким образом, этот запрос может быть выполнен перед тем, как другой запросит идентификатор участника службы для определенного арендатора, который можно передать в следующий запрос и затем найти AppRoleAssignments.

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