Ошибка выдачи приложения Microsoft Graph API. Код: Authorization_RequestDenied Сообщение: недостаточно прав для завершения операции

Я использую приложение Microsoft Graph API для получения информации о сотрудниках и не являюсь администратором Azure. Администратор моей организации предоставил мне прикрепленные разрешения. Даже при наличии разрешений я получаю сообщение об ошибке, Код: Authorization_RequestDenied Сообщение: Недостаточно прав для завершения операции.

Я получаю Клиента правильно. Можете ли вы помочь устранить эту ошибку?

К какой конечной точке вы имеете доступ? /пользователи? Как вы проходите аутентификацию?

user2250152 27.03.2024 15:25
login.microsoftonline.com{tenantId}
Pankaj Potdar 28.03.2024 04:31
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание: чтобы получить доступ к информации о пользователе, вам необходимо сгенерировать токен доступа, передав область User.Read.All.

Создано приложение Microsoft Entra ID:

Сгенерированный токен доступа с использованием следующей конечной точки:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=token+id_token
&redirect_uri=https://jwt.ms
&response_mode=fragment
&scope=openid offline_access User.Read.All
&state=12345
&nonce=12345

Токены доступа и идентификатора успешно сгенерированы:

Если вы используете токен идентификатора для доступа к информации пользователя, вы получите ошибку 401, поэтому используйте токен доступа для получения сведений о пользователе.

Раскодируйте токен доступа и убедитесь, что аудит представляет собой Microsoft Graph и присутствует область User.Read.All:

Передайте указанный выше токен доступа, и я смогу успешно получить доступ к информации о пользователе токена:

https://graph.microsoft.com/v1.0/users?$select=DisplayName,EmployeeId,employeeHireDate,employeeLeaveDateTime,employeeType

Я использую графическое приложение Microsoft с идентификатором клиента и секретным идентификатором. То, как вы сгенерировали токен, сильно отличается от того, как я его сгенерировал. Это для приложения Microsoft Graph API?

Pankaj Potdar 30.03.2024 13:46

Да, это для приложения Microsoft Graph Api.

Rukmini 30.03.2024 13:51

Можете ли вы расшифровать токен в jwt.ms и проверить, существуют ли роли?

Rukmini 30.03.2024 13:52

Это то, что я получаю, когда декодирую токен. "roles": [ "Sites.Selected", "Mail.ReadWrite", "Mail.Send" ],

Pankaj Potdar 01.04.2024 06:37

Чтобы устранить ошибку, токен доступа должен иметь область действия User.Read.All.

Rukmini 01.04.2024 06:38

когда я вижу снимок экрана с разрешениями, я вижу, что они делегированы, там не говорится о приложении, как в случае с другими авторизациями. Что тогда означает делегат?

Pankaj Potdar 01.04.2024 06:38

Как вы генерируете токен доступа?

Rukmini 01.04.2024 06:39

AFAIK вы используете поток учетных данных клиента для создания токена доступа и предоставления делегированных разрешений API.

Rukmini 01.04.2024 06:40

Попробуйте предоставить разрешение API типа приложения User.Read.All или сгенерируйте токен доступа с помощью интерактивного потока пользователя, если вы хотите делегировать разрешения API.

Rukmini 01.04.2024 06:41

Используя идентификатор приложения и токен доступа. как показано ниже. Dim clientId As String = "XXXXXXXXXXXXXXXXXXXXxx" Dim clientSecret As String = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx" Dim tenantId As String = "XXXXXXXXXXXXXXXXXXXXXXXxxxxx" Dim Authority As String = $"login.microsoftonline.com {tenantId}" Dim protectedClientApplication As IConfidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId).WithCl‌​ientSecret(clientSec‌​ret).WithAuthority(a‌​authority).Build() Dim области As String() = {"graph.microsoft.com/.default"}

Pankaj Potdar 01.04.2024 06:41

Тусклый аутентификацияResult = Ожидание конфиденциальногоClientApplication.AcquireTokenForClient(scopes).‌​ExecuteAsync() Тусклый accessToken As String = аутентификацияResult.AccessToken

Pankaj Potdar 01.04.2024 06:42

Тусклый графКлиент = Новый GraphServiceClient (Новый DelegateAuthenticationProvider (Функция (requestMessage) requestMessage.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue («Носитель», accessToken) Return Task.CompletedTask End Function))

Pankaj Potdar 01.04.2024 06:42

Я не администратор, поэтому не могу предоставить разрешения. Разрешение оценено как делегированное.

Pankaj Potdar 01.04.2024 06:44

Давайте продолжим обсуждение в чате.

Rukmini 01.04.2024 06:44

Другие вопросы по теме

Похожие вопросы

Альтернативы для пакета Python azure-iot-hub
Ошибка при входе в Azure AD B2C. URI перенаправления «localhost:3001», указанный в запросе, не зарегистрирован
Ошибка копирования большого двоичного объекта хранилища Azure из URL-адреса (REST API) в заголовке x-ms-requires-sync
Как узнать, повлияет ли обновление версии API на функцию AKS или нет?
Используйте DefaultAzureCredential для DataLakeServiceClient
Недопустимый атрибут «условие». Значение «@contains(string, «substring»)» находится вне диапазона допустимых значений
Ошибка входа в Azure AD B2C с ошибкой поставщика удостоверений Microsoft: для погашения кода авторизации между источниками требуется ключ подтверждения для обмена кодами
Невозможно преобразовать речь в текст с помощью службы преобразования речи в текст Azure
Автоматизация ротации ключей для ресурсов, используемых в приложении
Как я могу правильно сложить данные с помощью Kusto в столбчатую диаграмму