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 viele Anmeldeinformationstypen im Azure SDK für Java verfügbar sind, wird dieses 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 Exception handling in the Azure SDK for Java von Übersicht zur Problembehandlung erwähnt, kann das Azure SDK für Java eine Vielzahl von Ausnahmen und Fehlercodes ausgeben. Für Azure Identity sind einige wichtige Ausnahmetypen wichtig zu verstehen.
ClientAuthenticationException
Jede Dienstclientmethode, die eine Anforderung an den Dienst sendet, kann Ausnahmen von Authentifizierungsfehlern auslösen. Diese Ausnahmen können auftreten, weil das Token beim ersten Aufruf des Diensts und bei allen nachfolgenden Dienstanforderungen, bei denen das Token erneuert werden muss, über die Anmeldeinformationen abgerufen 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 wiederhergestellt werden. 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. Verwenden Sie diesen Ausnahmetyp, um anzugeben, dass sich die Anmeldeinformationen aufgrund fehlender erforderlichen Konfigurationen oder Setups nicht in der aktuellen Umgebung authentifizieren können. Diese Ausnahme signalisiert auch verketteten Anmeldeinformationstypen wie DefaultAzureCredential und ChainedTokenCredential, dass die verkettete Anmeldeinformation später in der Kette weiterhin andere Anmeldeinformationstypen ausprobieren soll.
Probleme mit Berechtigungen
Aufrufe von Dienstclients, die zu HttpResponseException mit einem StatusCode von 401 oder 403 führen, deuten häufig darauf hin, dass der Aufrufer 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 gewährt werden.
Suchen relevanter Informationen in Ausnahmemeldungen
Die ClientAuthenticationException-Ausnahme wird ausgelöst, wenn während der Authentifizierung einer Anmeldeinformation unerwartete Fehler auftreten. Diese Fehler können Fehler umfassen, die bei Anforderungen an den Microsoft Entra Security Token Service (STS) zurückgegeben werden, und enthalten häufig Informationen, die bei der Diagnose helfen. 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 Nachricht – in diesem Fall gibt diese Informationen Einen Einblick in den spezifischen Grund,
AADSTS7000215: Invalid client secret provided.warum die Anforderung fehlgeschlagen ist. In diesem speziellen Fall ist der bereitgestellte geheime Clientschlüssel beispielsweise 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
Azure SDK für Java bietet einen konsistenten Protokollierungsverlauf, um Anwendungsfehler zu beheben und ihre Lösung zu beschleunigen. Die 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. Ergreifen Sie Vorsichtsmaßnahmen, um Protokolle beim Anpassen der Ausgabe zu schützen, damit die Kontosicherheit nicht gefährdet wird.
Nächste Schritte
Wenn die Anleitung zur Problembehandlung in diesem Artikel beim Verwenden der Azure SDK für Java Clientbibliotheken nicht hilft, geben Sie ein Problem im Azure SDK für Java GitHub Repository an.