Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek se zabývá technikami šetření selhání, běžnými chybami typů přihlašovacích údajů v klientské knihovně Azure Identity Java a kroky pro zmírnění těchto chyb. Vzhledem k tomu, že v Azure SDK pro Java je k dispozici mnoho typů přihlašovacích údajů, rozdělí se tento průvodce odstraňováním potíží do oddílů na základě scénáře použití. K dispozici jsou následující části:
- Řešení potíží s ověřováním aplikací hostovaných v Azure
- Řešení potíží s ověřováním vývojového prostředí
- Odstraňování potíží s ověřováním aplikačního objektu
- Řešení potíží s víceúrovňovým autentizace
Zbývající část tohoto článku popisuje obecné techniky řešení potíží a pokyny, které platí pro všechny typy přihlašovacích údajů.
Řešení výjimek identity v Azure
Jak je uvedeno v zpracování výjimek v části Azure SDK pro Javapřehledu řešení potíží, může Azure SDK pro Java vyvolat komplexní sadu výjimek a kódů chyb. Pro Azure Identity je důležité pochopit několik klíčových typů výjimek.
ClientAuthenticationException
Jakákoli metoda klienta služby, která odešle požadavek na službu, může vyvolat výjimky z chyb ověřování. K těmto výjimkám může dojít, protože token se vyžaduje z přihlašovacích údajů při prvním volání služby a u všech následných požadavků na službu, které potřebují token aktualizovat.
Aby se tato selhání odlišily od selhání v klientovi služby, třídy identit Azure vyvolávají ClientAuthenticationException podrobnosti popisující zdroj chyby ve zprávě o výjimce a případně chybovou zprávu. V závislosti na aplikaci můžou být tyto chyby obnovitelné. Následující kód ukazuje příklad zachycení 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();
}
Výjimka při nedostupných přihlašovacích údajích
CredentialUnavailableException je zvláštní typ výjimky odvozený z ClientAuthenticationException. Tento typ výjimky použijte k označení, že přihlašovací údaje nelze ověřit v aktuálním prostředí kvůli nedostatku požadované konfigurace nebo nastavení. Tato výjimka také signalizuje typům zřetězených přihlašovacích údajů, například DefaultAzureCredential a ChainedTokenCredential, že zřetězené přihlašovací údaje mají pokračovat zkoušením dalších typů přihlašovacích údajů později v řetězci.
Problémy s oprávněními
Volání klientů služby, která vedou k HttpResponseException s StatusCode 401 nebo 403, obvykle znamenají, že volající nemá dostatečná oprávnění pro dané rozhraní API. Projděte si dokumentaci ke službě a zjistěte, které role jsou potřeba pro konkrétní požadavek. Ujistěte se, že ověřenému uživateli nebo instančnímu objektu služby byly u prostředku přiřazeny příslušné role.
Vyhledání relevantních informací ve zprávách o výjimce
Výjimka ClientAuthenticationException se vyvolá, když dojde k neočekávaným chybám při ověřování přihlašovacích údajů. Tyto chyby můžou zahrnovat chyby přijaté z požadavků na službu tokenů zabezpečení (STS) Microsoft Entra a často obsahují informace, které pomáhají s diagnostikou. Představte si následující ClientAuthenticationException zprávu:
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
Tato chybová zpráva obsahuje následující informace:
Typ neúspěšných přihlašovacích údajů: Typ přihlašovacích údajů, které se nepodařilo ověřit – v tomto případě
ClientSecretCredential. Tyto informace jsou užitečné při diagnostice problémů s zřetězenými typy přihlašovacích údajů, napříkladDefaultAzureCredentialChainedTokenCredential.Kód chyby služby STS a zpráva: Kód chyby a zpráva vrácená ze služby Microsoft Entra STS – v tomto případě
AADSTS7000215: Invalid client secret provided.tyto informace poskytují přehled o konkrétním důvodu, proč požadavek selhal. V tomto konkrétním případě je například zadaný tajný klíč klienta nesprávný. Další informace o kódech chyb služby STS najdete v části Kódy chyb AADSTS v dokumentu Kódy chyb ověřování a autorizace Microsoft Entra.ID korelace a časové razítko: ID korelace a časové razítko volání používané k identifikaci požadavku v protokolech na straně serveru. Tyto informace jsou užitečné pro podporu techniků při diagnostice neočekávaných selhání služby STS.
Povolení a konfigurace protokolování
Azure SDK pro Java nabízí konzistentní scénář protokolování, který pomáhá řešit chyby aplikací a urychlit jejich řešení. Protokoly zachycují tok aplikace před dosažením stavu terminálu, aby pomohly najít původní problém. Pokyny k protokolování najdete v tématu Konfigurace protokolování v sadě Azure SDK pro Javu a řešení potíží v zobrazení.
Základní knihovna MSAL, MSAL4J, má také podrobné logování. Toto protokolování je velmi podrobné a zahrnuje všechna osobní data, včetně tokenů. Toto protokolování je nejužitečnější při práci s podporou produktů. Od verze 1.10.0 mají přihlašovací údaje, které nabízejí toto protokolování, metodu s názvem enableUnsafeSupportLogging().
Upozornění
Žádosti a odpovědi v knihovně identit Azure obsahují citlivé informace. Při přizpůsobení výstupu proveďte opatření k ochraně protokolů, abyste zabránili narušení zabezpečení účtu.
Další kroky
Pokud pokyny k řešení potíží v tomto článku nepomáhají vyřešit problémy při použití Azure SDK pro Java klientských knihoven, založte problém v Azure SDK pro úložiště Java GitHub.