Résoudre les problèmes d’authentification Azure Identity
Cet article traite des techniques d’investigation des défaillances, des erreurs courantes pour les types d’informations d’identification dans la bibliothèque cliente Java d’Azure Identity et des étapes d’atténuation pour résoudre ces erreurs. Étant donné qu’il existe de nombreux types d’informations d’identification disponibles dans le Kit de développement logiciel (SDK) Azure pour Java, nous avons fractionné le guide de résolution des problèmes en sections en fonction du scénario d’utilisation. Les sections suivantes sont disponibles :
- Résoudre les problèmes d’authentification d’application hébergée par Azure
- Résoudre les problèmes d’authentification de l’environnement de développement
- Résoudre les problèmes d’authentification du principal de service
- Résoudre les problèmes d’authentification des informations d’identification utilisateur
- Résoudre les problèmes d’authentification multilocataire
Le reste de cet article traite des techniques de dépannage générales et des conseils qui s’appliquent à tous les types d’informations d’identification.
Gérer les exceptions d’identité Azure
Comme indiqué dans la section Gestion des exceptions dans la section De résolution des problèmes du Kit de développement logiciel (SDK) Azure pour Java, il existe un ensemble complet d’exceptions et de codes d’erreur que le Kit de développement logiciel (SDK) Azure pour Java peut lever. Pour Azure Identity en particulier, il existe quelques types d’exceptions clés importants à comprendre.
ClientAuthenticationException
Toute méthode cliente de service qui envoie une demande au service peut déclencher des exceptions résultant d’erreurs d’authentification. Ces exceptions sont possibles, car le jeton est demandé à partir des informations d’identification lors du premier appel au service et sur toutes les demandes suivantes adressées au service qui doivent actualiser le jeton.
Pour distinguer ces échecs des défaillances dans le client de service, les classes Azure Identity s’déclenchent ClientAuthenticationException
avec des détails décrivant la source de l’erreur dans le message d’exception et éventuellement le message d’erreur. Selon l’application, ces erreurs peuvent ou ne pas être récupérables. Le code suivant montre un exemple d’interception 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
est un type d’exception spécial dérivé de ClientAuthenticationException
. Ce type d’exception est utilisé pour indiquer que les informations d’identification ne peuvent pas s’authentifier dans l’environnement actuel en raison d’un manque de configuration ou de configuration requise. Cette exception est également utilisée comme signal pour les types d’informations d’identification chaînés, tels que DefaultAzureCredential
et ChainedTokenCredential
, que les informations d’identification chaînées doivent continuer à essayer d’autres types d’informations d’identification plus loin dans la chaîne.
Problèmes d’autorisation
Les appels aux clients de service ayant HttpResponseException
une StatusCode
valeur de 401 ou 403 indiquent souvent que l’appelant ne dispose pas des autorisations suffisantes pour l’API spécifiée. Consultez la documentation du service pour déterminer quels rôles sont nécessaires pour la demande spécifique. Vérifiez que l’utilisateur ou le principal de service authentifié a reçu les rôles appropriés sur la ressource.
Rechercher des informations pertinentes dans les messages d’exception
ClientAuthenticationException
est levée lorsque des erreurs inattendues se produisent pendant l’authentification d’informations d’identification. Ces erreurs peuvent inclure les erreurs reçues des demandes adressées au service de jeton de sécurité Microsoft Entra (STS) et contiennent souvent des informations utiles au diagnostic. Tenez compte du message suivant ClientAuthenticationException
:
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
Ce message d’erreur contient les informations suivantes :
Type d’informations d’identification défaillant : type d’informations d’identification qui n’ont pas pu s’authentifier ( dans ce cas,
ClientSecretCredential
. Ces informations sont utiles lors du diagnostic des problèmes liés aux types d’informations d’identification chaînées, tels queDefaultAzureCredential
ouChainedTokenCredential
.Code et message d’erreur STS : code d’erreur et message retournés par Microsoft Entra STS : dans ce cas,
AADSTS7000215: Invalid client secret provided.
ces informations peuvent donner un aperçu de la raison spécifique de l’échec de la demande. Par exemple, dans ce cas spécifique, car la clé secrète client fournie est incorrecte. Pour plus d’informations sur les codes d’erreur STS, consultez la section Codes d’erreur AADSTS de l’authentification microsoft Entra et des codes d’erreur d’autorisation.ID de corrélation et horodatage : ID de corrélation et horodatage d’appel utilisés pour identifier la requête dans les journaux côté serveur. Ces informations sont utiles pour prendre en charge les ingénieurs lors du diagnostic d’échecs STS inattendus.
Activer et configurer la journalisation
Le Kit de développement logiciel (SDK) Azure pour Java offre un article de journalisation cohérent pour vous aider à résoudre les erreurs d’application et à accélérer leur résolution. Les journaux produits capturent le flux d’une application avant d’atteindre l’état terminal pour faciliter la localisation du problème racine. Pour obtenir des conseils sur la journalisation, consultez Configurer la journalisation dans le Kit de développement logiciel (SDK) Azure pour Java et résolution des problèmes.
La bibliothèque MSAL sous-jacente, MSAL4J, a également une journalisation détaillée. Cette journalisation est très détaillée et inclut toutes les données personnelles, y compris les jetons. Cette journalisation est la plus utile lors de l’utilisation de la prise en charge des produits. À partir de la version 1.10.0, les informations d’identification qui offrent cette journalisation ont une méthode appelée enableUnsafeSupportLogging()
.
Attention
Les demandes et les réponses dans la bibliothèque d’identités Azure contiennent des informations sensibles. Vous devez prendre des précautions pour protéger les journaux lors de la personnalisation de la sortie pour éviter de compromettre la sécurité des comptes.
Étapes suivantes
Si les conseils de dépannage de cet article n’aident pas à résoudre les problèmes lorsque vous utilisez le Kit de développement logiciel (SDK) Azure pour les bibliothèques clientes Java, nous vous recommandons de déposer un problème dans le référentiel Azure SDK pour Java GitHub.