Давайте пройдем через это!
У меня есть арендатор: shawntest.onmicrosoft.com
Я создал нового гостевого пользователя в этом арендаторе с помощью портала Azure: ![введите здесь описание изображения](https:/ /i.stack.imgur.com/b0ca8.png)
Я нажал кнопку «+ Новый гостевой пользователь» и создал гостевую учетную запись Gmail, которую вы можете видеть выше. Я дополнительно добавил этого пользователя в несколько групп, также на портале: ![введите здесь описание изображения](https ://i.stack.imgur.com/ZJ8xl.png)
Итак, давайте войдем в систему этого пользователя.
Во-первых, в таких ситуациях важно указать арендатора, в котором вы хотите выполнить вход пользователя. Возможно, вам НЕ следует использовать конечную точку common
для таких учетных записей, поскольку они могут быть связаны с несколькими арендаторами, а затем оставить ее включенной. в AAD, чтобы принять окончательное решение за вас. Вместо этого укажите конкретный контекст аутентификации с конкретным идентификатором арендатора:
https://login.microsoftonline.com/shawntest.onmicrosoft.com
Теперь получите токен, используя предпочитаемый вами процесс входа пользователя. Я использую поток собственного клиента, который можно легко смоделировать с помощью всего 13 строк PowerShell.
Получив свой токен, я вызываю конечную точку /me
, чтобы показать, что я работаю с внешним пользователем:
GET https://graph.windows.net/me?api-version=1.6
{
"odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element",
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
...
"displayName": "Shawn Tabrizi",
...
"userPrincipalName": "xxxxxx_gmail.com#EXT#@shawntest.onmicrosoft.com",
"userType": "Guest"
}
Выглядит хорошо для меня. Теперь давайте получим группы, членом которых является пользователь, используя запрос memberOf
. Обратите внимание, что вы можете выполнить этот запрос сразу, он НЕ зависит от каких-либо данных из последнего запроса.
GET https://graph.windows.net/me/memberOf?api-version=1.6
{
"odata.metadata": "https://graph.windows.net/myorganization/$metadata#directoryObjects",
"value": [{
"odata.type": "Microsoft.DirectoryServices.Group",
"objectType": "Group",
...
"displayName": "TestGroup",
...
"securityEnabled": true
}, {
"odata.type": "Microsoft.DirectoryServices.Group",
"objectType": "Group",
...
"displayName": "MyTestGroup",
...
"securityEnabled": true
}]
}
И это все люди!
25.10.2017