Устранение ошибок авторизации в Microsoft Graph
Ошибки авторизации могут возникать в результате ряда различных неполадок, большая часть которых приводит к возникновению ошибки 403 (за некоторыми исключениями). Например, ошибки авторизации могут возникнуть в результате следующих неполадок:
- Некорректные потоки получения маркеров доступа
- Неправильно настроенные области разрешений
- Отсутствие согласия
- Отсутствие разрешений
Действия по устранению распространенных ошибок
Чтобы устранить распространенные ошибки авторизации, попробуйте действия, описанные для ошибки, которая больше всего похожа на вашу. Можно использовать описание для нескольких ошибок. Кроме того, можно ознакомиться с ответами, которые уже доступны в разделе «Вопросы и ответы Майкрософт», для ошибки 401 и ошибки 403. Если вы не можете найти решение проблемы, задайте новый вопрос на microsoft Q&A и пометьте тегом microsoft-graph*.
Ошибка "401 — недостаточно прав": является ли маркер допустимым?
Убедитесь, что приложение выводит допустимый маркер доступа к Microsoft Graph в рамках запроса. Эта ошибка часто означает, что маркер доступа может отсутствовать в заголовке запроса проверки подлинности HTTP или что маркер недопустим или истек. Мы настоятельно рекомендуем использовать Библиотеку проверки подлинности Майкрософт (MSAL) для получения маркеров доступа. Кроме того, эта ошибка может возникать при попытке использовать маркер делегированного доступа, предоставленный личной учетной записи Майкрософт, для доступа к API, который поддерживает только рабочие или учебные учетные записи (учетные записи организации).
Ошибка "403 — запрещено": выбран ли соответствующий набор разрешений?
Убедитесь, что вы запросили правильный набор разрешений на основе API Microsoft Graph, который вызывает приложение. Рекомендуемые разрешения с наименьшими привилегиями приведены во всех справочных статьях о методах API Microsoft Graph. Кроме того, приложению должны быть предоставлены эти разрешения пользователем или администратором. Предоставление разрешений обычно происходит через страницу согласия или путем предоставления разрешений с помощью колонки регистрации приложений Центра администрирования Microsoft Entra.
Ошибка "403 — запрещено": получило ли приложение маркер для соответствия выбранным разрешениям?
Убедитесь, что тип запрошенных или предоставленных разрешений совпадает с типом маркера доступа, который получает приложение. Возможно, вы запрашиваете и предоставляете разрешения для приложения, но используете маркеры потоков делегированного интерактивного кода вместо маркеров потоков учетных данных клиента, или запрашиваете и предоставляете делегированные разрешения, но используете маркеры потоков учетных данных клиента вместо маркеров потоков делегированного кода.
- Получение доступа от имени пользователей и делегированные разрешения
- Azure AD версии 2.0 — поток кода авторизации OAuth 2.0
- Получение доступа без пользователя (служба управляющей программы) и разрешения приложения
- Azure AD версии 2.0 — поток учетных данных клиента OAuth 2.0
Ошибка "403 — запрещено": сброс пароля
В настоящее время не существует разрешений управляющей программы для взаимодействия между службами, позволяющих сбрасывать пароли пользователей. Эти API поддерживаются только с помощью потоков интерактивного делегированного кода для администратора, выполнившего вход.
Ошибка "403 — запрещено": есть ли доступ у пользователя, и имеет ли он лицензию?
Microsoft Graph определяет, разрешено ли выполнение запроса для потоков делегированного кода, на основании разрешений, предоставленных приложению, и разрешений, имеющихся у пользователя, выполнившего вход. Как правило, эта ошибка указывает на то, что пользователь не обладает достаточными правами для выполнения запроса или что у пользователя нет лицензии на доступ к данным. Только пользователи с необходимыми разрешениями или лицензиями могут успешно выполнить запрос.
Ошибка "403 — запрещено": выбран ли правильный API ресурсов?
Службы API, такие как Microsoft Graph, проверяют, чтобы утверждение aud (audience) в полученном маркере доступа соответствовало ожидаемому значению, в противном случае возникает ошибка 403 Forbidden
. Чаще всего эта ошибка возникает при попытке использовать маркер, полученный для API Azure AD Graph, API Outlook или API SharePoint/OneDrive, для вызова Microsoft Graph (или наоборот). Убедитесь, что ресурс (или область), для которого приложение получает маркер, соответствует API, который вызывает приложение.
Ошибка "400 — ошибочный запрос" или "403 — запрещено": выполняет ли пользователь требования политики условного доступа своей организации?
На основании политик условного доступа организации у пользователя, получающего доступ к ресурсам Microsoft Graph через ваше приложение, могут быть запрошены дополнительные сведения, отсутствующие в маркере доступа, который изначально был получен вашим приложением. В этом случае приложение получает сообщение об ошибке 400 с interaction_required при получении маркера доступа или сообщение об ошибке 403 с insufficient_claims при вызове Microsoft Graph. В обоих случаях сообщение об ошибке содержит дополнительные сведения, которые могут быть представлены в конечную точку авторизации, чтобы запросить у пользователя дополнительную информацию (например, многофакторная проверка подлинности или регистрация устройства).
- Обработка запросов условного доступа с помощью MSAL
- Руководство разработчика по условному доступу Microsoft Entra
403 Запрещено: доступ к OData отключен
Многие API Microsoft Graph получают доступ к Exchange Online. Эти API подчиняются политикам приложений EWS Exchange Online. Приложения могут получать 403 Forbidden
ошибки со следующим текстом ответа.
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access to OData is disabled."
}
}
Это может быть вызвано политиками доступа EWS вашей организации. Администратор Exchange может проверить это с помощью модуля Exchange Online PowerShell.
Чтобы определить, применяется ли общеорганиционная политика, выполните следующие действия:
Get-OrganizationConfig | fl EwsApplicationAccessPolicy,EWS*List
Чтобы определить, применяется ли политика для конкретного пользователя, выполните следующие действия:
Get-CASMailbox <user-principal-name> | fl EwsApplicationAccessPolicy,EWS*List
Если задано значение EwsApplicationAccessPolicy , применяется политика.
- Если
EwsApplicationAccessPolicy
задано значениеEnforceAllowList
, значение приложенияUser-Agent
должно быть добавлено к значению EwsAllowList . - Если
EwsApplicationAccessPolicy
задано значениеEnforceBlockList
, значение приложения должно быть удаленоUser-Agent
из значения EwsBlockList .
Примечание.
Для внесения изменений в политики приложений EWS требуется время. Приложение может продолжать получать 403 Forbidden
ошибки в течение некоторого времени после внесения изменений.
403 Запрещено: приложение пытается получить доступ к группе, содержащей другие группы с разными разрешениями?
Просмотрите все группы, принадлежащие группе, к которым приложение не может получить доступ. Если есть вложенные группы, в которых родительская группа, которая имеет другие группы в качестве участников, имеет достаточные разрешения, к которым приложение может получить доступ, но дочерняя группа, которая является членом другой группы, нет, это приводит к сбою при доступе к дочерним и родительским группам.
В некоторых случаях приложение может не читать группы или субъекты-службы из-за нехватки разрешений. Этот сбой может произойти даже в том случае, если приложение ранее могло читать эти группы, содержащие вложенные группы с недостаточными разрешениями или субъектами-службами из-за прогресса в области усиления безопасности, происходящих в Корпорации Майкрософт.