Freigeben über


Problembehandlung bei der Azure Identity-Authentifizierung

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 Einstellungen stehen zur Verfügung:

Der Re Standard der dieses Artikels behandelt allgemeine Problembehandlungstechniken und Anleitungen, die für alle Anmeldeinformationstypen gelten.

Behandeln von 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, da das Token von den Anmeldeinformationen beim ersten Aufruf des Diensts und für alle nachfolgenden Anforderungen an den Dienst angefordert wird, die das Token aktualisieren müssen.

Um diese Fehler von Fehlern im Dienstclient zu unterscheiden, lösen ClientAuthenticationException Azure Identity-Klassen mit Details zur Beschreibung der Fehlerquelle in der Ausnahmemeldung und möglicherweise der Fehlermeldung aus. Je nach Anwendung können diese Fehler möglicherweise wiederhergestellt werden. Der folgende Code zeigt ein Beispiel für das Abfangen 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 Ausnahmetyp, der von ClientAuthenticationException. 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 Anmeldeinformationstypen verwendet, z DefaultAzureCredential . B. und ChainedTokenCredential, dass die verketteten Anmeldeinformationen später in der Kette weiterhin andere Anmeldeinformationstypen ausprobieren sollten.

Berechtigungsprobleme

Aufrufe an Dienstclients, die zu HttpResponseException einer 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 erteilt wurden.

Suchen relevanter Informationen in Ausnahmemeldungen

ClientAuthenticationException wird ausgelöst, wenn unerwartete Fehler auftreten, während sich anmeldeinformationen authentifizieren. Zu diesen Fehlern können Fehler gehören, die von Anforderungen an den Microsoft Entra-Sicherheitstokendienst (STS) empfangen werden, und häufig hilfreiche Informationen enthalten. 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, z DefaultAzureCredential . B. oder ChainedTokenCredential.

  • 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 eine konsistente Protokollierungsstory zur Problembehandlung bei Anwendungsfehlern und zur Beschleunigung der Lösung. Die erstellten Protokolle erfassen den Flow einer Anwendung, bevor sie den Endzustand erreichen. Dies trägt zur Ermittlung der Grundursache bei. 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. Ab v1.10.0 haben Anmeldeinformationen, die diese Protokollierung bieten, eine Methode namens .enableUnsafeSupportLogging()

Achtung

Anforderungen und Antworten in der Azure Identity-Bibliothek enthalten vertrauliche Informationen. Sie müssen Die Protokolle beim Anpassen der Ausgabe schützen, um die Kontosicherheit zu vermeiden.

Nächste Schritte

Wenn die Anleitung zur Problembehandlung in diesem Artikel beim Verwenden des Azure SDK für Java-Clientbibliotheken nicht hilft, sollten Sie ein Problem im Azure SDK für Java GitHub-Repository ablegen.