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 sadě Azure SDK pro Javu je k dispozici mnoho typů přihlašovacích údajů, rozdělili jsme 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 části Řešení potížív části Zpracování výjimek v sadě Azure SDK pro Javu, existuje komplexní sada výjimek a kódů chyb, které může vyvolat sada Azure SDK pro Javu. Konkrétně pro Azure Identity existuje několik klíčových typů výjimek, které je důležité pochopit.
ClientAuthenticationException
Jakákoli metoda klienta služby, která odešle požadavek na službu, může vyvolat výjimky vyplývající z chyb ověřování. Tyto výjimky jsou možné, protože token se vyžaduje z autentizačních údajů při prvním volání služby a při všech následných požadavcích na službu, které potřebují token obnovit.
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 nebo nemusí 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 se používá 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 se také používá jako signál pro zřetězené typy přihlašovacích údajů, jako například DefaultAzureCredential a ChainedTokenCredential, že zřetězené přihlašovací údaje by měly pokračovat ve zkoušení jiných typů přihlašovacích údajů později v rámci řetězu.
Problémy s oprávněními
Volání klientů služeb, jejichž HttpResponseException výsledkem je StatusCode 401 nebo 403, často značí, že volající nemá dostatečná oprávnění pro zadané 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ý uživatel nebo služební principál má přiděleny příslušné role na prostředku.
Vyhledání relevantních informací ve zprávách o výjimce
ClientAuthenticationException je vyvolán, když dojde k neočekávaným chybám při ověřování přihlašovacích údajů. Mezi tyto chyby můžou patřit chyby přijaté z požadavků na službu tokenů zabezpečení Microsoft Entra (STS) a často obsahují informace užitečné pro diagnostiku. 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.můžou tyto informace poskytnout přehled o konkrétním důvodu, proč požadavek selhal. Například v tomto konkrétním případě, protože zadaný tajný klíč klienta je 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í
Sada Azure SDK pro Javu nabízí konzistentní scénář protokolování, který pomáhá řešit chyby aplikací a urychlit jejich řešení. Vytvořené protokoly zachycují tok aplikace před dosažením jejího konečného stavu, aby pomohly najít kořenový 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 je nutné provést preventivní opatření k ochraně protokolů, abyste zabránili narušení zabezpečení účtu.
Další kroky
Pokud pokyny pro řešení potíží v tomto článku nepomohly vyřešit problémy při používání klientských knihoven Azure SDK pro Java, doporučujeme nahlásit problém v úložišti Azure SDK pro Java na GitHubu.