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.

Diagramma che mostra il funzionamento dell'app di esempio generata da questa guida introduttiva.

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:

  1. Accedi all'Interfaccia di amministrazione di Microsoft Entra.
  2. 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.
  3. Passare a Identità>Applicazioni>Registrazioni app e selezionare Nuova registrazione.
  4. 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.
  5. Selezionare Registra.
  6. In Gestisci, selezionare Certificati e segreti.
  7. 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.
  8. In Gestisci selezionare Autorizzazioni API>Aggiungi un'autorizzazione. Selezionare Microsoft Graph.
  9. Seleziona Autorizzazioni applicazione.
  10. 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

  1. Estrarre il file ZIP in una cartella locale vicina alla radice del disco, ad esempio C:\Azure-Samples.

  2. Passare alla sottocartella 1-Call-MsGraph-WithSecret.

  3. Modificare parameters.json e sostituire i valori dei campi authority, client_id e secret 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.