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.
Microsoft Authentication Library (MSAL) (MSAL) ist ein Software Development Kit (SDK), mit dem Apps den Microsoft Single Sign-On bei Linux-Broker aufrufen können, eine Linux-Komponente, die unabhängig von der Linux-Distribution ausgeliefert wird, jedoch mit einem Paket-Manager installiert wird.sudo apt install microsoft-identity-brokersudo dnf install microsoft-identity-broker
Diese Komponente fungiert als Authentifizierungsbroker, sodass die Benutzer Ihrer App von der Integration mit Konten profitieren können, die Linux bekannt sind – z. B. von dem Konto, mit dem Sie sich bei Ihren Linux-Sitzungen angemeldet haben, für Apps, die Daten vom Broker beziehen.
Der Broker wird auch als Abhängigkeit von Anwendungen gebündelt, die von Microsoft (z. B. Unternehmensportal) entwickelt wurden. Ein Beispiel für die Installation des Brokers ist, wenn ein Linux-Computer über eine Endpunktverwaltungslösung wie Microsoft Intune bei der Geräteflotte eines Unternehmens registriert wird.
Was ist ein Broker?
Ein Authentifizierungsbroker ist eine Anwendung, die auf dem Computer eines Benutzers ausgeführt wird, der die Authentifizierungs-Handshakes und die Tokenwartung für verbundene Konten verwaltet. Das Linux-Betriebssystem verwendet die Microsoft-Einmalanmeldung für Linux als Authentifizierungsbroker. Es bietet entwicklern und Kunden viele Vorteile, darunter:
- Ermöglicht einmaliges Anmelden: Ermöglicht Apps die Vereinfachung der Authentifizierung von Benutzern mit Microsoft Entra ID und schützt Microsoft Entra ID Aktualisierungstoken vor Exfiltration und Missbrauch.
- Verbesserte Sicherheit. Viele Sicherheitsverbesserungen werden mit dem Broker bereitgestellt, ohne die Anwendungslogik aktualisieren zu müssen.
- Unterstützte Funktionen Mit Hilfe des Brokers können Entwickler auf umfangreiche Betriebssystem- und Dienstfunktionen zugreifen.
- Systemintegration. Anwendungen, die das Broker-Plug-and-Play mit der integrierten Kontoauswahl verwenden, sodass der Benutzer schnell ein vorhandenes Konto auswählen kann, anstatt die gleichen Anmeldeinformationen immer wieder einzugeben.
- Tokenschutz. Microsoft einmaliges Anmelden für Linux stellt sicher, dass die Aktualisierungstoken gerätegebunden sind.
Wie kann ich mich für die Verwendung des Brokers anmelden?
- In der MSAL-Python-Bibliothek haben wir das
enable_broker_on_linuxFlag eingeführt, das den Broker sowohl auf WSL als auch auf eigenständigem Linux ermöglicht.- Wenn Sie die Brokerunterstützung ausschließlich auf WSL für Azure CLI aktivieren möchten, können Sie den Azure CLI App-Code ändern, um das
enable_broker_on_wslFlag exklusiv auf WSL zu aktivieren. - Wenn Sie eine plattformübergreifende Anwendung entwickeln, müssen Sie auch
enable_broker_on_windowsverwenden, wie im Artikel Using MSAL Python with Web Account Manager beschrieben. - Sie können eine beliebige Kombination der folgenden Opt-In-Parameter auf "true" festlegen:
- Wenn Sie die Brokerunterstützung ausschließlich auf WSL für Azure CLI aktivieren möchten, können Sie den Azure CLI App-Code ändern, um das
| Opt-In-Kennzeichnung | Wenn die App ausgeführt wird | Die App hat diese URI im Azure-Portal als Umleitungs-URI für die Desktopplattform registriert. |
|---|---|---|
| Broker unter Windows aktivieren | Windows 10+ | ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id |
| enable_broker_on_wsl | WSL | ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id |
| Broker auf dem Mac aktivieren | Mac mit installiertem Unternehmensportal | msauth.com.msauth.unsignedapp://auth |
| enable_broker_on_linux | Linux mit Installierter Intune |
https://login.microsoftonline.com/common/oauth2/nativeclient (MUSS aktiviert sein) |
Ihre Anwendung muss brokerspezifische Umleitungs-URIs unterstützen. Insbesondere für
Linuxmuss die URL für die Weiterleitungs-URI wie folgt lauten:https://login.microsoftonline.com/common/oauth2/nativeclientUm den Broker zu verwenden, müssen Sie die brokerbezogenen Pakete zusätzlich zum Kern-MSAL von PyPI installieren:
pip install "msal[broker]>=1.33.0b1,<2"Nach der Konfiguration können Sie aufrufen
acquire_token_interactive, um ein Token zu erwerben.result = app.acquire_token_interactive(["User.ReadBasic.All"], parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Parameter für die Brokerunterstützung
Die folgenden Parameter stehen zum Konfigurieren der Brokerunterstützung in MSAL Python zur Verfügung. Diese Parameter können an den PublicClientApplication Konstruktor oder an die acquire_token_interactive Methode übergeben werden.
| Parameters: | Typ | Description |
|---|---|---|
| Broker unter Windows aktivieren | boolean |
Diese Einstellung ist nur wirksam, wenn Ihre App auf Windows 10+ ausgeführt wird. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet. New in MSAL Python 1.25.0. |
| enable_broker_on_wsl | boolean |
Diese Einstellung ist nur wirksam, wenn Ihre App auf WSL ausgeführt wird. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet.
New in MSAL Python 1.25.0. |
| Broker auf dem Mac aktivieren | boolean |
Diese Einstellung ist nur wirksam, wenn Ihre App auf dem Mac mit Unternehmensportal installiert wird. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet.
New in MSAL Python 1.31.0. |
| enable_broker_on_linux | boolean |
Diese Einstellung ist nur wirksam, wenn Ihre App unter Linux ausgeführt wird, auf der Intune installiert ist. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet.
New in MSAL Python 1.33.0. |
| parent_window_handle | int |
OPTIONAL |
Hinweise zu parent_window_handle
Der parent_window_handle Parameter ist erforderlich, auch wenn er unter Linux nicht verwendet wird. Bei GUI-Anwendungen wird der Anmeldeaufforderungsspeicherort ad-hoc bestimmt und kann derzeit nicht an ein bestimmtes Fenster gebunden werden. In einem zukünftigen Update wird dieser Parameter verwendet, um das tatsächliche übergeordnete Fenster zu bestimmen.
| Zustand | Description |
|---|---|
| App möchte keinen Broker verwenden | parent_window_handle muss nicht angegeben werden |
| Die App entscheidet sich für die Verwendung eines Brokers. | parent_window_handle ist erforderlich. |
| App ist eine GUI-App, die auf Windows- oder Mac-System ausgeführt wird. | erforderlich, um das Fensterhandle anzugeben, damit das Anmeldefenster vor Ihrem Fenster angezeigt wird. |
| App ist eine Konsolen-App, die auf Windows- oder Mac-System ausgeführt wird. | kann PublicClientApplication.CONSOLE_WINDOW_HANDLE als Platzhalter verwenden |
| Die App soll eine plattformübergreifende Anwendung sein. | Die App muss enable_broker_on_windows verwenden, wie im Artikel Verwenden von MSAL Python mit Web Account Manager beschrieben. |
Die Fallbackverhalten der Brokerunterstützung von MSAL Python
MSAL gibt entweder einen Fehler aus oder greift automatisch auf Nicht-Broker-Flows zurück.
MSAL ignoriert die enable_broker_... und den Broker bei den Authentifizierungsabläufen umgehen, von denen bekannt ist, dass sie NICHT vom Broker unterstützt werden. Dazu gehören ADFS, B2C usw. Weitere Szenarien, in denen ein Broker verwendet werden könnte, finden Sie unten.
MSAL gibt einen Fehler aus, wenn der App-Entwickler sich für die Verwendung eines Brokers entschieden hat, aber das direkte Abhängigkeitspaket „mid-tier“ nicht installiert ist. Fehlermeldung führt App-Entwickler dazu, die richtige Abhängigkeit msal[broker] zu deklarieren. Hier geben wir einen Fehler aus, weil App-Entwickler auf diesen Fehler reagieren können.
MSAL „deaktiviert“ den Broker automatisch und führt ein Fallback auf einen Nicht-Broker aus, wenn dies aktiviert ist und die Abhängigkeit zwar installiert ist, ihre Initialisierung jedoch fehlschlägt. Wir gehen davon aus, dass dies auf einem Gerät geschieht, dessen Betriebssystem zu alt ist oder die zugrunde liegende Brokerkomponente irgendwie nicht verfügbar ist. Hier kann weder ein App-Entwickler noch der Endnutzer viel tun. Schließlich muss die Richtlinie für bedingten Zugriff den Benutzer zwingen, zu einem anderen Gerät zu wechseln.
MSAL gibt einen Fehler aus, wenn der Broker aktiviert, installiert und initialisiert ist, nachfolgende Tokenanforderungen jedoch fehlschlagen.
Important
Wenn Broker-bezogene Pakete nicht installiert sind und Sie versuchen, den Authentifizierungsbroker zu verwenden, erhalten Sie eine Fehlermeldung: ImportError: You need to install dependency by: pip install "msal[broker]>=1.xx,<2".
Note
Der parent_window_handle Parameter ist erforderlich, auch wenn er unter Linux nicht verwendet wird. Bei GUI-Anwendungen wird der Anmeldeaufforderungsspeicherort ad-hoc bestimmt und kann derzeit nicht an ein bestimmtes Fenster gebunden werden. In einem zukünftigen Update wird dieser Parameter verwendet, um das tatsächliche übergeordnete Fenster zu bestimmen.
Zwischenspeichern von Tokens
Der Authentifizierungsbroker verarbeitet das Zwischenspeichern von Aktualisierungs- und Zugriffstoken. Sie müssen keine benutzerdefinierte Zwischenspeicherung einrichten.
Erstellen einer Beispiel-App
Sie finden eine Beispiel-App, die veranschaulicht, wie MSAL Python mit dem Authentifizierungsbroker unter Linux im MSAL-Python GitHub-Repository verwendet wird. Die Beispiel-App befindet sich im samples/console_app Verzeichnis und enthält Beispiele für die Verwendung des Brokers für die Authentifizierung.
App-Registrierung
Aktualisieren Sie Ihre App-Registrierung im Azure-Portal, um die brokerspezifische Umleitungs-URI für Linux hinzuzufügen:
https://login.microsoftonline.com/common/oauth2/nativeclient
Linux-Abhängigkeiten
Überprüfen Sie zunächst, ob Python3 auf Ihrer Linux-Verteilung installiert ist.
python3 --version
Falls nicht, installieren Sie sie mit dem Paket-Manager für Ihre Verteilung.
Zur Installation auf Debian-/Ubuntu-basierten Linux-Distributionen:
sudo add-apt-repository -y universe
sudo apt update
sudo apt install python3 python3-pip libwebkit2gtk-4.1-dev -y
Python Abhängigkeiten
Um den Broker zu verwenden, müssen Sie die brokerbezogenen Pakete zusätzlich zum Kern-MSAL von PyPI installieren:
pip install "msal[broker]>=1.33.0b1,<2"
Projekt erstellen
Nach der Konfiguration können Sie aufrufen acquire_token_interactive , um ein Token zu erwerben.
import sys # For simplicity, we'll read config file from 1st CLI param sys.argv[1]
import json
import logging
import requests
import msal
# Optional logging
# logging.basicConfig(level=logging.DEBUG)
var_authority = "https://login.microsoftonline.com/common"
var_client_id = "your-client-id-here" # Replace with your app's client ID
var_username = "your-username-here" # Replace with your username, e.g., "
var_scope = ["User.ReadBasic.All"]
# Removed unused variable to avoid confusion
# Create a preferably long-lived app instance which maintains a token cache (Default cache is in memory only).
app = msal.PublicClientApplication(
var_client_id,
authority=var_authority,
enable_broker_on_windows=True,
enable_broker_on_wsl=True
)
# The pattern to acquire a token looks like this.
result = None
# Firstly, check the cache to see if this end user has signed in before
accounts = app.get_accounts(username=var_username)
if accounts:
logging.info("Account(s) exists in cache, probably with token too. Let's try.")
result = app.acquire_token_silent(var_scope, account=accounts[0])
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from AAD.")
result = app.acquire_token_interactive(var_scope,parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
if "access_token" in result:
print("Access token is: %s" % result['access_token'])
else:
print(result.get("error"))
print(result.get("error_description"))
print(result.get("correlation_id")) # You may need this when reporting a bug
if 65001 in result.get("error_codes", []): # Not mean to be coded programatically, but...
# AAD requires user consent for U/P flow
print("Visit this to consent:", app.get_authorization_request_url(config["scope"]))