Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Libreria di Autenticazione Microsoft (MSAL) è un Software Development Kit (SDK) che consente alle app di chiamare l'accesso Single Sign-On Microsoft al broker Linux, un componente Linux fornito indipendentemente dalla distribuzione Linux, ma viene installato usando uno strumento di gestione pacchetti usando sudo apt install microsoft-identity-broker o sudo dnf install microsoft-identity-broker.
Questo componente funge da broker di autenticazione e consente agli utenti della tua app di beneficiare dell'integrazione con gli account noti a Linux, ad esempio l'account con cui hai effettuato l'accesso alla tua sessione Linux, per le app che utilizzano il broker.
Il broker viene anche incluso come dipendenza delle applicazioni sviluppate da Microsoft (ad esempio Portale aziendale). Un esempio di installazione del broker in fase di installazione è quando un computer Linux viene registrato nella flotta di dispositivi di una società tramite una soluzione di gestione degli endpoint come Microsoft Intune.
Che cos'è un broker
Un gestore di autenticazione è un'applicazione eseguita nel computer di un utente che gestisce gli handshake di autenticazione e la manutenzione dei token per gli account connessi. Il sistema operativo Linux utilizza Microsoft Single Sign-On per Linux come broker di autenticazione. Offre molti vantaggi per sviluppatori e clienti, tra cui:
- Abilita l'accesso Single Sign-On: consente alle app di semplificare l'autenticazione degli utenti con Microsoft Entra ID e di proteggere Microsoft Entra ID token di aggiornamento dall'esfiltrazione e dall'uso improprio
- Sicurezza avanzata. Molti miglioramenti della sicurezza vengono distribuiti con il broker, senza dover aggiornare la logica dell'applicazione.
- Supporto delle funzionalità. Con l'aiuto degli sviluppatori broker è possibile accedere a funzionalità avanzate del sistema operativo e del servizio.
- Integrazione del sistema. Applicazioni che usano il broker plug-and-play con lo strumento di selezione dell'account integrato, consentendo all'utente di scegliere rapidamente un account esistente invece di reinserire ripetutamente le stesse credenziali.
- Protezione del token Microsoft Single Sign-On per Linux garantisce che i token di aggiornamento siano associati al dispositivo.
Come scegliere di utilizzare il broker?
- Nella libreria di Python MSAL è stato introdotto il
enable_broker_on_linuxflag , che abilita il broker sia in WSL che in Linux autonomo.- Se l'obiettivo è abilitare il supporto broker esclusivamente in WSL per interfaccia della riga di comando di Azure, è possibile modificare il codice dell'app interfaccia della riga di comando di Azure per attivare il
enable_broker_on_wslflag esclusivamente in WSL. - Se si sta sviluppando un'applicazione multipiattaforma, sarà necessario usare anche
enable_broker_on_windows, come descritto nell'articolo Uso di MSAL Python con Web Account Manager. - È possibile impostare qualsiasi combinazione dei parametri di consenso esplicito seguenti su true:
- Se l'obiettivo è abilitare il supporto broker esclusivamente in WSL per interfaccia della riga di comando di Azure, è possibile modificare il codice dell'app interfaccia della riga di comando di Azure per attivare il
| Indicatore di consenso esplicito | Se l'app verrà eseguita in | L'app l'ha registrata come URI di reindirizzamento della piattaforma desktop in portale di Azure |
|---|---|---|
| abilitare_broker_in_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 |
| enable_broker_on_mac | Mac con Portale aziendale installato | msauth.com.msauth.unsignedapp://auth |
| abilita_broker_su_linux | Linux con Intune installato |
https://login.microsoftonline.com/common/oauth2/nativeclient (DEVE essere abilitato) |
L'applicazione deve supportare URI di reindirizzamento specifici del broker. In
Linuxparticolare, l'URL per l'URI di reindirizzamento deve essere:https://login.microsoftonline.com/common/oauth2/nativeclientPer usare il broker, è necessario installare i pacchetti correlati al broker oltre al core MSAL da PyPI:
pip install "msal[broker]>=1.33.0b1,<2"Dopo la configurazione, è possibile chiamare
acquire_token_interactiveper acquisire un token.result = app.acquire_token_interactive(["User.ReadBasic.All"], parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Parametri per il supporto broker
I parametri seguenti sono disponibili per configurare il supporto broker in MSAL Python. Questi parametri possono essere passati al PublicClientApplication costruttore o al acquire_token_interactive metodo .
| Parametri: | Tipo | Description |
|---|---|---|
| abilitare_broker_in_Windows | boolean |
Questa impostazione è valida solo se l'app è in esecuzione in Windows 10+. Per impostazione predefinita, questo parametro è Nessuno, il che significa che MSAL non utilizzerà un broker. New in MSAL Python 1.25.0. |
| enable_broker_on_wsl | boolean |
Questa impostazione è valida solo se l'app è in esecuzione in WSL. Per impostazione predefinita, questo parametro è Nessuno, il che significa che MSAL non utilizzerà un broker.
New in MSAL Python 1.25.0. |
| enable_broker_on_mac | boolean |
Questa impostazione è valida solo se l'app è in esecuzione in Mac con Portale aziendale installato. Per impostazione predefinita, questo parametro è Nessuno, il che significa che MSAL non utilizzerà un broker.
New in MSAL Python 1.31.0. |
| abilita_broker_su_linux | boolean |
Questa impostazione è valida solo se l'app è in esecuzione in Linux con Intune installato. Per impostazione predefinita, questo parametro è Nessuno, il che significa che MSAL non utilizzerà un broker.
New in MSAL Python 1.33.0. |
| parent_window_handle | int |
OPZIONALE |
Note riguardanti parent_window_handle
Il parent_window_handle parametro è obbligatorio anche se in Linux non viene usato. Per le applicazioni GUI, il percorso del prompt di accesso verrà determinato ad hoc e attualmente non può essere associato a una finestra specifica. In un aggiornamento futuro, questo parametro verrà usato per determinare la finestra padre effettiva .
| Condition | Description |
|---|---|
| L'app non vuole usare un broker | non è necessario specificare un parent_window_handle |
| L'app sceglie di usare un broker | parent_window_handle è necessario |
| L'app è un'app GUI in esecuzione in Windows o nel sistema Mac | è necessario fornire l'handle della finestra, in modo che la finestra di accesso venga visualizzata sopra la finestra dell'utente |
| L'app è un'app console in esecuzione nel sistema Windows o Mac | può usare un segnaposto PublicClientApplication.CONSOLE_WINDOW_HANDLE |
| L'app deve essere un'applicazione multipiattaforma | L'app deve usare enable_broker_on_windows, come descritto nell'articolo Uso di MSAL Python con Gestione account Web. |
Comportamenti di fallback del supporto broker di MSAL Python
MSAL genererà un errore o eseguirà il fallback in modo invisibile all'utente nei flussi non broker.
MSAL ignorerà il parametro enable_broker_... e bypassare il broker in quei flussi di autenticazione che notoriamente NON sono supportati dal broker. Sono inclusi ADFS, B2C e così via. Per altri scenari in cui si potrebbe usare un broker, vedere di seguito.
MSAL genera un errore quando lo sviluppatore dell'applicazione ha scelto di usare il broker, ma non è installato un pacchetto “mid-tier” con dipendenza diretta. Il messaggio di errore guida lo sviluppatore dell'app per dichiarare la dipendenza corretta msal[broker]. In questo caso si verifica un errore perché l'errore è utilizzabile per gli sviluppatori di app.
MSAL "disattiva" silenziosamente il broker e ripiega sulla modalità senza broker, se questa opzione è abilitata e la dipendenza è installata ma non è riuscita a inizializzarsi. Si prevede che ciò accadrebbe in un dispositivo il cui sistema operativo è troppo vecchio o il componente broker sottostante non è in qualche modo disponibile. Non c'è molto che uno sviluppatore di app o l'utente finale possa fare in questo caso. Alla fine, i criteri di accesso condizionale forzano l'utente a passare a un dispositivo diverso.
MSAL restituisce un errore quando il broker è abilitato, installato e inizializzato, ma le successive richieste di token non vanno a buon fine.
Importante
Se i pacchetti correlati al broker non sono installati e si tenterà di usare il broker di autenticazione, verrà visualizzato un errore: ImportError: You need to install dependency by: pip install "msal[broker]>=1.xx,<2".
Note
Il parent_window_handle parametro è obbligatorio anche se in Linux non viene usato. Per le applicazioni GUI, il percorso del prompt di accesso verrà determinato ad hoc e attualmente non può essere associato a una finestra specifica. In un aggiornamento futuro, questo parametro verrà usato per determinare la finestra padre effettiva .
Memorizzazione nella cache dei token
Il broker di autenticazione gestisce la memorizzazione nella cache dei token di aggiornamento e di accesso. Non è necessario configurare la memorizzazione nella cache personalizzata.
Compilazione di un'app di esempio
È possibile trovare un'app di esempio che illustra come usare MSAL Python con il broker di autenticazione in Linux nel repository msal Python GitHub. L'app di esempio si trova nella samples/console_app directory e include esempi di come usare il broker per l'autenticazione.
Registrazione dell'app
Aggiornare la registrazione dell'app nel portale di Azure per includere l'URI di reindirizzamento specifico del broker per Linux:
https://login.microsoftonline.com/common/oauth2/nativeclient
Dipendenze Linux
Verificare prima di tutto se python3 è installato nella distribuzione Linux.
python3 --version
In caso contrario, installarlo usando la gestione pacchetti per la distribuzione.
Per eseguire l'installazione in una distribuzione Linux basata su Debian/Ubuntu:
sudo add-apt-repository -y universe
sudo apt update
sudo apt install python3 python3-pip libwebkit2gtk-4.1-dev -y
Dipendenze di Python
Per usare il broker, è necessario installare i pacchetti correlati al broker oltre al core MSAL da PyPI:
pip install "msal[broker]>=1.33.0b1,<2"
Creazione progetto
Dopo la configurazione, è possibile chiamare acquire_token_interactive per acquisire un 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"]))