Share via


Troubleshoot Azure Identity authentication issues

Ez a cikk a hibavizsgálati technikákat, az Azure Identity Java-ügyfélkódtár hitelesítő adatainak típusaival kapcsolatos gyakori hibákat és a hibák elhárításának lépéseit ismerteti. Mivel a Java Azure SDK-ban számos hitelesítő adattípus érhető el, a hibaelhárítási útmutatót használati forgatókönyv alapján szakaszokra osztottuk. A következő szakaszok állnak rendelkezésére:

A cikk további része általános hibaelhárítási technikákat és útmutatást tartalmaz, amelyek az összes hitelesítő adattípusra vonatkoznak.

Azure Identity-kivételek kezelése

Amint az a Hibaelhárítási áttekintés Azure SDK for Java szakaszában található kivételkezelésben szerepel, az Azure SDK for Java számos kivételt és hibakódot tartalmaz, amelyeket a Java-hoz készült Azure SDK képes dobni. Konkrétan az Azure Identity esetében van néhány fontos kivételtípus, amelyeket fontos megérteni.

ClientAuthenticationException

Bármely szolgáltatásügyfél-módszer, amely kérést küld a szolgáltatáshoz, kivételeket okozhat a hitelesítési hibákból. Ezek a kivételek azért lehetségesek, mert a jogkivonatot a rendszer a hitelesítő adatoktól kéri a szolgáltatás első hívásakor, valamint a szolgáltatáshoz érkező, a jogkivonat frissítéséhez szükséges kérések esetén.

Ha meg szeretné különböztetni ezeket a hibákat a szolgáltatásügyfél hibáitól, az Azure Identity-osztályok ClientAuthenticationException részletesen ismertetik a hiba forrását a kivételüzenetben és esetleg a hibaüzenetben. Az alkalmazástól függően előfordulhat, hogy ezek a hibák helyreállíthatók vagy nem állíthatók helyre. Az alábbi kód egy példát mutat be a fogásra 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 egy speciális kivételtípus, amely a következőből ClientAuthenticationExceptionszármazik: . Ez a kivételtípus azt jelzi, hogy a hitelesítő adatok nem hitelesíthetők az aktuális környezetben a szükséges konfiguráció vagy beállítás hiánya miatt. Ez a kivétel azt is jelzi, hogy a láncolt hitelesítő adatok típusai, például DefaultAzureCredential és ChainedTokenCredential, hogy a láncolt hitelesítő adatoknak a lánc későbbi részében továbbra is ki kell próbálniuk a többi hitelesítőadat-típust.

Engedélyekkel kapcsolatos problémák

A 401 vagy 403-at eredményező HttpResponseExceptionStatusCode szolgáltatás-ügyfelek hívásai gyakran azt jelzik, hogy a hívó nem rendelkezik megfelelő engedélyekkel a megadott API-hoz. Ellenőrizze a szolgáltatás dokumentációjában, hogy mely szerepkörök szükségesek az adott kéréshez. Győződjön meg arról, hogy a hitelesített felhasználó vagy szolgáltatásnév megkapta a megfelelő szerepköröket az erőforráson.

Releváns információk keresése a kivételüzenetekben

ClientAuthenticationException a hitelesítő adatok hitelesítése során váratlan hibák lépnek fel. Ezek a hibák tartalmazhatnak a Microsoft Entra biztonsági jogkivonat-szolgáltatáshoz (STS) érkező kérésekből érkező hibákat, és gyakran tartalmaznak a diagnózishoz hasznos információkat. Vegye figyelembe a következő ClientAuthenticationException üzenetet:

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

Ez a hibaüzenet a következő információkat tartalmazza:

  • Sikertelen hitelesítő adattípus: Az a hitelesítő adattípus, amelyet nem sikerült hitelesíteni – ebben az esetben. ClientSecretCredential Ez az információ hasznos lehet a láncolt hitelesítő adatok típusaival(például DefaultAzureCredential vagy ChainedTokenCredential.

  • STS-hibakód és üzenet: A Microsoft Entra STS által visszaadott hibakód és üzenet – AADSTS7000215: Invalid client secret provided. ebben az esetben ez az információ betekintést nyújt a kérés sikertelenségének konkrét okába. Ebben a konkrét esetben például azért, mert a megadott ügyfélkód helytelen. Az STS-hibakódokkal kapcsolatos további információkért tekintse meg a Microsoft Entra hitelesítési és engedélyezési hibakódjainak AADSTS hibakódokkal foglalkozó szakaszát.

  • Korrelációs azonosító és időbélyeg: A kérés kiszolgálóoldali naplókban való azonosításához használt korrelációs azonosító és hívásidőbélyeg. Ez az információ hasznos a mérnökök támogatásához a váratlan STS-hibák diagnosztizálásakor.

Naplózás engedélyezése és konfigurálása

Az Azure SDK for Java konzisztens naplózási történetet kínál az alkalmazáshibák elhárításához és a megoldás felgyorsításához. Az előállított naplók rögzítik az alkalmazás folyamatát, mielőtt elérnék a terminálállapotot, hogy segítsenek megtalálni a gyökérproblémát. A naplózással kapcsolatos útmutatásért tekintse meg a Naplózás konfigurálása az Azure SDK for Java-ban és a Hibaelhárítás a nézetben című témakört.

A mögöttes MSAL-kódtár, az MSAL4J is részletes naplózással rendelkezik. Ez a naplózás rendkívül részletes, és az összes személyes adatot tartalmazza, beleértve a jogkivonatokat is. Ez a naplózás akkor hasznos, ha terméktámogatással dolgozik. Az 1.10.0-s verziótól a naplózást biztosító hitelesítő adatok rendelkeznek egy úgynevezett metódussal enableUnsafeSupportLogging().

Figyelem

Az Azure Identity-kódtárban található kérések és válaszok bizalmas információkat tartalmaznak. A fiókbiztonság veszélyeztetésének elkerülése érdekében óvintézkedéseket kell tennie a naplók védelme érdekében a kimenet testreszabása során.

További lépések

Ha a cikkben szereplő hibaelhárítási útmutató nem segít megoldani az Azure SDK for Java ügyfélkódtárak használatakor jelentkező problémákat, javasoljuk, hogy küldjön egy hibát a Java-hoz készült Azure SDK GitHub-adattárban.