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.
Die Microsoft Authentication Library (MSAL) (MSAL) für Python ermöglicht es Ihnen, Benutzer oder Apps mit Microsoft-Identitäten anzumelden (Microsoft Entra ID-, Microsoft-Konten und Microsoft Entra ID-Konten). Mithilfe von MSAL-Python können Sie Token von Microsoft Entra ID abrufen, um geschützte Web-APIs wie Microsoft Graph, andere Microsoft-APIs oder Ihre eigenen APIs aufzurufen.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto.
- Python 3,6+.
Installiere das Paket
Installieren Sie das MSAL für Python-Paket. MsAL Python finden Sie auf PyPI.
pip install msal
Identitätskonzepte
MSAL Python ist Teil des Microsoft Identity Platform Ökosystems. Machen Sie sich mit den folgenden Konzepten vertraut, um MSAL Python effektiv zum Schutz Ihrer Anwendungen und APIs zu verwenden:
- Identitäts- und Zugriffsverwaltung
- Authentifizierung und Autorisierung
- OAuth 2.0 und OpenID Connect (OIDC) in der Microsoft-Identitätsplattform
- Vertrauliche und öffentliche Clientkonten im Microsoft Identity Platform
- Sicherheitstoken
Verwendungsszenarios
Um MSAL Python zu verwenden, registrieren Sie eine Anwendung bei der Microsoft Identity Platform. Sie benötigen ein Azure Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto , wenn Sie kein Konto haben. Sie können Ihre App in einem Kundenmandanten oder Mandanten für Mitarbeiter registrieren.
Anwendungen können MSAL-Python verwenden, um Token für den Zugriff auf geschützte APIs abzurufen. Verschiedene App-Typen erwerben Token mit unterschiedlichen Authentifizierungsflüssen. Zu den unterstützten App-Typen gehören Desktopanwendungen, Webanwendungen, Web-APIs und Anwendungen, die auf Geräten ohne Browser (z. B. IoT-Geräte) ausgeführt werden.
In MSAL Python werden Anwendungen wie folgt kategorisiert:
- Öffentliche Clientanwendungen (Desktop und Mobil). Diese Arten von Apps können keine geheimen App-Schlüssel sicher speichern.
- Vertrauliche Clientanwendungen (Web-Apps, Web-APIs und Daemon-Anwendungen). Diese Art von Apps speichert sicher einen geheimen Schlüssel, der bei Microsoft Entra ID registriert ist.
Weitere Informationen finden Sie in der Dokumentation zu öffentlichen Client- und vertraulichen Client-Apps sowie den verschiedenen App-Typen und deren Authentifizierungsflüssen im Microsoft Identity Platform.
Nachdem Sie ermittelt haben, ob ihre Anwendung eine öffentliche oder vertrauliche Clientanwendung ist, können Sie MSAL-Python verwenden, um Token für verschiedene Szenarien abzurufen.
Grundlegende Nutzung
Das Abrufen von Token mit MSAL Python folgt einem dreistufigen Muster. Es gibt einige Variationen für verschiedene Flüsse. Wenn Sie sie in Aktion sehen möchten, laden Sie unsere Beispiele herunter.
MSAL basiert auf einer sauberen Trennung zwischen öffentlichen Client- und vertraulichen Clientanwendungen. Erstellen Sie daher eine
PublicClientApplicationoder eineConfidentialClientApplicationInstanz, und verwenden Sie sie während des Lebenszyklus Ihrer Anwendung wieder. Bei einer öffentlichen Clientanwendung kann der Initialisierungscode beispielsweise wie folgt aussehen:from msal import PublicClientApplication app = PublicClientApplication( "your_client_id", authority="https://login.microsoftonline.com/common")Der Autoritätswert variiert je nach Kontotyp, in dem Sie sich anmelden, und die Art des Mandanten, in dem Ihre App registriert ist. Um sich beispielsweise sowohl mit geschäftlichen als auch mit persönlichen Microsoft-Konten anzumelden, die in Mandanten der Belegschaft (Microsoft Entra ID) bereitgestellt werden, würden Sie
https://login.microsoftonline.com/commonverwenden. Für Kundenkonten, die in Kundenmandanten bereitgestellt werden, sieht Ihre Berechtigung etwa so aus:https://<subdomain>.ciamlogin.comWeitere Informationen finden Sie in der Dokumentation zum Tokenherausgeber.Versuchen Sie zuerst, die Token aus dem Cache abzurufen. Das API-Modell in MSAL bietet Ihnen explizite Kontrolle über die Verwendung des Tokencaches. Die Zwischenspeicherungskomponente ist zwar technisch optional, es wird jedoch dringend empfohlen, sie in Ihrer Anwendung zu verwenden. Mithilfe des Caches können Sie sicherstellen, dass Sie keine zusätzlichen API-Aufrufe tätigen und die Tokenaktualisierung automatisch behandeln.
# initialize result variable to hole the token response result = None # We now check the cache to see # whether we already have some accounts that the end user already used to sign in before. accounts = app.get_accounts() if accounts: # If so, you could then somehow display these accounts and let end user choose print("Pick the account you want to use to proceed:") for a in accounts: print(a["username"]) # Assuming the end user chose this one chosen = accounts[0] # Now let's try to find a token in cache for this account result = app.acquire_token_silent(["User.Read"], account=chosen)Wenn im Cache kein geeignetes Token vorhanden ist oder Sie den vorherigen Schritt überspringen möchten, senden Sie eine Anforderung an Microsoft Entra ID, um ein Token abzurufen. Es gibt je nach Clienttyp und Szenario unterschiedliche Methoden, aber für dieses Beispiel zeigen wir, wie
acquire_token_interactiveverwendet wird, wobei der Benutzer aufgefordert wird, seine Anmeldeinformationen anzugeben.if not result: # So no suitable token exists in cache. Let's get a new one from Azure AD. result = app.acquire_token_interactive(scopes=["User.Read"]) if "access_token" in result: print(result["access_token"]) # Yay! else: print(result.get("error")) print(result.get("error_description")) print(result.get("correlation_id")) # You may need this when reporting a bugSpeichern Sie den Code lokal in einer Python-Datei, z. B. msaltest.py.
Führen Sie den Code aus, indem Sie
python .\msalpytest.pyausführen. Die folgende Abbildung zeigt den Anmeldevorgang für dieses Beispiel.
Sobald die Authentifizierung abgeschlossen ist und Sie den Browser geschlossen haben, sollten Sie in der Lage sein, das Zugriffstoken im Terminal zu sehen.
Bewährte Methoden für eine robuste Unternehmensanwendung
Sie können ein Token für eine geschützte Web-API mithilfe von MSAL Python abrufen. Sie müssen sich auch nicht selbst um die Aktualisierung der Refresh-Token kümmern. Um jedoch robuste, unternehmensfähige Anwendungen zu erstellen, müssen Sie etwas mehr tun. So möchten Sie z. B. Folgendes ausführen:
Behandeln Sie Ausnahmen, sowohl beim Abrufen eines Tokens, als auch beim Aufrufen der geschützten Web-API. Insbesondere gilt: Wenn Ihre Anwendung in einem Microsoft Entra-Mandanten ausgeführt wird, in dem die Mandantenadministratoren Richtlinien für den bedingten Zugriff festgelegt haben, um die Multi-Faktor-Authentifizierung (MFA) zu erzwingen, müssen Sie eine Anspruchsaufforderung verarbeiten.
Möglicherweise möchten Sie die Protokollierung aktivieren, um Probleme mit Ihrer Anwendung zu beheben und Ihren Benutzern zu helfen, während sie ihre Privatsphäre respektieren und mit der DSGVO konform sind.
Beispiele
Es gibt mehrere Beispiele, mit denen Sie mit MSAL Python beginnen können.
- Beispiele aus dem Bibliotheks-Repository. Diese Beispiele veranschaulichen die verschiedenen Konfigurationen und Authentifizierungsflüsse, die Sie mithilfe von MSAL Python implementieren.
- Ein einzelnes Repository mit Beispielen, die in unserer Dokumentation verwendet werden. Diese Beispiele enthalten unterstützende Dokumentationen, die Ihnen beim Erstellen und Replizieren von Grund auf helfen.
References
Siehe auch
- Instanziieren Sie Ihre Anwendung mithilfe von MSAL Python
- Abrufen von Token mithilfe von MSAL-Python