#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. Если ответ вам полезен, вы можете принять его как ответ( нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный.). Это может быть полезно для других членов сообщества. Спасибо