Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Python MSAL-ben a legtöbb hiba az API-hívás visszatérési értékeként jelenik meg. A hiba szótárként jelenik meg, amely a Microsoft Identitásplatform JSON-válaszát tartalmazza.
- A sikeres válasz tartalmazza a
"access_token"kulcsot. A válasz formátumát az OAuth2 protokoll határozza meg. További információ: 5.1 Sikeres válasz - A hibaválasz tartalmaz
"error"és általában"error_description". A válasz formátumát az OAuth2 protokoll határozza meg. További információ: 5.2 Hibaválasz
Hiba esetén a "error" kulcs egy géppel olvasható kódot tartalmaz. Ha a "error" például egy "interaction_required", felszólíthatja a felhasználót, hogy a hitelesítési folyamat befejezéséhez további információkat adjon meg. Ha a(z) "error""invalid_grant", megkérheti a felhasználót, hogy adja meg újra a hitelesítési adatait. Az alábbi kódrészlet egy példa az MSAL Python hibakezelésére.
from msal import ConfidentialClientApplication
authority_url = "https://login.microsoftonline.com/your_tenant_id"
client_id = "your_client_id"
client_secret = "your_client_secret"
scopes = ["https://graph.microsoft.com/.default"]
app = ConfidentialClientApplication(client_id, authority=authority_url, client_credential=client_secret)
result = app.acquire_token_silent(scopes=scopes, account=None)
if not result:
result = app.acquire_token_silent(scopes=scopes)
if "access_token" in result:
print("Access token: %s" % result["access_token"])
else:
print("Error: %s" % result.get("error"))
Ha hibát ad vissza, a "error_description" kulcs egy emberileg olvasható üzenetet is tartalmaz, és általában van egy "error_code" kulcs is, amely géppel olvasható Microsoft Identitásplatform hibakódot tartalmaz. További információ a különböző Microsoft Identitásplatform hibakódokról: Hitelesítési és engedélyezési hibakódok.
A Python MSAL-ben a kivételek ritkán fordulnak elő, mivel a legtöbb hibát hibaérték visszaadásával kezeli a rendszer. A ValueError kivétel csak akkor jelentkezik, ha probléma merül fel a kódtár használatának módjával kapcsolatban, például ha az API-paraméterek helytelenül vannak formázva.
Feltételes hozzáféréssel és jogcímekkel kapcsolatos kihívások
A tokenek csendes lekérése során az alkalmazás hibákat kaphat, ha az elérni kívánt API Feltételes hozzáférés jogcímkérését követeli meg, például MFA-szabályzat miatt.
A hiba kezelésének módja az, hogy az MSAL használatával interaktívan szerzünk be egy tokent. Ez kéri a felhasználót, és lehetőséget ad nekik a szükséges feltételes hozzáférési szabályzat teljesítésére.
Bizonyos esetekben, amikor feltételes hozzáférést igénylő API-t hív meg, az API által visszaadott hibában jogcímigényt kaphat. Ha például a Feltételes hozzáférési szabályzat megköveteli a felügyelt eszköz (Intune) használatát, a hibaüzenet valami ilyesmi lesz: AADSTS53000: Az eszköznek felügyeltnek kell lennie ennek az erőforrásnak az eléréséhez, vagy valami hasonló. Ebben az esetben átadhatja a claim-eket a tokenlekérési hívásban, hogy a felhasználó felszólítást kapjon a megfelelő szabályzat követelményeinek teljesítésére.
Újrapróbálkozás hibák és kivételek után
Az MSAL HTTP-hívásokat indít a Microsoft Entra szolgáltatáshoz, és időnként hibák léphetnek fel. A hálózat például leállhat, vagy a kiszolgáló túlterhelt.
Az MSAL Python 1.11+ automatikusan végrehajt egy újrapróbálkozási kísérletet.
Ezt a viselkedést a testreszabási http_client utasítások követésével szabhatja testre.
HTTP 429
Ha a Service Token Server (STS) túl sok kérés miatt túlterhelt, HTTP 429-es hibát ad vissza, a Retry-After válaszmezőben pedig jelzi, hogy mennyi idő múlva próbálkozhat újra.
Az alkalmazással szemben az volt az elvárás, hogy korlátozza a további kérések gyakoriságát, és csak a megadott időtartam letelte után próbálkozzon újra.
Az MSAL Python 1.16+ segítségével egyszerűen újrapróbálkozhat igény szerint egy hitelesítési kéréssel (például amikor a végfelhasználó ismét a bejelentkezési gombra kattint), az MSAL Python 1.16+ automatikusan szabályozza ezeket az újrapróbálkozási kísérleteket úgy, hogy ugyanazt a hibaválaszt ad vissza egy HTTP-gyorsítótárból, és csak akkor küld valódi HTTP-hívást, amikor a megadott időszak után megkísérlik a hívást.
Alapértelmezés szerint ez a fojtási mechanizmus úgy működik, hogy a fojtási információkat egy beépített, memóriában lévő HTTP-gyorsítótárban tárolja.
HTTP-gyorsítótárként saját dict-szerű objektumot is megadhat, amelynek tartalmának tartósítását Ön szabályozhatja.
További részletekért tekintse meg az MSAL Python API dokumentációját.
Következő lépések
- Érdemes engedélyezni a naplózást az MSAL Pythonhoz készült verziójában, hogy segítsen a problémák diagnosztizálásában és hibakeresésében.