Запрещенная ошибка при вызове Microsoft Graph из приложения Java с использованием идентификатора приложения

#azure-active-directory #microsoft-graph-api

Вопрос:

Области списка = Массивы.asList(«https://graph.microsoft.com/.default»); конечные учетные данные клиента = новые учетные данные клиента () . Идентификатор клиента(идентификатор приложения) .Секрет клиента(секрет) .Идентификатор арендатора(идентификатор арендатора) .сборка(); конечные учетные данные authProvider_new = новые учетные данные(ОБЛАСТИ, учетные данные);

     GraphServiceClient graphClient = GraphServiceClient
            .builder()
            .authenticationProvider(authProvider)
            .buildClient();

    graphClient.users().buildRequest().get();
 

С

группа компиляции: «com.microsoft.azure», имя: «azure-spring-boot», версия: «2.3.5»

 compile group: 'com.google.guava', name: 'guava', version: '28.2-jre'

compile group: 'com.azure', name: 'azure-identity', version: '1.2.5'
compile group: 'com.microsoft.graph', name: 'microsoft-graph', version: '3.5.0'
 

Я добавил все необходимые разрешения для приложения, и оно было одобрено в Active Directory, но ответ тот же.

Он работает с использованием этого кода, после того, как я войду в систему с учетной записью пользователя: итоговая учетная запись devicecodecredential1 = новый DeviceCodeCredentialBuilder() .Идентификатор клиента(идентификатор приложения) .challengeConsumer(вызов -> System.out.println(вызов.GetMessage())) .сборка();

Но я хочу использовать ClientSecretCredential и использовать секрет клиента, а не создавать проблемы.

Обновление: Я получаю сообщение об ошибке

 SEVERE: Throwable detail: com.microsoft.graph.http.GraphServiceException: Error code: Authorization_RequestDenied
Error message: Insufficient privileges to complete the operation.

GET https://graph.microsoft.com/v1.0/users
SdkVersion : graph-java/v3.5.0


403 : Forbidden
 

Вот ссылка на разрешения, которые есть у приложения в разрешениях API

У меня также есть следующие разрешения для служб управления правами Azure на случай, если это поможет приложению.Прочитайте.Все, Довольна.Делегированный читатель, Контент.Суперпользователь

Комментарии:

1. Не могли бы вы, пожалуйста, добавить детали операции, которую вы пытаетесь выполнить, например, получить пользователей и т. Д. И какие разрешения api приложений вы добавили для участника службы?

2. Также, пожалуйста, добавьте полную информацию об ошибке, включая идентификатор запроса и отметку времени, без личной информации.

3. Спасибо за ваши ответы, я обновил вопрос с учетом этих деталей.

Ответ №1:

На основании предоставленного разрешения вы пропустили User.ReadWrite и User.ReadWrite.All , пожалуйста, добавьте это разрешение .

Для получения более подробной информации обратитесь к этому документу:

Комментарии:

1. Отлично, это сработало, да, у меня были делегированные разрешения на тип, но не на приложение. Теперь это совершенно очевидно, но я ничего не читал об этом в документах. Спасибо Шрутиджоши-МТ

2. Если у вас есть делегированные разрешения, то User.ReadWrite необходимо добавить разрешение. Для получения дополнительной информации, пожалуйста, обратитесь к документу, указанному в ответе.

3. Если ответ вам полезен, вы можете принять его как ответ( нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный.). Это может быть полезно для других членов сообщества. Спасибо