Azure AAD и Graph API: недостаточно прав для завершения операции - PullRequest
0 голосов
/ 06 декабря 2018

Контекст: у меня есть консольное приложение, которое хочет использовать Graph API для связи с AAD, чтобы проверить, существует ли определенный идентификатор пользователя в клиенте или нет.

Я придерживался следующих рекомендаций: https://docs.microsoft.com/en-us/graph/auth-v2-service?view=graph-rest-1.0

Я могу сгенерировать токен, используя это:

https://login.microsoftonline.com/common/oauth2/v2.0/token
client_id=x
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=x
&grant_type=client_credentials

Но когда я вызываю графикAPI Я получаю эту ОШИБКУ:

https://graph.microsoft.com/v1.0/users/12345678-73a6-4952-a53a-e9916737ff7f
{
    "error": {
        "code": "Authorization_RequestDenied",
        "message": "Insufficient privileges to complete the operation.",
        "innerError": {
            "request-id": "x",
            "date": "x"
        }
    }
}

Мое приложение AAD имеет все разрешения:

1. Microsoft Graph
2. Windows Azure Active Directory

Я попытался изменить область действия на

scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read

Но этоошибка, возникающая при генерации токена:

The provided value for the input parameter 'scope' is not valid. The scope https://graph.microsoft.com/user.read is not valid.

Я пробовал комбинации "User.Read", "User.Basic.Read" и т. д., но ничего не работает.

Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

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

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

В вашем коде ваше приложение аутентифицируется как приложение только .В него не вошел зарегистрированный пользователь, и оно требует, чтобы ваше приложение использовало и сохраняло конфиденциальность ключ, используемый для аутентификации (параметр client_secret).

В этом сценарии запросом области действия https://graph.microsoft.com/.default являетсяправильный подход.Azure AD говорит следующее: «предоставьте маркер доступа для всех разрешений приложения, которые были предоставлены этому приложению».Запрос области https://graph.microsoft.com/User.Read не является правильным подходом, поскольку у приложения нет разрешения с таким именем.

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

Имеет ли созданное вами приложение делегированные разрешения или разрешения приложения для этой области?

Скорее всего, первое.Делегированные разрешения не применяются к потоку учетных данных клиента.

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