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:
- Az Azure által üzemeltetett alkalmazáshitelesítés hibaelhárítása
- Fejlesztési környezet hitelesítésének hibaelhárítása
- Egyszerű szolgáltatáshitelesítés hibaelhárítása
- Felhasználói hitelesítő adatok hitelesítésének hibaelhárítása
- Több-bérlős hitelesítés hibaelhárítása
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 ClientAuthenticationException
szá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ő HttpResponseException
StatusCode
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áulDefaultAzureCredential
vagyChainedTokenCredential
.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.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: