Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Microsoft Authentication Library (MSAL) to zestaw Software Development Kit (SDK), który umożliwia aplikacjom wywoływanie brokera Microsoft Single Sign-on to Linux, komponentu systemu Linux dostarczanego niezależnie od dystrybucji systemu Linux, instalowanego jednak za pomocą menedżera pakietów przy użyciu sudo apt install microsoft-identity-broker lub sudo dnf install microsoft-identity-broker.
Ten składnik działa jako broker uwierzytelniania, dzięki czemu użytkownicy aplikacji mogą korzystać z integracji z kontami znanymi z systemu Linux — na przykład konto zalogowane do sesji systemu Linux dla aplikacji korzystających z brokera.
Broker jest również powiązany jako zależność aplikacji opracowanych przez Microsoft (na przykład Portal firmy)). Przykładem instalacji brokera jest zarejestrowanie komputera z systemem Linux w firmie za pośrednictwem rozwiązania do zarządzania punktami końcowymi, takiego jak Microsoft Intune.
Co to jest broker
Broker uwierzytelniania to aplikacja uruchamiana na komputerze użytkownika, która zarządza uzgadnianiami uwierzytelniania i konserwacją tokenów dla połączonych kont. System operacyjny Linux używa mechanizmu logowania jednokrotnego firmy Microsoft dla systemu Linux jako brokera uwierzytelniania. Ma wiele korzyści zarówno dla deweloperów, jak i klientów, w tym:
- Umożliwia logowanie jednokrotne: umożliwia aplikacjom uproszczenie sposobu uwierzytelniania użytkowników przy użyciu Microsoft Entra ID i chroni Microsoft Entra ID tokeny odświeżania przed eksfiltracją i nieprawidłowym użyciem
- Zwiększone zabezpieczenia. Wiele ulepszeń zabezpieczeń jest dostarczanych z brokerem bez konieczności aktualizowania logiki aplikacji.
- Obsługiwane funkcje Dzięki brokerowi deweloperzy mogą uzyskać dostęp do bogatych możliwości systemu operacyjnego i usług.
- Integracja systemu. Aplikacje korzystające z funkcji plug and play brokera z wbudowanym selektorem kont, umożliwiające użytkownikowi szybkie wybranie istniejącego konta zamiast wielokrotnego wpisywania tych samych poświadczeń.
- Ochrona tokenów. Logowanie jednokrotne firmy Microsoft w systemie Linux zapewnia, że tokeny odświeżające są powiązane z urządzeniem.
Jak wyrazić zgodę na korzystanie z brokera?
- W bibliotece MSAL dla języka Python wprowadziliśmy flagę
enable_broker_on_linux, która włącza obsługę brokera zarówno w środowisku WSL, jak i w samodzielnym systemie Linux.- Jeśli Twoim celem jest włączenie obsługi brokera wyłącznie w środowisku WSL w Azure CLI, możesz rozważyć zmodyfikowanie kodu aplikacji Azure CLI w celu aktywowania flagi
enable_broker_on_wslwyłącznie w środowisku WSL. - Jeśli piszesz aplikację dla wielu platform, musisz również użyć elementu
enable_broker_on_windows, zgodnie z opisem w artykule Using MSAL Python with Web Account Manager (Używanie Python biblioteki MSAL z menedżerem kont sieci Web). - Można ustawić dowolną kombinację następujących parametrów zgody na wartość true:
- Jeśli Twoim celem jest włączenie obsługi brokera wyłącznie w środowisku WSL w Azure CLI, możesz rozważyć zmodyfikowanie kodu aplikacji Azure CLI w celu aktywowania flagi
| Flaga zgody | Jeśli aplikacja zostanie uruchomiona | Aplikacja zarejestrowała to jako identyfikator URI przekierowania dla platformy klasycznej w portalu Azure |
|---|---|---|
| włącz_brokera_w_systemie_windows | 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 |
| Włącz brokera na komputerze Mac | Komputer Mac z zainstalowanym Portal firmy | msauth.com.msauth.unsignedapp://auth |
| enable_broker_on_linux | System Linux z zainstalowaną usługą Intune |
https://login.microsoftonline.com/common/oauth2/nativeclient (MUSI być włączona) |
Aplikacja musi obsługiwać identyfikatory URI przekierowania właściwe dla brokera. W przypadku
Linuxadres URL identyfikatora URI przekierowania musi mieć postać:https://login.microsoftonline.com/common/oauth2/nativeclientAby korzystać z brokera, należy zainstalować pakiety powiązane z brokerem oprócz podstawowej biblioteki MSAL z repozytorium PyPI:
pip install "msal[broker]>=1.33.0b1,<2"Po skonfigurowaniu można wywołać
acquire_token_interactive, aby uzyskać token.result = app.acquire_token_interactive(["User.ReadBasic.All"], parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Parametry obsługi brokera
Następujące parametry są dostępne do konfigurowania obsługi brokera w bibliotece MSAL Python. Te parametry można przekazać do konstruktora PublicClientApplication lub do acquire_token_interactive metody .
| Parametry: | Typ | Description |
|---|---|---|
| włącz_brokera_w_systemie_windows | boolean |
To ustawienie jest skuteczne tylko wtedy, gdy aplikacja jest uruchomiona w Windows 10+. Ten parametr ma domyślną wartość None, co oznacza, że biblioteka MSAL nie będzie korzystać z brokera. New in MSAL Python 1.25.0. |
| enable_broker_on_wsl | boolean |
To ustawienie jest skuteczne tylko wtedy, gdy aplikacja jest uruchomiona w programie WSL. Ten parametr ma domyślną wartość None, co oznacza, że biblioteka MSAL nie będzie korzystać z brokera.
New in MSAL Python 1.25.0. |
| Włącz brokera na komputerze Mac | boolean |
To ustawienie jest skuteczne tylko wtedy, gdy aplikacja jest uruchomiona na komputerze Mac z zainstalowanym Portal firmy. Ten parametr ma domyślną wartość None, co oznacza, że biblioteka MSAL nie będzie korzystać z brokera.
New in MSAL Python 1.31.0. |
| enable_broker_on_linux | boolean |
To ustawienie jest skuteczne tylko wtedy, gdy aplikacja jest uruchomiona w systemie Linux z zainstalowaną usługą Intune. Ten parametr ma domyślną wartość None, co oznacza, że biblioteka MSAL nie będzie korzystać z brokera.
New in MSAL Python 1.33.0. |
| parent_window_handle | int |
OPCJONALNIE |
Uwagi dotyczące parent_window_handle
Parametr parent_window_handle jest wymagany, mimo że w systemie Linux nie jest używany. W przypadku aplikacji z graficznym interfejsem użytkownika lokalizacja monitu logowania zostanie określona ad hoc i obecnie nie może być powiązana z określonym oknem. W przyszłej aktualizacji ten parametr zostanie użyty do określenia rzeczywistego okna nadrzędnego .
| Warunek | Description |
|---|---|
| Aplikacja nie chce korzystać z brokera | nie trzeba określać parent_window_handle |
| Aplikacja decyduje się na korzystanie z brokera | parent_window_handle jest wymagany |
| Aplikacja to aplikacja graficznego interfejsu użytkownika uruchomiona w systemie Windows lub Mac | należy podać uchwyt swojego okna, aby okno logowania pojawiło się na wierzchu Twojego okna |
| Aplikacja to aplikacja konsolowa uruchomiona w systemie Windows lub Mac | może użyć symbolu zastępczego PublicClientApplication.CONSOLE_WINDOW_HANDLE |
| Aplikacja ma być aplikacją dla wielu platform | Aplikacja musi używać elementu enable_broker_on_windows, zgodnie z opisem w artykule Using MSAL Python with Web Account Manager (Korzystanie z biblioteki MSAL Python z menedżerem kont sieci Web). |
Zachowania awaryjne obsługi brokera w bibliotece MSAL Python
MSAL albo zgłosi błąd, albo po cichu przejdzie do przepływów bez użycia brokera.
MSAL zignoruje enable_broker_… i pomiń brokera w tych przepływach uwierzytelniania, o których wiadomo, że nie są obsługiwane przez brokera. Obejmuje to usługi ADFS, B2C itp. Inne scenariusze "could-use-broker" można znaleźć poniżej.
MSAL zgłasza błąd, gdy deweloper aplikacji zdecydował się na użycie brokera, ale nie zainstalowano bezpośredniego pakietu zależności „mid-tier”. Komunikat o błędzie prowadzi dewelopera aplikacji do deklarowania poprawnej zależności msal[broker]. Tutaj zgłaszamy błąd, ponieważ deweloperzy aplikacji mogą podjąć na jego podstawie działania.
MSAL po cichu „dezaktywuje” brokera i przechodzi do trybu bez brokera, gdy ta opcja jest włączona, zależność jest zainstalowana, ale jej inicjalizacja nie powiedzie się. Przewidujemy, że stanie się to na urządzeniu, którego system operacyjny jest zbyt stary lub podstawowy składnik brokera jest w jakiś sposób niedostępny. Ani deweloper aplikacji, ani użytkownik końcowy nie mogą tu wiele zrobić. Ostatecznie zasady dostępu warunkowego wymuszają, aby użytkownik przełączyć się na inne urządzenie.
MSAL zwraca błąd, gdy broker został włączony, zainstalowany i zainicjowany, ale kolejne żądania tokenu nie powiodły się.
Ważna
Jeśli pakiety związane z brokerem nie są zainstalowane i spróbujesz użyć brokera uwierzytelniania, zostanie wyświetlony błąd: ImportError: You need to install dependency by: pip install "msal[broker]>=1.xx,<2".
Note
Parametr parent_window_handle jest wymagany, mimo że w systemie Linux nie jest używany. W przypadku aplikacji z graficznym interfejsem użytkownika lokalizacja monitu logowania zostanie określona ad hoc i obecnie nie może być powiązana z określonym oknem. W przyszłej aktualizacji ten parametr zostanie użyty do określenia rzeczywistego okna nadrzędnego .
Buforowanie tokenów
Broker uwierzytelniania obsługuje buforowanie tokenów odświeżania i dostępu. Nie trzeba konfigurować niestandardowego buforowania.
Tworzenie przykładowej aplikacji
Przykładową aplikację, która pokazuje, jak używać biblioteki MSAL Python z brokerem uwierzytelniania w systemie Linux, można znaleźć w repozytorium GitHub projektu MSAL Python. Przykładowa aplikacja znajduje się w samples/console_app katalogu i zawiera przykłady użycia brokera do uwierzytelniania.
Rejestracja aplikacji
Zaktualizuj rejestrację aplikacji w portalu Azure, aby uwzględnić identyfikator URI przekierowania specyficzny dla brokera dla systemu Linux:
https://login.microsoftonline.com/common/oauth2/nativeclient
Zależności systemu Linux
Najpierw sprawdź, czy środowisko python3 jest zainstalowane w dystrybucji systemu Linux.
python3 --version
Jeśli nie, zainstaluj go przy użyciu menedżera pakietów dla dystrybucji.
- Ubuntu
- Red Hat Enterprise Linux
Aby zainstalować w dystrybucji Linuksa opartej na Debianie/Ubuntu:
sudo add-apt-repository -y universe
sudo apt update
sudo apt install python3 python3-pip libwebkit2gtk-4.1-dev -y
Zależności Pythona
Aby korzystać z brokera, należy zainstalować pakiety powiązane z brokerem oprócz podstawowej biblioteki MSAL z repozytorium PyPI:
pip install "msal[broker]>=1.33.0b1,<2"
Stwórz projekt
Po skonfigurowaniu można wywołać acquire_token_interactive, aby uzyskać token.
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"]))