Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden Fehleruntersuchungstechniken, häufige Fehler für die Anmeldeinformationstypen in der Azure Identity Java-Clientbibliothek und Schritte zur Behebung dieser Fehler behandelt. Da im Azure SDK für Java viele Anmeldeinformationstypen verfügbar sind, haben wir das Handbuch zur Problembehandlung basierend auf dem Verwendungsszenario in Abschnitte unterteilt. Die folgenden Abschnitte stehen zur Verfügung:
- Problembehandlung bei der azure-gehosteten Anwendungsauthentifizierung
- Problembehandlung bei der Authentifizierung von Entwicklungsumgebungen
- Problembehebung bei der Dienstprinzipal-Authentifizierung
- Problembehandlung bei der mehrinstanzenfähigen Authentifizierung
Der restliche Teil dieses Artikels behandelt allgemeine Techniken und Anweisungen zur Fehlerbehebung, die für alle Anmeldedatentypen gelten.
Umgang mit Azure Identity-Ausnahmen
Wie im Abschnitt "Ausnahmebehandlung" im Abschnitt "Problembehandlung" im Azure SDK für Java erwähnt, gibt es einen umfassenden Satz von Ausnahmen und Fehlercodes, die das Azure SDK für Java auslösen kann. Für Azure Identity gibt es insbesondere einige wichtige Ausnahmetypen, die wichtig zu verstehen sind.
ClientAuthenticationException
Jede Dienstclientmethode, die eine Anforderung an den Dienst sendet, kann Ausnahmen auslösen, die sich aus Authentifizierungsfehlern ergeben. Diese Ausnahmen sind möglich, weil das Token beim ersten Aufruf des Dienstes und bei allen nachfolgenden Anforderungen an den Dienst, die das Token aktualisieren müssen, von der Anmeldeinformation angefordert wird.
Um diese Fehler von Fehlern im Service-Client zu unterscheiden, lösen Azure Identity-Klassen ClientAuthenticationException mit Details zur Fehlerquelle in der Ausnahmemeldung und möglicherweise der Fehlermeldung aus. Je nach Anwendung können diese Fehler behoben werden oder auch nicht. Der folgende Code zeigt ein Beispiel für das Abfangen von ClientAuthenticationException:
// Create a secret client using the DefaultAzureCredential
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://myvault.vault.azure.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
try {
KeyVaultSecret secret = client.getSecret("secret1");
} catch (ClientAuthenticationException e) {
//Handle Exception
e.printStackTrace();
}
CredentialUnavailableException
CredentialUnavailableException ist ein spezieller Typ einer Ausnahme, der von ClientAuthenticationException abgeleitet ist. Dieser Ausnahmetyp wird verwendet, um anzugeben, dass die Anmeldeinformationen aufgrund fehlender erforderlichen Konfiguration oder Einrichtung nicht in der aktuellen Umgebung authentifiziert werden können. Diese Ausnahme wird auch als Signal für verkettete Berechtigungsnachweisarten wie DefaultAzureCredential und ChainedTokenCredentialverwendet, dass der verkettete Berechtigungsnachweis weiterhin andere Berechtigungsnachweisarten später in der Kette ausprobieren soll.
Berechtigungsprobleme
Aufrufe von Dienst-Clients, die in HttpResponseException mit einem StatusCode von 401 oder 403 resultieren, weisen häufig darauf hin, dass der Anrufer nicht über ausreichende Berechtigungen für die angegebene API verfügt. Überprüfen Sie die Dienstdokumentation, um zu ermitteln, welche Rollen für die spezifische Anforderung erforderlich sind. Stellen Sie sicher, dass dem authentifizierten Benutzer oder Dienstprinzipal die entsprechenden Rollen für die Ressource erteilt wurden.
Suchen relevanter Informationen in Ausnahmemeldungen
ClientAuthenticationException wird ausgelöst, wenn unerwartete Fehler bei der Authentifizierung einer Anmeldeinformation auftreten. Diese Fehler können auch Fehler enthalten, die bei Anforderungen an den Microsoft Entra Security Token Service (STS) aufgetreten sind, und enthalten oft Informationen, die für die Diagnose hilfreich sind. Beachten Sie die folgende ClientAuthenticationException Meldung:
ClientSecretCredential authentication failed: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details.
Original exception:
AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.
Trace ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Correlation ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Timestamp: 2022-01-01 00:00:00Z
Diese Fehlermeldung enthält die folgenden Informationen:
Fehlerhafter Anmeldeinformationstyp: Der Typ der Anmeldeinformationen, die nicht authentifiziert werden konnten – in diesem Fall
ClientSecretCredential. Diese Informationen sind hilfreich bei der Diagnose von Problemen mit verketteten Anmeldeinformationstypen, wieDefaultAzureCredentialoderChainedTokenCredential.STS-Fehlercode und -Meldung: Der Vom Microsoft Entra STS zurückgegebene Fehlercode und die Meldung – in diesem Fall können diese Informationen Einen Einblick in den spezifischen Grund geben,
AADSTS7000215: Invalid client secret provided.warum die Anforderung fehlgeschlagen ist. In diesem speziellen Fall ist beispielsweise der bereitgestellte geheime Clientschlüssel falsch. Weitere Informationen zu STS-Fehlercodes finden Sie im Abschnitt "AADSTS-Fehlercodes " der Microsoft Entra-Authentifizierungs- und Autorisierungsfehlercodes.Korrelations-ID und Zeitstempel: Die Korrelations-ID und der Aufrufzeitstempel, der verwendet wird, um die Anforderung in serverseitigen Protokollen zu identifizieren. Diese Informationen sind hilfreich, um Techniker bei der Diagnose unerwarteter STS-Fehler zu unterstützen.
Aktivieren und Konfigurieren der Protokollierung
Das Azure SDK für Java bietet ein einheitliches Protokollierungskonzept, das bei der Fehlerbehebung von Anwendungen unterstützt und die Lösung von Problemen beschleunigt. Die erstellten Protokolle erfassen den Ablauf einer Anwendung, bevor sie den Terminalstatus erreicht, um das Stammproblem zu finden. Anleitungen zur Protokollierung finden Sie unter Konfigurieren der Protokollierung im Azure SDK für Java und Problembehandlung über die Ansicht.
Die zugrunde liegende MSAL-Bibliothek , MSAL4J, verfügt auch über eine detaillierte Protokollierung. Diese Protokollierung ist sehr ausführlich und umfasst alle personenbezogenen Daten einschließlich Token. Diese Protokollierung ist beim Arbeiten mit Produktsupport am nützlichsten. Seit v1.10.0 haben Anmeldeinformationen, die diese Protokollierung anbieten, eine Methode namens enableUnsafeSupportLogging().
Vorsicht
Anforderungen und Antworten in der Azure Identity-Bibliothek enthalten vertrauliche Informationen. Sie müssen Vorsichtsmaßnahmen ergreifen, um die Protokolle beim Anpassen der Ausgabe zu schützen und die Kontosicherheit nicht zu gefährden.
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.