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.
Wenn Sie eine Windows Anwendung erstellen, sollten Sie die Authentifizierung von Benutzern mithilfe eines Authentifizierungsbrokers vereinfachen. Web Account Manager (WAM) ist ein Authentifizierungsbroker, der mit MSAL-Python funktioniert. WAM ist nur auf Windows 10 und höher sowie Windows Server 2019 und höher verfügbar.
Weitere Informationen zu den Vorteilen der Verwendung eines Authentifizierungsbrokers finden Sie in der dokumentation zu MSAL.NET.
Usage
Um den Broker zu verwenden, müssen Sie die brokerbezogenen Pakete zusätzlich zum Kern-MSAL von PyPI installieren:
pip install msal[broker]>=1.20,<2
Wenn brokerbezogene Pakete nicht installiert sind und Sie versuchen, den Authentifizierungsbroker zu verwenden, erhalten Sie den Fehler ImportError: Sie müssen Abhängigkeit installieren, indem Sie "msal[broker]>=1.20,2<" installieren.
Instanziieren Sie als Nächstes ein neues PublicClientApplication und setzen Sie enable_broker_on_windows auf True. Dadurch wird sichergestellt, dass MSAL versucht, mit WAM zu kommunizieren, anstatt ein neues Browserfenster zu öffnen. Wenn Sie eine plattformübergreifende Anwendung entwickeln, müssen Sie auch enable_broker_on_mac verwenden, wie im Artikel Verwenden von MSAL Python mit einem Authentifizierungsbroker unter macOS beschrieben.
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
Sie können jetzt ein Token abrufen, indem Sie acquire_token_interactive aufrufen und über parent_window_handle ein Handle des übergeordneten Fensters angeben:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
WAM benötigt das Handle eines übergeordneten Fensters, um sicherzustellen, dass das Dialogfeld korrekt über dem aufrufenden Fenster angezeigt wird. MSAL leitet dies nicht direkt ab, da es viele Variablen gibt, die beeinflussen können, an welches Fenster WAM gebunden werden muss, und Entwickler, die Anwendungen erstellen, am besten geeignet sind, um zu entscheiden, welches Fenster es sein soll.
Für Konsolenanwendungen macht MSAL es einfach, indem es eine sofort einsatzbereite Lösung zum Abrufen des Fensterhandles für das Terminal bereitstellt – CONSOLE_WINDOW_HANDLE. Für Desktopanwendungen ist möglicherweise mehr Arbeit mit der Windows-API erforderlich, um das Fensterhandle abzurufen. Hilfspakete wie pywin32 können bei API-Aufrufen hilfreich sein.
Stellen Sie vor dem Ausführen der Anwendung sicher, dass Sie die Umleitungs-URL für die Desktop-App konfigurieren:
Um den Windows-Broker zu verwenden, muss für Ihre Anwendung im Azure-Portal die richtige Umleitungs-URL im folgenden Format konfiguriert sein:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Wenn die Umleitungs-URL nicht konfiguriert ist, erhalten Sie eine broker_error ähnlich (pii). Status: Response_Status.Status_ApiContractViolation, Fehlercode: 3399614473, Tag: 557973642.
Wenn die Konfiguration und Instanziierung korrekt war, sollte der Authentifizierungsbroker gestartet werden, sobald Sie die Anwendung ausgeführt haben, und dem Benutzer erlauben, das Konto auszuwählen, mit dem er sich authentifizieren möchte.
Beachten Sie, dass beim Wechsel zur brokerbasierten Authentifizierung der Aufruf von acquire_token_interactive weiterhin zu einem stillen Versuch führt, ein Token abzurufen, wenn der Benutzer zuvor angemeldet war und der Anmeldestatus noch gültig ist, und nur bei Bedarf eine Aufforderung angezeigt wird. Wenn Sie lieber immer dazu auffordern, können Sie diesen optionalen Parameter prompt="select_account"verwenden.
Unterschiede bei der Brokererfahrung
Je nachdem, welche Autorität beim Instanziieren PublicClientApplicationangegeben wurde, kann die Broker-Benutzeroberfläche unterschiedlich sein.
/Verbraucher
Wird nur für die Authentifizierung mit persönlichen Microsoft Konten verwendet.
/gemeinsam
Wird für die Authentifizierung mit persönlichen Microsoft Konten sowie Geschäfts- und Schulkonten verwendet.
/Organisationen
Wird nur zum Anmelden mit Geschäfts- und Schulkonten verwendet.
Wenn login_hint bereitgestellt wird, aber das Konto noch nicht in WAM registriert ist, wird der Hinweis automatisch im Feld "E-Mail" oder "Telefon " ausgefüllt.
/TENANT_ID
Wird nur für die Authentifizierung mit Geschäfts- und Schulkonten innerhalb des angegebenen Mandanten verwendet.
Wenn login_hint bereitgestellt wird, aber das Konto noch nicht in WAM registriert ist, wird der Hinweis automatisch im Feld "E-Mail" oder "Telefon " ausgefüllt.