Поделиться через


Устранение неполадок проверки подлинности приложения, размещенного в Azure

В этой статье приводятся рекомендации по устранению проблем, возникающих при проверке подлинности приложений Azure SDK для Java, размещенных в Azure, с помощью различных TokenCredential реализаций. Дополнительные сведения см. в статье "Проверка подлинности размещенных в Azure приложений Java".

Устранение неполадок DefaultAzureCredential

При использовании DefaultAzureCredentialвы можете при необходимости попробовать и поймать.CredentialUnavailableException В следующей таблице показаны ошибки, указывающие на это исключение, и методы устранения рисков:

Сообщение об ошибке Description Меры по снижению риска
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." Все учетные данные в цепочке DefaultAzureCredential не удалось получить маркер, каждый из которых создает CredentialUnavailableExceptionмаркер. Включите ведение журнала для проверки проверяемых учетных данных и получения дополнительных диагностических сведений.

Дополнительные сведения см. в руководстве по устранению неполадок для одного из следующих базовых типов учетных данных:
- EnvironmentCredential
- ManagedIdentityCredential
- VisualStudioCodeCredential
- AzureCLICredential
- AzurePowershellCredential
HttpResponseException raised from the client with a status code of 401 or 403 Проверка подлинности завершилась успешно, но служба Azure ответила на код состояния 401 (аутентификация) или 403 (запрещено). Эта проблема часто возникает при DefaultAzureCredential проверке подлинности учетной записи, отличной от предполагаемой или предполагаемой учетной записи, не имеют правильных разрешений или ролей. Включите ведение журнала , чтобы определить, какие учетные данные в цепочке вернули маркер проверки подлинности.

В случае, если учетные данные, отличные от ожидаемого, возвращают маркер, попробуйте обойти эту проблему, выполнив выход из соответствующего средства разработки.

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

Устранение неполадок с EnvironmentCredential

При использовании EnvironmentCredentialвы можете при необходимости попробовать и поймать.CredentialUnavailableException В следующей таблице показаны ошибки, указывающие на это исключение, и методы устранения рисков:

Сообщение об ошибке Description Меры по снижению риска
Environment variables aren't fully configured. Допустимая комбинация переменных среды не была задана. Убедитесь, что перед запуском приложения для предполагаемого метода проверки подлинности заданы соответствующие переменные среды, как описано в следующем списке:
— Для проверки подлинности субъекта-службы с помощью секрета клиента убедитесь, что переменные AZURE_CLIENT_IDи AZURE_TENANT_IDAZURE_CLIENT_SECRET правильно заданы.
— Чтобы выполнить проверку подлинности субъекта-службы с помощью сертификата, убедитесь, что переменные AZURE_CLIENT_ID, AZURE_TENANT_IDAZURE_CLIENT_CERTIFICATE_PATHи при необходимости AZURE_CLIENT_CERTIFICATE_PASSWORD правильно заданы.
— Чтобы пройти проверку подлинности пользователя с помощью пароля, убедитесь, что переменные и AZURE_PASSWORD правильно заданыAZURE_USERNAME.

Устранение неполадок ManagedIdentityCredential

ManagedIdentityCredential предназначен для работы с различными узлами Azure, предоставляющими управляемое удостоверение. Настройка управляемого удостоверения и устранения неполадок зависит от узла к узлу. В следующем списке показаны среды узлов Azure, которые можно назначить управляемое удостоверение и ManagedIdentityCredential поддерживает:

Управляемое удостоверение виртуальной машины Azure

При использовании ManagedIdentityCredentialвы можете при необходимости попробовать и поймать.CredentialUnavailableException В следующей таблице показаны ошибки, указывающие на это исключение, и методы устранения рисков:

Сообщение об ошибке Description Меры по снижению риска
The requested identity hasn't been assigned to this resource. Конечная точка службы метаданных экземпляра Azure (IMDS) ответила кодом состояния 400, указывая, что запрошенное удостоверение не назначено виртуальной машине. Если вы используете удостоверение, назначаемое пользователем, убедитесь, что указанный указан clientId правильно.

Если вы используете назначенное системой удостоверение, убедитесь, что он включен правильно. Дополнительные сведения см. в разделе "Включение управляемого удостоверения, назначаемого системой" в существующем разделе "Настройка управляемых удостоверений для ресурсов Azure" на виртуальной машине с помощью портал Azure.
The request failed due to a gateway error. Сбой запроса к конечной точке IMDS из-за ошибки шлюза, кода состояния 502 или 504. IMDS не поддерживает вызовы через прокси-сервер или шлюз. Отключение прокси-серверов или шлюзов, работающих на виртуальной машине для вызовов конечной точки IMDS http://169.254.169.254/
No response received from the managed identity endpoint. Ответ не был получен для запроса в IMDS или истекло время ожидания запроса. — Убедитесь, что вы правильно настроили управляемое удостоверение на виртуальной машине. Дополнительные сведения см. в статье "Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине с помощью портал Azure".
— Убедитесь, что конечная точка IMDS недоступна на виртуальной машине. Дополнительные сведения см . в следующем разделе.
Multiple attempts failed to obtain a token from the managed identity endpoint. Повторные попытки получить маркер из конечной точки IMDS были исчерпаны. — Дополнительные сведения о конкретных сбоях см. в сообщениях о внутренних исключениях. Если данные усечены, дополнительные сведения можно получить, собирая журналы.
— Убедитесь, что вы правильно настроили управляемое удостоверение на виртуальной машине. Дополнительные сведения см. в статье "Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине с помощью портал Azure".
— Убедитесь, что конечная точка IMDS недоступна на виртуальной машине. Дополнительные сведения см . в следующем разделе.

Убедитесь, что IMDS доступен на виртуальной машине

Если у вас есть доступ к виртуальной машине, можно убедиться, что конечная точка управления удостоверения доступна с помощью командной строки, curlкак показано в следующем примере:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"

Предупреждение

Выходные данные этой команды содержат допустимый маркер доступа. Чтобы избежать ущерба безопасности учетной записи, не делитесь этим маркером доступа.

Служба приложений Azure и управляемые удостоверения в службе Функции Azure

При использовании ManagedIdentityCredentialвы можете при необходимости попробовать и поймать.CredentialUnavailableException В следующей таблице показаны ошибки, указывающие на это исключение, и методы устранения рисков:

Сообщение об ошибке Description Меры по снижению риска
ManagedIdentityCredential authentication unavailable. Переменные среды, настроенные узлом Служба приложений, не присутствовали. — Убедитесь, что вы правильно настроили управляемое удостоверение в экземпляре Служба приложений. Дополнительные сведения см. в статье Использование управляемых удостоверений в Службе приложений и Функциях Azure.
— Убедитесь, что вы правильно настроили среду Служба приложений и доступна ли конечная точка управляемого удостоверения. Дополнительные сведения см . в следующем разделе.

Убедитесь, что конечная точка управляемого удостоверения Служба приложений доступна

Если у вас есть доступ к SSH в экземпляре Служба приложений, можно убедиться, что управляемое удостоверение доступно в среде. Сначала убедитесь, что вы задали переменные MSI_ENDPOINT среды и MSI_SECRET в среде. Затем можно проверить, доступна ли конечная точка управляемого удостоверения, curlкак показано в следующем примере:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"

Предупреждение

Выходные данные этой команды содержат допустимый маркер доступа. Чтобы избежать ущерба безопасности учетной записи, не делитесь этим маркером доступа.

Управляемое удостоверение Служба Azure Kubernetes

Удостоверение Pod для Kubernetes

При использовании ManagedIdentityCredentialвы можете при необходимости попробовать и поймать.CredentialUnavailableException В следующей таблице показаны ошибки, указывающие на это исключение, и методы устранения рисков:

Сообщение об ошибке Description Меры по снижению риска
No Managed Identity endpoint found Приложение попыталось пройти проверку подлинности, прежде чем удостоверение было назначено ему pod. Убедитесь, что модуль pod помечен правильно. Эта проблема также возникает, когда правильно помеченный pod проходит проверку подлинности до готовности удостоверения. Чтобы предотвратить инициализацию рас, настройте NMI, чтобы задать Retry-After заголовок в его ответах. Дополнительные сведения см. в заголовке Set Retry-After в ответе NMI в документации по удостоверению pod.

Устранение неполадок с WorkloadIdentityCredential

При использовании WorkloadIdentityCredentialвы можете при необходимости попробовать и поймать.CredentialUnavailableException В следующей таблице показаны ошибки, указывающие на это исключение, и методы устранения рисков:

Сообщение об ошибке Description Меры по снижению риска
WorkloadIdentityCredential authentication unavailable. The workload options aren't fully configured. WorkloadIdentityCredentialтребуется clientIdи tokenFilePath tenantId для проверки подлинности с помощью идентификатора Microsoft Entra. Если вы используете, выполните следующие действия DefaultAzureCredential.
— Убедитесь, что идентификатор клиента указан с помощью workloadIdentityClientId метода задания или переменной AZURE_CLIENT_ID среды.
— Убедитесь, что идентификатор клиента указан с помощью переменной AZURE_TENANT_ID среды.
— Убедитесь, что вы указали путь к файлу маркера с помощью переменной AZURE_FEDERATED_TOKEN_FILE среды.
— Убедитесь, что узел центра указан с помощью переменной AZURE_AUTHORITY_HOST среды.

Если вы используете, выполните следующие действия WorkloadIdentityCredential.
— Убедитесь, что идентификатор клиента указан с помощью tenantId метода задания в построителе учетных данных или переменной AZURE_TENANT_ID среды.
— Убедитесь, что идентификатор клиента указан с помощью clientId метода задания в построителе учетных данных или переменной AZURE_CLIENT_ID среды.
— Убедитесь, что путь к файлу маркера указан с помощью tokenFilePath метода задания в построителе учетных данных или переменной AZURE_FEDERATED_TOKEN_FILE среды.
— Сведения о других проблемах см. в руководстве по устранению неполадок с продуктом.

Следующие шаги

Если рекомендации по устранению неполадок, описанные в этой статье, не помогают устранить проблемы при использовании клиентских библиотек пакета SDK Azure для Java, рекомендуется отправить проблему в репозитории Azure SDK для Java GitHub.