Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra le tecniche di analisi degli errori, gli errori comuni per i tipi di credenziali nella libreria client Java di Azure Identity e i passaggi di mitigazione per risolvere questi errori. Poiché in Azure SDK per Java sono disponibili molti tipi di credenziali, la guida alla risoluzione dei problemi è stata suddivisa in sezioni basate sullo scenario di utilizzo. Sono disponibili le sezioni seguenti:
- Risolvere i problemi di autenticazione delle applicazioni ospitate su Azure.
- Risolvere i problemi di autenticazione dell'ambiente di sviluppo
- Risolvere i problemi di autenticazione dell'entità del servizio
- Risolvere i problemi di autenticazione multi-tenant
Nella parte restante di questo articolo vengono illustrate le tecniche di risoluzione dei problemi generali e le linee guida applicabili a tutti i tipi di credenziali.
Gestire le eccezioni di Identità di Azure
Come indicato nella sezione Gestione delle eccezioni in Azure SDK per Java di Panoramica della risoluzione dei problemi, l'Azure SDK per Java può generare un set completo di eccezioni e codici di errore. Per Identità di Azure in particolare, esistono alcuni tipi di eccezioni chiave importanti da comprendere.
ClientAuthenticationException
Qualsiasi metodo client del servizio che effettua una richiesta al servizio può generare eccezioni derivanti da errori di autenticazione. Queste eccezioni sono possibili perché il token viene richiesto dalla credenziale nella prima chiamata al servizio e in tutte le richieste successive al servizio che devono aggiornare il token.
Per distinguere questi errori dagli errori nel client del servizio, le classi di Identità di Azure generano ClientAuthenticationException dettagli che descrivono l'origine dell'errore nel messaggio di eccezione ed eventualmente il messaggio di errore. A seconda dell'applicazione, questi errori possono o non essere recuperabili. Il codice seguente illustra un esempio di cattura 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();
}
EccezioneCredenzialiNonDisponibili
CredentialUnavailableException è un tipo di eccezione speciale derivato da ClientAuthenticationException. Questo tipo di eccezione viene usato per indicare che le credenziali non possono eseguire l'autenticazione nell'ambiente corrente a causa della mancanza di configurazione o installazione necessarie. Questa eccezione viene usata anche come segnale per i tipi di credenziali concatenati, ad esempio DefaultAzureCredential e ChainedTokenCredential, che le credenziali concatenati devono continuare a provare altri tipi di credenziali più avanti nella catena.
Problemi di autorizzazione
Le chiamate ai client del servizio che risultano in HttpResponseException con un StatusCode di 401 o 403 indicano spesso che il richiedente non dispone di autorizzazioni sufficienti per l'API specificata. Controllare la documentazione del servizio per determinare quali ruoli sono necessari per la richiesta specifica. Assicurarsi che all'utente autenticato o all'entità servizio siano stati concessi i ruoli appropriati per la risorsa.
Trovare informazioni rilevanti nei messaggi di eccezione
ClientAuthenticationException viene lanciata quando si verificano errori imprevisti durante l'autenticazione di una credenziale. Questi errori possono includere errori ricevuti dalle richieste al servizio token di sicurezza Microsoft Entra e spesso contengono informazioni utili per la diagnosi. Considera il seguente messaggio 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
Questo messaggio di errore contiene le informazioni seguenti:
Tipo di credenziale fallita: Il tipo di credenziale che ha fallito l'autenticazione - in questo caso,
ClientSecretCredential. Queste informazioni sono utili per la diagnosi dei problemi relativi ai tipi di credenziali concatenati, ad esempioDefaultAzureCredentialoChainedTokenCredential.Codice e messaggio di errore del servizio token di sicurezza: il codice di errore e il messaggio restituiti dal servizio token di sicurezza Microsoft Entra. In questo caso,
AADSTS7000215: Invalid client secret provided.queste informazioni possono fornire informazioni dettagliate sul motivo specifico per cui la richiesta non è riuscita. Ad esempio, in questo caso specifico, perché il segreto client fornito non è corretto. Per ulteriori informazioni sui codici di errore STS, vedere la sezione codici di errore AADSTS dei codici di errore di autenticazione e autorizzazione di Microsoft Entra.ID di correlazione e timestamp: ID di correlazione e timestamp di chiamata usati per identificare la richiesta nei log lato server. Queste informazioni sono utili per supportare gli ingegneri durante la diagnosi di guasti imprevisti allo STS.
Abilitare e configurare la registrazione
Azure SDK per Java offre una storia di registrazione coerente che consente di risolvere gli errori delle applicazioni e di accelerare la risoluzione. I log generati acquisiscono il flusso di un'applicazione prima di raggiungere lo stato terminale per individuare la causa principale del problema. Per indicazioni sul logging, vedere Configurare il logging in Azure SDK per Java e Panoramica sulla risoluzione dei problemi.
La libreria MSAL sottostante, MSAL4J, ha anche una funzione di registrazione dettagliata. Questa registrazione è estremamente dettagliata e include tutti i dati personali, inclusi i token. Questa registrazione è più utile quando si lavora con il supporto tecnico del prodotto. A partire dalla versione 1.10.0, le credenziali che offrono questa registrazione hanno un metodo denominato enableUnsafeSupportLogging().
Attenzione
Le richieste e le risposte nella libreria di identità di Azure contengono informazioni riservate. È necessario adottare precauzioni per proteggere i log quando si personalizza l'output per evitare di compromettere la sicurezza degli account.
Passaggi successivi
Se le linee guida per la risoluzione dei problemi in questo articolo non consentono di risolvere i problemi quando si usano le librerie client di Azure SDK per Java, è consigliabile segnalare un problema nel repository GitHub Azure SDK per Java.