Microsoft graph и аутентификация пользователя Azure Ad - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение, зарегистрированное в объявлении Azure.

Когда я выполняю ADAL со следующими данными, я получаю токен авторизации для использования с microsoft graph api.

    `username      = 'admin@domain.com'
    password      = 'password123'
    client_id     = application id from azure ad
    client_secret = keys from application on azure ad
    tenant        = directory id from azure ad`

Используя этот токен, я могу получить список всех сайтов в моей учетной записи sharepoint.

Ниже указана конечная точка, которую я вызываю для выборки сайтов с токеном носителя: https://graph.microsoft.com/v1.0/sites?search=*

Но когда я просто выполняю аутентификацию клиента с использованием токена, сгенерированного с использованием указанной ниже конечной точки, я не могу получить доступсписок сайтов.login.microsoftonline.com/tenant_id/oauth2/v2.0/token

    `grant_type : client_credentials
    clientid : client_id
    clientsecrte : client_secret
    scope : https://graph.microsoft.com`

Он не возвращает все сайты.

Есть ли способ получить список всех сайтов с помощью только аутентификации клиента.

Или я могуполучить токен для аутентификации пользователя без пароля пользователя.

Вот расшифрованный токен, который я использую: { "aud": "https://graph.microsoft.com", "iss": "https://sts.windows.net/586145ec-0428-4da6-8061-fb114257ab70/", "iat": 1528949458, "nbf": 1528949458, "exp": 1528953358, "aio": "Y2dgYLh*************xAAA=", "app_displayname": "App Name", "appid": "504ddb16-2899-48be-be57-**********", "appidacr": "1", "idp": "https://sts.windows.net/586145ec-0428-4da6-8061-fb114257ab70/", "oid": "afcf166f-24c2-49f1-b285-b672d0413c50", "roles": [ "Sites.Read.All", "Sites.ReadWrite.All", "Sites.Manage.All", "Sites.FullControl.All", ], "sub": "afcf166f-24c2-49f1-b285-b672d0413c50", "tid": "586145ec-0428-4da6-8061-fb114257ab70", "uti": "hwYd8FZCH0KruWGRFiIHAA", "ver": "1.0" }

Я также получаю другие разрешения, но они связаны с сайтом в Microsoft Graph api

1 Ответ

0 голосов
/ 06 июня 2018

Причина:

Успешный использует ROPC flow, и он может получить делегированные разрешения onbehlaf пользователя.Но отказавший использует client_credentials flow, который получает разрешений для приложений и не может работать на пользователя.


Обновленный ответ

Решение: (Перед тем, как выполнить этот тест, убедитесь, что у вашего арендатора есть лицензия SPO)

  1. Попробуйте добавить Sites.Read.All Разрешение приложения в зарегистрированном приложении AAD и сделать согласие администратора на это до получения токена.

  2. Если вы используете конечную точку AAD v1, вы можете дать согласие администратора, нажав кнопку Предоставить разрешения . Если вы используете конечную точку v2, введите этот видURL-адреса в вашем интернет-браузере для предоставления права администратора:

    https://login.microsoftonline.com/{yourtenant}/adminconsent?client_id={the applicationid of your client}&state=123&redirect_uri={the redirect uri of your app}

и войдите в систему с учетной записью глобального администратора и примите это разрешение.

enter image description here

В моей тестовой лаборатории я использовал конечную точку v2. Вот токен, который я получил через почтальона: enter image description here

Вот декодированный токен в https://jwt.ms мы можем декодировать токен, чтобы убедиться, что у него есть необходимые разрешения.

enter image description here

Затем я использую этот токен в голове для вызова Microsoft Graph API, и получилось:

enter image description here

Для получения дополнительных сведений о разрешении сайта дляMicrosoft Graph, пожалуйста, обратитесь к этой документации .

Пожалуйста, дайте мне знать, если это поможет!

...