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.
La libreria Libreria di Autenticazione Microsoft (MSAL) per Python consente di accedere a utenti o app con identità Microsoft (Microsoft Entra ID, account Microsoft e Microsoft Entra ID account). Usando MSAL Python, è possibile acquisire token da Microsoft Entra ID per chiamare API Web protette, ad esempio Microsoft Graph, altre API di Microsoft o LE PROPRIE API.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
- Python 3.6+.
Installare il pacchetto
Installare il pacchetto MSAL per Python. È possibile trovare Python MSAL in PyPI.
pip install msal
Concetti relativi alle identità
MSAL Python fa parte dell'ecosistema di Microsoft Identity Platform. Acquisire familiarità con i concetti seguenti per usare in modo efficace MSAL Python per proteggere le applicazioni e le API:
- Gestione delle identità e degli accessi
- Autenticazione e autorizzazione
- OAuth 2.0 e OpenID Connect (OIDC) nel Microsoft Identity Platform
- Account client riservati e pubblici nel Microsoft Identity Platform
- Token di sicurezza
Scenari di utilizzo
Per usare MSAL Python, registrare un'applicazione con la piattaforma di identità Microsoft. È necessario un account Azure con una sottoscrizione attiva. Crea un account gratuito se non ne hai uno. È possibile registrare l'app in un tenant del cliente o in un tenant per la forza lavoro.
Le applicazioni possono usare MSAL Python per acquisire token per l'accesso alle API protette. Diversi tipi di app acquisiscono token usando flussi di autenticazione diversi. I tipi di app supportati includono applicazioni desktop, applicazioni Web, API Web e applicazioni in esecuzione su dispositivi che non dispongono di un browser ,ad esempio dispositivi IoT.
In MSAL Python le applicazioni vengono classificate come segue:
- Applicazioni client pubbliche (desktop e dispositivi mobili). Questi tipi di app non possono archiviare i segreti delle app in modo sicuro.
- Applicazioni client riservate (app Web, API Web e applicazioni daemon). Questi tipi di app archiviano in modo sicuro un segreto registrato con Microsoft Entra ID.
Per altre informazioni, vedere la documentazione sulle app client pubbliche e riservate e sui diversi tipi di app e sui relativi flussi di autenticazione nel Microsoft Identity Platform.
Dopo aver determinato se l'applicazione è un'applicazione client pubblica o riservata, è possibile usare MSAL Python per acquisire token per scenari diversi.
Utilizzo di base
L'acquisizione di token con MSAL Python segue un modello in tre passaggi. Ci saranno alcune varianti per flussi diversi. Per visualizzarli in azione, scaricare gli esempi.
MSAL si basa su una separazione netta tra le applicazioni client pubbliche e client riservate. Pertanto, creare un'istanza di
PublicClientApplicationo diConfidentialClientApplicatione riutilizzarla durante il ciclo di vita dell'applicazione. Ad esempio, per un'applicazione client pubblica, il codice di inizializzazione potrebbe essere simile al seguente:from msal import PublicClientApplication app = PublicClientApplication( "your_client_id", authority="https://login.microsoftonline.com/common")Il valore dell'autorità varia a seconda del tipo di account di accesso e del tipo di tenant in cui è registrata l'app. Ad esempio, per accedere sia agli account aziendali che personali Microsoft di cui è stato effettuato il provisioning nei tenant della forza lavoro (Microsoft Entra ID) si userà
https://login.microsoftonline.com/common. Per gli account cliente di cui è stato effettuato il provisioning nei tenant dei clienti, l'autorità avrà un formato similehttps://<subdomain>.ciamlogin.coma . Per altre informazioni, vedere la documentazione dell'autorità emittente del token.Provare a ottenere prima i token dalla cache. Il modello API in MSAL fornisce un controllo esplicito su come usare la cache dei token. Sebbene la parte di memorizzazione nella cache sia tecnicamente facoltativa, è consigliabile usarla nell'applicazione. Usando la cache è possibile assicurarsi di non effettuare chiamate API aggiuntive e gestire automaticamente l'aggiornamento del token.
# initialize result variable to hole the token response result = None # We now check the cache to see # whether we already have some accounts that the end user already used to sign in before. accounts = app.get_accounts() if accounts: # If so, you could then somehow display these accounts and let end user choose print("Pick the account you want to use to proceed:") for a in accounts: print(a["username"]) # Assuming the end user chose this one chosen = accounts[0] # Now let's try to find a token in cache for this account result = app.acquire_token_silent(["User.Read"], account=chosen)Se nella cache non è presente alcun token appropriato o si è scelto di ignorare il passaggio precedente, inviare una richiesta a Microsoft Entra ID per ottenere un token. Esistono metodi diversi in base al tipo di client e allo scenario, ma ai fini dell'esempio viene illustrato come usare
acquire_token_interactive, che richiede all'utente di specificare le proprie credenziali.if not result: # So no suitable token exists in cache. Let's get a new one from Azure AD. result = app.acquire_token_interactive(scopes=["User.Read"]) if "access_token" in result: print(result["access_token"]) # Yay! else: print(result.get("error")) print(result.get("error_description")) print(result.get("correlation_id")) # You may need this when reporting a bugSalvare il codice in un file Python in locale, ad esempio msaltest.py.
Eseguire il codice eseguendo
python .\msalpytest.py. L'immagine seguente mostra la procedura di accesso per questo esempio.
Dopo aver completato l'autenticazione e aver chiuso il browser, dovrebbe essere possibile visualizzare il token di accesso stampato nel terminale.
Procedure consigliate per un'applicazione affidabile pronta per l'organizzazione
È possibile acquisire un token per un'API Web protetta usando MSAL Python. Non è anche necessario gestire manualmente i token di aggiornamento. Tuttavia, per creare applicazioni affidabili e pronte per le aziende, è necessario eseguire altre operazioni. Ad esempio, è consigliabile:
Gestire le eccezioni, sia quando si acquisisce un token, ma anche quando si chiama l'API Web protetta. In particolare, se l'applicazione viene eseguita in un tenant Microsoft Entra in cui gli amministratori tenant hanno impostato i criteri di accesso condizionale per applicare Multiple Factor Authentication (MFA), sarà necessario gestire una richiesta di attestazione.
È possibile abilitare La registrazione per risolvere i problemi dell'applicazione e aiutare gli utenti, rispettando al contempo la privacy e rispettando il GDPR.
Esempi
Sono disponibili diversi esempi che è possibile usare per iniziare a usare MSAL Python.
- Esempi dal repository library. Questi esempi illustrano le diverse configurazioni e i flussi di autenticazione implementati tramite MSAL Python.
- Un singolo repository con esempi usati nella documentazione. Questi esempi includono documentazione di supporto per facilitarne la compilazione e la replica da zero.
References
Vedere anche
- Crea un'istanza della tua applicazione con MSAL Python
- Acquisire token con MSAL Python