Problembehandlung bei der Azure-gehosteten Anwendungsauthentifizierung
Dieser Artikel enthält Anleitungen zum Umgang mit Problemen, die beim Authentifizieren des Azure SDK für Java-Anwendungen auf Azure gehostet durch verschiedene TokenCredential
-Implementierungen auftreten. Weitere Informationen finden Sie unter Authentifizieren von Azure-gehosteten Java-Anwendungen.
Problembehandlung bei DefaultAzureCredential
Bei Verwendung von DefaultAzureCredential
können Sie optional try/catch für CredentialUnavailableException
. Die folgende Tabelle zeigt die Fehler, auf die diese Ausnahme hinweist, und die Methoden zur Abhilfe:
Fehlermeldung | Beschreibung | Minderung |
---|---|---|
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." |
Alle Anmeldeinformationen in der DefaultAzureCredential -Kette konnten kein Token abrufen, wobei jeweils ein CredentialUnavailableException ausgelöst wurde. |
Aktivieren Sie die Protokollierung, um die versuchten Anmeldeinformationen zu überprüfen und weitere Diagnoseinformationen zu erhalten. Weitere Informationen finden Sie im Handbuch zur Problembehandlung für einen der folgenden zugrunde liegenden Anmeldeinformationstypen: - EnvironmentCredential - ManagedIdentityCredential - VisualStudioCodeCredential - AzureCliCredential - AzurePowerShellCredential |
HttpResponseException raised from the client with a status code of 401 or 403 |
Die Authentifizierung war erfolgreich, aber der autorisierende Azure-Dienst hat mit einem Statuscode 401 (Authenticate) oder 403 (Forbidden) geantwortet. Dieses Problem tritt häufig auf, wenn DefaultAzureCredential ein anderes Konto als das beabsichtigte Konto oder das beabsichtigte Konto nicht über die richtigen Berechtigungen oder Rollen verfügt. |
Aktivieren Sie die Protokollierung, um zu bestimmen, welche Anmeldeinformationen in der Kette das Authentifizierungstoken zurückgegeben haben. Wenn eine andere Anmeldeinformation als die erwartete Anmeldeinformation ein Token zurückgibt, sollten Sie dieses Problem umgehen, indem Sie sich vom entsprechenden Entwicklungstool abmelden. Stellen Sie sicher, dass die richtige Rolle dem verwendeten Konto zugewiesen ist. Beispielsweise eine dienstspezifische Rolle anstelle der Abonnementbesitzerrolle. |
Problembehandlung bei EnvironmentCredential
Bei Verwendung von EnvironmentCredential
können Sie optional try/catch für CredentialUnavailableException
. Die folgende Tabelle zeigt die Fehler, auf die diese Ausnahme hinweist, und die Methoden zur Abhilfe:
Fehlermeldung | Beschreibung | Minderung |
---|---|---|
Environment variables aren't fully configured. |
Eine gültige Kombination von Umgebungsvariablen wurde nicht festgelegt. | Stellen Sie sicher, dass die entsprechenden Umgebungsvariablen vor dem Anwendungsstart für die beabsichtigte Authentifizierungsmethode festgelegt werden, wie in der folgenden Liste beschrieben: - Um einen Dienstprinzipal mithilfe eines geheimen Clientschlüssels zu authentifizieren, stellen Sie sicher, dass die Variablen AZURE_CLIENT_ID , AZURE_TENANT_ID und AZURE_CLIENT_SECRET ordnungsgemäß festgelegt sind. - Um einen Dienstprinzipal mithilfe eines Zertifikats zu authentifizieren, stellen Sie sicher, dass die Variablen AZURE_CLIENT_ID , AZURE_TENANT_ID , AZURE_CLIENT_CERTIFICATE_PATH und optional AZURE_CLIENT_CERTIFICATE_PASSWORD ordnungsgemäß festgelegt sind. - Um einen Benutzer mit einem Kennwort zu authentifizieren, stellen Sie sicher, dass die Variablen AZURE_USERNAME und AZURE_PASSWORD ordnungsgemäß festgelegt sind. |
Problembehandlung bei ManagedIdentityCredential
ManagedIdentityCredential
ist für die Arbeit an verschiedenen Azure-Hosts vorgesehen, die verwaltete Identität bereitstellen. Die Konfiguration der verwalteten Identität und der Problembehandlung variiert von Host zu Host. Die folgende Liste zeigt die Azure-Hostumgebungen, die Sie einer verwalteten Identität zuweisen können und die ManagedIdentityCredential
unterstützen:
- Azure App Service und Azure Functions – Problembehandlung bei der Konfiguration -
- Azure Arc – Konfiguration
- Azure Kubernetes Service – Problembehandlung bei der Konfiguration -
- Azure Service Fabric – Konfiguration
- Azure Virtual Machines und Scale Sets – Problembehandlung bei der Konfiguration -
Verwaltete Identität eines virtuellen Azure-Computers
Bei Verwendung von ManagedIdentityCredential
können Sie optional try/catch für CredentialUnavailableException
. Die folgende Tabelle zeigt die Fehler, auf die diese Ausnahme hinweist, und die Methoden zur Abhilfe:
Fehlermeldung | Beschreibung | Minderung |
---|---|---|
The requested identity hasn't been assigned to this resource. |
Der IMDS-Endpunkt (Azure Instance Metadata Service) hat mit einem Statuscode von 400 geantwortet, der angibt, dass die angeforderte Identität nicht dem virtuellen Computer (VM) zugewiesen ist. | Wenn Sie eine vom Benutzer zugewiesene Identität verwenden, stellen Sie sicher, dass die angegebene clientId korrekt ist. Wenn Sie eine zugewiesene Systemidentität verwenden, stellen Sie sicher, dass Sie sie ordnungsgemäß aktiviert haben. Weitere Informationen finden Sie im Abschnitt Aktivieren der vom System zugewiesenen verwalteten Identität auf einem vorhandenen virtuellen Computer unter Konfigurieren verwalteter Identitäten für Azure-Ressourcen auf einem virtuellen Computer mithilfe der Azure-Portal. |
The request failed due to a gateway error. |
Fehler bei der Anforderung an den IMDS-Endpunkt aufgrund eines Gatewayfehlers, des Statuscodes 502 oder 504. | IMDS unterstützt keine Anrufe über Proxy oder Gateway. Deaktivieren von Proxys oder Gateways, die auf dem virtuellen Computer ausgeführt werden, für Aufrufe an dem IMDS-Endpunkt http://169.254.169.254/ |
No response received from the managed identity endpoint. |
Für die Anforderung an IMDS oder das Timeout der Anforderung wurde keine Antwort empfangen. | - Stellen Sie sicher, dass Sie die verwaltete Identität auf dem virtuellen Computer ordnungsgemäß konfiguriert haben. Weitere Informationen finden Sie unter Konfigurieren von verwalteten Identitäten für Azure-Ressourcen auf einem virtuellen Computer über das Azure-Portal. - Stellen Sie sicher, dass der IMDS-Endpunkt auf dem virtuellen Computer erreichbar ist. Weitere Informationen finden Sie im nächsten Abschnitt. |
Multiple attempts failed to obtain a token from the managed identity endpoint. |
Wiederholungsversuche zum Abrufen eines Tokens vom IMDS-Endpunkt wurden erschöpft. | - Weitere Informationen zu bestimmten Fehlern finden Sie in den inneren Ausnahmemeldungen. Wenn die Daten abgeschnitten wurden, können durch das Sammeln von Protokollen weitere Details abgerufen werden. - Stellen Sie sicher, dass Sie die verwaltete Identität auf dem virtuellen Computer ordnungsgemäß konfiguriert haben. Weitere Informationen finden Sie unter Konfigurieren von verwalteten Identitäten für Azure-Ressourcen auf einem virtuellen Computer über das Azure-Portal. - Stellen Sie sicher, dass der IMDS-Endpunkt auf dem virtuellen Computer erreichbar ist. Weitere Informationen finden Sie im nächsten Abschnitt. |
Überprüfen Sie, ob IMDS auf dem virtuellen Computer verfügbar ist.
Wenn Sie Zugriff auf den virtuellen Computer haben, können Sie überprüfen, ob der gemanagte Identitätsendpunkt über die Befehlszeile curl
verfügbar ist, wie im folgenden Beispiel gezeigt:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
Warnung
Die Ausgabe dieses Befehls enthält ein gültiges Zugriffstoken. Um die Sicherheit Ihres Kontos nicht zu gefährden, sollten Sie dieses Zugriffstoken nicht weitergeben.
Verwaltete Identität in Azure App Service und Azure Functions
Bei Verwendung von ManagedIdentityCredential
können Sie optional try/catch für CredentialUnavailableException
. Die folgende Tabelle zeigt die Fehler, auf die diese Ausnahme hinweist, und die Methoden zur Abhilfe:
Fehlermeldung | Beschreibung | Minderung |
---|---|---|
ManagedIdentityCredential authentication unavailable. |
Die vom App Services-Host konfigurierten Umgebungsvariablen waren nicht vorhanden. | - Stellen Sie sicher, dass Sie die verwaltete Identität in der App Service-Instanz ordnungsgemäß konfiguriert haben. Weitere Informationen finden Sie unter Verwenden verwalteter Identitäten für App Service und Azure Functions. - Vergewissern Sie sich, dass Sie die App Service-Umgebung ordnungsgemäß konfiguriert haben und dass der verwaltete Identitätsendpunkt verfügbar ist. Weitere Informationen finden Sie im nächsten Abschnitt. |
Überprüfen, ob der Endpunkt für verwaltete Identitäten des App Services verfügbar ist
Wenn Sie Zugriff auf SSH in der App Service-Instanz haben, können Sie überprüfen, ob die verwaltete Identität in der Umgebung verfügbar ist. Stellen Sie zunächst sicher, dass Sie die Umgebungsvariablen MSI_ENDPOINT
und MSI_SECRET
in der Umgebung festgelegt haben. Anschließend können Sie überprüfen, ob der Endpunkt für verwaltete Identitäten curl
verfügbar ist, wie im folgenden Beispiel gezeigt:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
Warnung
Die Ausgabe dieses Befehls enthält ein gültiges Zugriffstoken. Um die Sicherheit Ihres Kontos nicht zu gefährden, sollten Sie dieses Zugriffstoken nicht weitergeben.
Verwalteten Identität in Azure Kubernetes Service
Pod Identity für Kubernetes
Bei Verwendung von ManagedIdentityCredential
können Sie optional try/catch für CredentialUnavailableException
. Die folgende Tabelle zeigt die Fehler, auf die diese Ausnahme hinweist, und die Methoden zur Abhilfe:
Fehlermeldung | Beschreibung | Minderung |
---|---|---|
No Managed Identity endpoint found |
Die Anwendung hat versucht, sich zu authentifizieren, bevor eine Identität dem Pod zugewiesen wurde. | Stellen Sie sicher, dass der Pod richtig gekennzeichnet ist. Dieses Problem tritt auch auf, wenn sich ein ordnungsgemäß bezeichneter Pod authentifiziert, bevor die Identität bereit ist. Um Initialisierungswettläufe zu verhindern, konfigurieren Sie NMI, um den Retry-After Header in seinen Antworten festzulegen. Weitere Informationen finden Sie unter Retry-After-Header in der NMI-Antwort setzen in der Dokumentation zu Podidentität. |
Problembehandlung bei WorkloadIdentityCredential
Bei Verwendung von WorkloadIdentityCredential
können Sie optional try/catch für CredentialUnavailableException
. Die folgende Tabelle zeigt die Fehler, auf die diese Ausnahme hinweist, und die Methoden zur Abhilfe:
Fehlermeldung | Beschreibung | Minderung |
---|---|---|
WorkloadIdentityCredential authentication unavailable. The workload options aren't fully configured. |
WorkloadIdentityCredential erfordert clientId , tenantId und tokenFilePath muss sich bei Microsoft Entra ID authentifizieren. |
Wenn Sie DefaultAzureCredential verwenden, dann: - Stellen Sie sicher, dass die Client-ID über den workloadIdentityClientId Setter oder die AZURE_CLIENT_ID Umgebungsvariable angegeben wird. - Stellen Sie sicher, dass die Mandanten-ID über die AZURE_TENANT_ID Umgebungsvariable angegeben wird. - Stellen Sie sicher, dass Sie den Tokendateipfad über die AZURE_FEDERATED_TOKEN_FILE Umgebungsvariable angegeben haben. - Stellen Sie sicher, dass der Autoritätshost über die AZURE_AUTHORITY_HOST Umgebungsvariable angegeben wird. Wenn Sie WorkloadIdentityCredential verwenden, dann: - Stellen Sie sicher, dass die Mandanten-ID über den tenantId Setter für den Anmeldeinformations-Generator oder die AZURE_TENANT_ID Umgebungsvariable angegeben wird. - Stellen Sie sicher, dass die Client-ID über den clientId Setter für den Anmeldeinformations-Generator oder die AZURE_CLIENT_ID Umgebungsvariable angegeben wird. - Stellen Sie sicher, dass den Tokendateipfad über den tokenFilePath Setter für den Anmeldeinformations-Generator oder die AZURE_FEDERATED_TOKEN_FILE Umgebungsvariable angegeben wird. - Weitere Probleme finden Sie im Anleitung zur Problembehandlung am Produkt. |
Nächste Schritte
Wenn die Richtlinien zur Fehlerbehebung in diesem Artikel nicht helfen, Probleme bei der Verwendung der Azure SDK for Java Client-Bibliotheken zu lösen, empfehlen wir Ihnen, einen Fehler im Azure SDK for Java GitHub Repository zu melden.