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.
Se si sta creando un'applicazione Windows, è consigliabile semplificare l'autenticazione degli utenti con l'aiuto di un broker di autenticazione. Web Account Manager (WAM) è un broker di autenticazione che funziona con MSAL Python. WAM è disponibile solo in Windows 10 e versioni successive, oltre a Windows Server 2019 e versioni successive.
Per altre informazioni sui vantaggi dell'uso di un broker di autenticazione, vedere Che cos'è un broker nella documentazione di MSAL.NET.
Utilizzo
Per usare il broker, è necessario installare i pacchetti correlati al broker oltre al core MSAL da PyPI:
pip install msal[broker]>=1.20,<2
Se i pacchetti correlati al broker non sono installati e si tenta di usare il broker di autenticazione, verrà visualizzato l'errore ImportError: È necessario installare la dipendenza da: pip install "msal[broker]>=1.20,2<".
Quindi, crea un nuovo oggetto PublicClientApplication e imposta enable_broker_on_windows su True. In questo modo, MSAL proverà a comunicare con WAM invece di visualizzare una nuova finestra del browser. Se si scrive un'applicazione multipiattaforma, sarà necessario usare enable_broker_on_macanche , come descritto nell'articolo Uso di MSAL Python con un Gestore di autenticazione in macOS.
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
È ora possibile acquisire un token chiamando acquire_token_interactive e specificando un handle della finestra padre tramite parent_window_handle:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Un handle della finestra padre è richiesto da WAM per assicurarsi che la finestra di dialogo venga visualizzata correttamente nella parte superiore della finestra di richiesta. MSAL non lo determina direttamente, poiché esistono molte variabili che potrebbero influenzare la finestra a cui WAM deve associarsi, e gli sviluppatori che creano applicazioni sono nella posizione migliore per decidere quale debba essere tale finestra.
Per le applicazioni console, MSAL semplifica le cose offrendo una soluzione pronta all'uso per ottenere l'handle della finestra del terminale - CONSOLE_WINDOW_HANDLE. Per le applicazioni desktop, potrebbero essere necessarie altre operazioni con l'API Windows per ottenere l'handle della finestra. I pacchetti helper, ad esempio pywin32 , possono essere utili per le chiamate API.
Prima di eseguire l'applicazione, assicurarsi di configurare l'URL di reindirizzamento per l'app desktop:
Per usare il broker Windows, l'applicazione deve avere l'URL di reindirizzamento corretto configurato nella portale di Azure, nella forma di:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Se l'URL di reindirizzamento non è configurato, si otterrà un broker_error simile a (pii). Stato: Response_Status.Status_ApiContractViolation, Codice errore: 3399614473, Tag: 557973642.
Se la configurazione e l'inizializzazione sono corrette, una volta avviata l'applicazione dovresti vedere il broker di autenticazione entrare in funzione e consentire all'utente di selezionare l'account con cui autenticarsi.
Vale la pena notare che se si passa all'uso dell'autenticazione basata su broker, se l'utente è stato precedentemente connesso e lo stato di accesso è ancora valido, la chiamata acquire_token_interactive continuerà a comportare un tentativo invisibile all'utente di acquisire un token e solo quando necessario. Se preferisci mostrare sempre una richiesta di conferma, puoi usare questo parametro facoltativo prompt="select_account".
Differenze di esperienza broker
A seconda dell'autorità specificata quando si crea un'istanza di PublicClientApplication, l'interfaccia utente del broker potrebbe essere diversa.
/consumatori
Usato per l'autenticazione solo con account Microsoft personali.
/Comune
Usato per l'autenticazione con account Microsoft personali, nonché account aziendali e dell'istituto di istruzione.
/Organizzazioni
Usato per l'autenticazione solo con account aziendali e dell'istituto di istruzione.
Se viene specificato login_hint , ma l'account non è ancora registrato in WAM, l'hint verrà compilato automaticamente nel campo Posta elettronica o telefono .
/TENANT_ID
Usato per l'autenticazione solo con account aziendali e dell'istituto di istruzione all'interno del tenant specificato.
Se viene specificato login_hint , ma l'account non è ancora registrato in WAM, l'hint verrà compilato automaticamente nel campo Posta elettronica o telefono .