Řešení potíží s ověřováním identit Azure

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:

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říklad DefaultAzureCredentialChainedTokenCredential.

  • 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.