Azure Identitáshitelesítési problémák elhárítása

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 számos hitelesítő adattípus érhető el a Java Azure SDK, ez a hibaelhárítási útmutató használati forgatókönyv alapján szakaszokra oszlik. 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 azt a hibaelhárítási áttekintés Java szakaszának Azure SDK kivételkezelésében is említettük, a Java Azure SDK a kivételek és hibakódok átfogó készletét hozhatják létre. A Azure Identitás esetében fontos néhány fontos kivételtípus megértése.

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ák alól. Ezek a kivételek azért fordulhatnak elő, mert a jogkivonatot a rendszer a hitelesítő adatokból kéri a szolgáltatás első hívásakor, valamint a szolgáltatásnak a jogkivonat frissítéséhez szükséges minden további kérése esetén.

Az Azure Identity osztályok ClientAuthenticationException-t emelnek ki, hogy megkülönböztessék ezeket a hibákat a szolgáltatási kliens hibáitól, a hiba forrásának részleteivel 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. Az alábbi kód egy példát mutat be az elkapására 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 (HitelesítésiAdatNemElérhetőKivétel)

CredentialUnavailableException egy speciális kivételtípus, amely a következőből ClientAuthenticationExceptionszármazik: . Ezzel a kivételtípussal jelezheti, 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 a láncba kapcsolt hitelesítőadat-típusoknak, például a DefaultAzureCredential és a ChainedTokenCredential típusnak, hogy a láncba kapcsolt hitelesítő adatnak a lánc későbbi elemeinél továbbra is meg kell próbálnia más hitelesítőadat-típusokat.

Engedélyproblémák

Azok a szolgáltatáskliensekhez intézett hívások, amelyek HttpResponseException eredményeznek 401-es vagy 403-as StatusCode mellett, gyakran azt jelzik, hogy a hívó nem rendelkezik elegendő jogosultsággal a megadott API használatá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 megkapja a megfelelő szerepköröket az erőforráson.

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

A ClientAuthenticationException kivétel akkor jelenik meg, ha váratlan hibák lépnek fel a hitelesítő adatok hitelesítése közben. 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 olyan információkat tartalmaznak, amelyek segítenek a diagnózisban. 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 kapcsolatos problémák diagnosztizálásakor, például DefaultAzureCredential vagy ChainedTokenCredential esetén.

  • STS-hibakód és üzenet: A Microsoft Entra STS-ből visszaadott hibakód és üzenet – ebben az esetben ez az információ bemutatja a AADSTS7000215: Invalid client secret provided. kérés sikertelen voltának konkrét okát. Ebben a konkrét esetben például 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ódjainakAADSTS 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

A Java Azure SDK egységes 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. A 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 túlzottan részletes, és minden személyes adatot tartalmaz, beleértve a tokeneket is. Ez a naplózás különösen hasznos, amikor a 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().

Figyelmeztetés

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 tenni a naplók védelme érdekében a kimenet testreszabása során.

Következő lépések

Ha a cikkben található hibaelhárítási útmutató nem segít megoldani az Azure SDK for Java ügyfélkódtárainak használata során felmerülő problémákat, jelentsen be egy problémát az Azure SDK for Java GitHub-adattárban.