Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In MSAL für Python werden die meisten Fehler als Rückgabewert aus dem API-Aufruf vermittelt. Der Fehler wird als Wörterbuch dargestellt, das die JSON-Antwort des Microsoft Identity Platform enthält.
- Eine erfolgreiche Antwort enthält den
"access_token"Schlüssel. Das Format der Antwort wird durch das OAuth2-Protokoll definiert. Weitere Informationen finden Sie unter 5.1 Successful Response - Eine Fehlerantwort enthält
"error"und in der Regel"error_description". Das Format der Antwort wird durch das OAuth2-Protokoll definiert. Weitere Informationen finden Sie unter 5.2 Error Response
Wenn ein Fehler zurückgegeben wird, enthält der "error" Schlüssel einen maschinenlesbaren Code. Wenn dies "error" beispielsweise eine "interaction_required"ist, können Sie den Benutzer auffordern, zusätzliche Informationen bereitzustellen, um den Authentifizierungsprozess abzuschließen. Wenn "error""invalid_grant" ist, können Sie den Benutzer auffordern, seine Anmeldeinformationen erneut einzugeben. Der folgende Codeausschnitt ist ein Beispiel für die Fehlerbehandlung in MSAL für Python.
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"))
Wenn ein Fehler zurückgegeben wird, enthält der "error_description" Schlüssel auch eine lesbare Nachricht, und es gibt in der Regel auch einen "error_code" Schlüssel, der einen computerlesbaren Microsoft Identity Platform Fehlercode enthält. Weitere Informationen zu den verschiedenen Microsoft Identity Platform Fehlercodes finden Sie unter Authentifizierungs- und Autorisierungsfehlercodes.
In MSAL für Python sind Ausnahmen selten, da die meisten Fehler durch Zurückgeben eines Fehlerwerts behandelt werden. Die ValueError Ausnahme wird nur ausgelöst, wenn ein Problem mit der Verwendung der Bibliothek auftritt, z. B. wenn API-Parameter falsch formatiert sind.
Herausforderungen für bedingten Zugriff und Ansprüche
Beim stillen Abrufen von Token kann bei Ihrer Anwendung ein Fehler auftreten, wenn eine API, auf die Sie zugreifen möchten, eine Anspruchsanforderung für den bedingten Zugriff erfordert, z. B. eine MFA-Richtlinie.
Das Muster für die Behandlung dieses Fehlers besteht darin, ein Token mithilfe von MSAL interaktiv abzurufen. Dadurch wird der Benutzer aufgefordert und erhält die Möglichkeit, die erforderliche Richtlinie für bedingten Zugriff zu erfüllen.
In bestimmten Fällen können Sie beim Aufrufen einer API, die Bedingten Zugriff erfordert, in der Fehlermeldung der API eine Claims-Abfrage erhalten. Wenn beispielsweise die Richtlinie für den bedingten Zugriff über ein verwaltetes Gerät (Intune) verfügt, ist der Fehler etwa AADSTS53000: Ihr Gerät muss verwaltet werden, um auf diese Ressource oder etwas ähnliches zuzugreifen. In diesem Fall können Sie die Claims beim Aufruf zum Abrufen eines Tokens übergeben, damit der Benutzer aufgefordert wird, die Anforderungen der entsprechenden Richtlinie zu erfüllen.
Wiederholen nach Fehlern und Ausnahmen
MSAL führt HTTP-Aufrufe an den Microsoft Entra Dienst aus, und gelegentlich können Fehler auftreten. Beispielsweise kann das Netzwerk nach unten gehen oder der Server überlastet ist.
MSAL Python 1.11+ führt automatisch einen Wiederholungsversuch für Sie aus.
Sie können dieses Verhalten anpassen, indem Sie die http_client Anpassungsanweisungen befolgen.
HTTP 429
Wenn der Diensttokenserver (Service Token Server, STS) mit zu vielen Anfragen überlastet ist, gibt er den HTTP-Fehler 429 mit einem Hinweis darauf zurück, wann Sie es im Antwortfeld Retry-After erneut versuchen können.
Ihre App sollte die nachfolgenden Anfragen drosseln und es erst nach dem angegebenen Zeitraum erneut versuchen.
MSAL Python 1.16+ erleichtert es Ihnen, eine Authentifizierungsanforderung bei Bedarf erneut zu versuchen (z. B. wenn der Endbenutzer erneut auf die Anmeldeschaltfläche klickt), msAL Python 1.16+ würde diese Wiederholungsversuche automatisch durch Zurückgeben derselben Fehlerantwort aus einem HTTP-Cache und nur dann einen echten HTTP-Aufruf senden, wenn dieser Aufruf nach dem angegebenen Zeitraum versucht wird.
Standardmäßig funktioniert dieser Drosselungsmechanismus, indem Drosselungsinformationen in einem integrierten HTTP-Cache gespeichert werden.
Sie können ein eigenes dictObjekt wie den HTTP-Cache bereitstellen, mit dem Sie steuern können, wie der Inhalt beibehalten werden soll.
Weitere Informationen finden Sie in der MSAL-Python-API-Dokumentation.
Nächste Schritte
- Erwägen Sie, die Protokollierung in MSAL für Python zu aktivieren, um Probleme zu diagnostizieren und zu debuggen.