Avvio rapido: Acquisire un token e chiamare Microsoft Graph da un'app daemon di Python
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:
Registrare e scaricare l'app della guida introduttiva
Passaggio 1: Registrare l'applicazione
Suggerimento
La procedura descritta in questo articolo può variare leggermente in base al portale di partenza.
Per registrare l'applicazione e aggiungere manualmente le informazioni di registrazione dell'app alla soluzione, seguire questa procedura:
- Accedi all'Interfaccia di amministrazione di Microsoft Entra.
- Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant in cui si vuole registrare l'applicazione dal menu Directory e sottoscrizioni.
- Passare a Identità>Applicazioni>Registrazioni app e selezionare Nuova registrazione.
- In Nome immettere un nome per l'applicazione, ad esempio
Daemon-console
. Tale nome, che potrebbe essere visualizzato dagli utenti dell'app, può essere modificato in un secondo momento. - Selezionare Registra.
- In Gestisci, selezionare Certificati e segreti.
- In Segreti client selezionare Nuovo segreto client, immettere un nome e quindi selezionare Aggiungi. Registrare il valore del segreto in una posizione sicura per usarlo in un passaggio successivo.
- In Gestisci selezionare Autorizzazioni API>Aggiungi un'autorizzazione. Selezionare Microsoft Graph.
- Seleziona Autorizzazioni applicazione.
- Nel nodo Utente selezionare User.Read.All, quindi selezionare Aggiungi autorizzazioni.
Passaggio 2: Scaricare il progetto Python
Scaricare il progetto daemon Python
Passaggio 3: Configurare il progetto Python
Estrarre il file ZIP in una cartella locale vicina alla radice del disco, ad esempio C:\Azure-Samples.
Passare alla sottocartella 1-Call-MsGraph-WithSecret.
Modificare parameters.json e sostituire i valori dei campi
authority
,client_id
esecret
con il frammento di codice seguente:"authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here", "client_id": "Enter_the_Application_Id_Here", "secret": "Enter_the_Client_Secret_Here"
Dove:
Enter_the_Application_Id_Here
è l'ID applicazione (client) per l'applicazione registrata.Enter_the_Tenant_Id_Here
: sostituire questo valore con l'ID tenant o il nome del tenant (ad esempio, contoso.microsoft.com)Enter_the_Client_Secret_Here
: sostituire questo valore con il segreto client creato nel passaggio 1.
Suggerimento
Per trovare i valori di ID applicazione (client), ID directory (tenant), passare alla pagina Panoramica dell'app nell'interfaccia di amministrazione di Microsoft Entra. Per generare una nuova chiave, passare alla pagina Certificati e segreti.
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
Dove:
Enter_the_Tenant_Id_Here
: sostituire questo valore con l'ID tenant o il nome del tenant (ad esempio, contoso.microsoft.com)Enter_the_Application_Id_Here
: è l'ID applicazione (client) per l'applicazione registrata in precedenza.
Passaggio 5: 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 nell'interfaccia di amministrazione di Microsoft Entra. |
config["client_id"] |
È l’ID applicazione (client) per l'applicazione registrata nell'interfaccia di amministrazione di Microsoft Entra. È possibile trovare questo valore nella pagina Panoramica dell'app nell'interfaccia di amministrazione di Microsoft Entra. |
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 AAD.")
result = app.acquire_token_for_client(scopes=config["scope"])
Dove: | Descrizione |
---|---|
config["scope"] |
Contiene gli ambiti richiesti. Per client riservati, dovrebbe essere usato un formato simile a {Application ID URI}/.default per indicare che gli ambiti richiesti sono quelli definiti staticamente nell'oggetto app impostato nell'interfaccia di amministrazione di Microsoft Entra (per Microsoft Graph, {Application ID URI} punta a https://graph.microsoft.com ). Per API Web personalizzate, {Application ID URI} è definito nella sezione Esporre un'API in Registrazioni app nell'interfaccia di amministrazione di Microsoft Entra. |
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.