Avvio rapido: Acquisire un token e chiamare l'API Microsoft Graph da un'app console Python usando l'identità dell'app
Ti diamo il benvenuto! Questa probabilmente non è la pagina che ci si aspettava. Mentre lavoriamo a una correzione, questo collegamento dovrebbe portare all'articolo corretto:
Avvio rapido: Acquisire un token e chiamare Microsoft Graph da un'app daemon di Python
Ci scusiamo per l'inconveniente e ringraziamo per la pazienza mentre lavoriamo per risolvere il problema.
In questa guida di avvio rapido si scarica e si esegue un esempio di codice che illustra come un'applicazione Python può ottenere un token di accesso usando l'identità dell'app per chiamare l'API Microsoft Graph e visualizzare un elenco di utenti nella directory. L'esempio di codice dimostra come è possibile eseguire un processo o un servizio di Windows automatico con un'identità dell'applicazione invece che con un'identità dell'utente.
Prerequisiti
Per eseguire questo esempio, sono necessari:
Scaricare e configurare l'app della guida introduttiva
Passaggio 1: Configurare l'applicazione nel portale di Azure
Per fare in modo che l'esempio di codice in questo avvio rapido funzioni, creare un segreto client e aggiungere l'autorizzazione dell'applicazione User.Read.All dell'API Graph.
L'applicazione è configurata con questi attributi.
Passaggio 2: Scaricare il progetto Python
Nota
Enter_the_Supported_Account_Info_Here
Utente standard
Gli utenti standard del tenant devono chiedere a un amministratore globale di concedere il consenso amministratore per l'applicazione. A tale scopo, assegnare l'URL seguente all'amministratore:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Passaggio 4: Eseguire l'applicazione
Le dipendenze di questo esempio devono essere installate una sola volta.
pip install -r requirements.txt
Eseguire quindi l'applicazione tramite il prompt dei comandi o la console:
python confidential_client_secret_sample.py parameters.json
Nell’output della console dovrebbe essere visualizzato un frammento JSON che rappresenta un elenco di utenti nella directory di Microsoft Entra.
Importante
Questa applicazione della guida introduttiva usa un segreto client per identificarsi come client riservato. Poiché il segreto client viene aggiunto come testo normale ai file di progetto, per motivi di sicurezza è consigliabile usare un certificato anziché un segreto client prima di considerare l'applicazione come applicazione di produzione. Per altre informazioni su come usare un certificato, vedere queste istruzioni nello stesso repository GitHub di questo esempio, ma nella seconda cartella 2-Call-MsGraph-WithCertificate.
Ulteriori informazioni
MSAL Python
MSAL Python è la libreria usata per concedere l'accesso agli utenti e richiedere i token usati per accedere a un'API protetta da Microsoft Identity Platform. Come descritto, questo avvio rapido richiede i token usando l'identità propria dell'applicazione invece delle autorizzazioni delegate. Il flusso di autenticazione usato in questo caso è noto come flusso delle credenziali client OAuth. Per altre informazioni su come usare MSAL Python con le app daemon, vedere questo articolo.
È possibile MSAL Python eseguendo il comando pip seguente.
pip install msal
Inizializzazione della libreria MSAL
È possibile aggiungere il riferimento per la libreria MSAL aggiungendo il codice seguente:
import msal
Inizializzare quindi la libreria MSAL usando il codice seguente:
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"])
Dove: Descrizione config["secret"]
È il segreto client creato per l'applicazione nel portale di Azure. config["client_id"]
ID applicazione (client) dell'applicazione registrata nel portale di Azure. Questo valore è riportato nella pagina Panoramica dell'app nel portale di Azure. config["authority"]
Endpoint del servizio token di sicurezza per l'utente da autenticare. In genere https://login.microsoftonline.com/{tenant}
per il cloud pubblico, dove {tenant} è il nome del tenant o l'ID tenant.
Per altre informazioni, vedere la documentazione di riferimento per ConfidentialClientApplication
.
Richiesta di token
Per richiedere un token con l'identità dell'app, usare il metodo AcquireTokenForClient
:
result = None
result = app.acquire_token_silent(config["scope"], account=None)
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from Azure AD.")
result = app.acquire_token_for_client(scopes=config["scope"])
Dove: Descrizione config["scope"]
Contiene gli ambiti richiesti. Per i client riservati, dovrebbe essere usato un formato simile a {Application ID URI}/.default
per indicare che gli ambiti che vengono richiesti sono quelli definiti in modo statico nell'oggetto app impostato nel portale di Azure. (per Microsoft Graph,{Application ID URI}
punta ahttps://graph.microsoft.com
). Per API Web personalizzate,{Application ID URI}
è definito nella sezione Esporre un'API in Registrazioni app.
Per altre informazioni, vedere la documentazione di riferimento per AcquireTokenForClient
.
Assistenza e supporto
Se è necessaria assistenza, si vuole segnalare un problema o si vogliono ottenere informazioni sulle opzioni di supporto, vedere Assistenza e supporto per gli sviluppatori.
Passaggi successivi
Per altre informazioni sulle applicazioni daemon, vedere la pagina di destinazione dello scenario.