Condividi tramite


Chiamare un'API in un'applicazione daemon .NET di esempio

Questa guida usa un'applicazione daemon .NET di esempio per mostrare come un'applicazione daemon acquisisce un token per chiamare un'API Web protetta. Microsoft Entra protegge l'API Web.

Un'applicazione daemon acquisisce un token per conto di se stessa (non per conto di un utente). Gli utenti non possono interagire con un'applicazione daemon perché richiede la loro identità. Questo tipo di applicazione richiede un token di accesso, il che comporta usare la propria identità applicazione e presentare l'ID applicazione, le credenziali (password o certificato) e l'URI dell’ID dell'applicazione a Microsoft Entra per ID esterno.

Prerequisiti

Registrare un'applicazione daemon e un'API Web

In questo passaggio si creano le registrazioni dell'applicazione daemon e dell'API Web e si specificano gli ambiti dell'API Web.

Registrare un'applicazione API Web

  1. Accedere all' Interfaccia di amministrazione di Microsoft Entra almeno come sviluppatore di applicazioni.

  2. Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant esterno dal menu Directory e sottoscrizioni.

  3. Passare a Identità>Applicazioni>Registrazioni app.

  4. Seleziona + Nuova registrazione.

  5. Nella pagina Registra un'applicazione visualizzata immettere le informazioni sulla registrazione dell'applicazione:

    1. Nella sezione Nome immettere un nome significativo per l’applicazione che verrà visualizzato agli utenti dell'app, ad esempio ciam-ToDoList-api.

    2. In Tipi di account supportati selezionare Account solo in questa directory organizzativa.

  6. Selezionare Registra per creare l'applicazione.

  7. Al termine della registrazione, viene visualizzato il riquadro Panoramica dell'applicazione. Registrare l'ID directory (tenant) e l'ID applicazione (client) da usare nel codice sorgente dell'applicazione.

Configurare i ruoli dell'applicazione

Un'API deve pubblicare almeno un ruolo app per le applicazioni, detto anche Autorizzazione dell'applicazione, affinché le app client possano ottenere autonomamente un token di accesso. Le autorizzazioni dell'applicazione sono il tipo di autorizzazioni che le API devono pubblicare quando vogliono consentire alle applicazioni client di eseguire correttamente l'autenticazione in modo autonomo, senza richiedere l'accesso degli utenti. Per pubblicare un'autorizzazione dell'applicazione, seguire questa procedura:

  1. Nella pagina Registrazioni app, selezionare l'applicazione creata, ad esempio ciam-ToDoList-api, per aprire la relativa pagina Panoramica.

  2. In Gestisci selezionare Ruoli app.

  3. Selezionare Crea un ruolo app, quindi immettere i valori seguenti e selezionare Applica per salvare le modifiche:

    Proprietà valore
    Nome visualizzato ToDoList.Read.All
    Tipi di membro consentiti Applicazioni
    Valore ToDoList.Read.All
    Descrizione Consentire all'app di leggere l’elenco di attività di ogni utente tramite "ToDoListApi"
  4. Selezionare di nuovo Crea un ruolo app, immettere i valori seguenti per il secondo ruolo dell'app, quindi selezionare Applica per salvare le modifiche:

    Proprietà valore
    Nome visualizzato ToDoList.ReadWrite.All
    Tipi di membro consentiti Applicazioni
    Valore ToDoList.ReadWrite.All
    Descrizione Consente all'app di leggere e scrivere nell'elenco di attività di ogni utente tramite "ToDoListApi"

Configurare le attestazioni facoltative

È possibile usare l'attestazione facoltativa idtyp per aiutare l'API Web a determinare se un token è un token dell'app o un token dell'app e dell'utente. Sebbene sia possibile usare una combinazione di attestazioni scp e ruoli per lo stesso scopo, l'uso dell'attestazione idtyp è il modo più semplice per distinguere un token dell'app da un token dell'app e dell'utente. Ad esempio, il valore di questa attestazione è app quando il token è solo dell’app.

Registrare l'applicazione daemon

Per abilitare l'applicazione all'accesso degli utenti con Microsoft Entra, è necessario che Microsoft Entra per ID esterno riconosca l'applicazione creata. La registrazione dell'app stabilisce una relazione di trust tra l'app e Microsoft Entra. Quando si registra un'applicazione, l'ID esterno genera un identificatore univoco noto come ID applicazione (client), un valore usato per identificare l'app durante la creazione di richieste di autenticazione.

La procedura seguente spiega come registrare l'app nell'Interfaccia di amministrazione di Microsoft Entra:

  1. Accedere all’Interfaccia di amministrazione di Microsoft Entra almeno come sviluppatore di applicazioni.

  2. Se si ha accesso a più tenant, usare l'icona Impostazioni nel menu in alto per passare al tenant esterno dal menu Directory e sottoscrizioni.

  3. Passare a Identità>Applicazioni>Registrazioni app.

  4. Seleziona + Nuova registrazione.

  5. Nella pagina Registra un'applicazione che viene visualizzata:

    1. Immettere un nome significativo per l’applicazione da mostrare agli utenti dell'app, ad esempio ciam-client-app.
    2. In Tipi di account supportati selezionare Account solo in questa directory organizzativa.
  6. Selezionare Registra.

  7. Al termine della registrazione, viene visualizzato il riquadro Panoramica dell'applicazione. Registrare l'ID applicazione (client) da usare nel codice sorgente dell'applicazione.

Creare un segreto client

Creare un segreto client per l'applicazione registrata. L'applicazione usa il segreto client per dimostrare la propria identità quando richiede i token.

  1. Nella pagina Registrazioni app selezionare l'applicazione creata (ad esempio ciam-client-app) per aprire la relativa pagina Panoramica.
  2. In Gestisci, selezionare Certificati e segreti.
  3. Selezionare Nuovo segreto client.
  4. Nella casella Descrizione immettere una descrizione per il segreto client, (ad esempio, segreto client dell'app ciam).
  5. In Scadenzaselezionare la durata della validità del segreto (in base alle regole di sicurezza dell'organizzazione), quindi selezionare Aggiungi.
  6. Registrare il Valore del segreto. Questo valore verrà usato per la configurazione in un passaggio successivo. Il valore del segreto non verrà visualizzato di nuovo e non sarà recuperabile in alcun modo una volta usciti da Certificati e segreti. Accertarsi di registrarlo.

Concedere autorizzazioni API all'applicazione daemon

  1. Nella pagina Registrazioni app selezionare l'applicazione creata, ad esempio ciam-client-app.

  2. In Gestisci selezionare Autorizzazioni API.

  3. In Autorizzazioni configurate selezionare Aggiungi un'autorizzazione.

  4. Selezionare la scheda API usate dall'organizzazione.

  5. Nell'elenco delle API, selezionare l'API, ad esempio ciam-ToDoList-api.

  6. Selezionare l’opzione Autorizzazioni applicazione. Questa opzione viene selezionata poiché l'applicazione effettua l'accesso autonomamente, senza agire per conto di un utente.

  7. Nell'elenco delle autorizzazioni selezionare TodoList.Read.All, ToDoList.ReadWrite.All (usare la casella di ricerca, se necessario).

  8. Selezionare il pulsante Aggiungi autorizzazioni.

  9. A questo punto, le autorizzazioni sono state assegnate correttamente. Tuttavia, poiché l'app daemon non consente agli utenti di interagire con essa, questi non possono fornire il consenso a queste autorizzazioni. Per risolvere questo problema, l'amministratore deve fornire il consenso a queste autorizzazioni per conto di tutti gli utenti nel tenant:

    1. Selezionare Concedi consenso amministratore per <nome del tenant>, quindi selezionare .
    2. Selezionare Aggiorna, quindi verificare che il valore di Concesso per <nome del tenant> venga visualizzato in Stato per entrambe le autorizzazioni.

Clonare o scaricare un'applicazione daemon di esempio e un'API Web

Per ottenere l'applicazione di esempio, è possibile clonarla da GitHub o scaricarla come file .zip.

  • Per clonare l'esempio, aprire un prompt dei comandi, passare alla posizione in cui si vuole creare il progetto e immettere il comando seguente:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • Scaricare il file .zip. Estrarlo in un percorso di file in cui la lunghezza del nome è inferiore a 260 caratteri.

Configurare l'applicazione daemon di esempio e l’API

Per usare la registrazione dell'app nell'esempio di applicazione Web client:

  1. Nell’editor del codice aprire il file ms-identity-ciam-dotnet-tutorial/2-Authorization/3-call-own-api-dotnet-core-daemon/ToDoListClient/appsettings.json.

  2. Trovare il segnaposto:

    • Enter_the_Application_Id_Here e sostituirlo con l'ID applicazione (client) dell'applicazione daemon registrata in precedenza.
    • Enter_the_Tenant_Subdomain_Here e sostituirlo con il sottodominio della directory (tenant). Ad esempio, se il dominio primario del tenant è contoso.onmicrosoft.com, usare contoso. Se non si dispone del nome del tenant, scoprire come leggere i dettagli del tenant.
    • Enter_the_Client_Secret_Here e sostituirlo con il valore del segreto dell'applicazione daemon copiato in precedenza.
    • Enter_the_Web_Api_Application_Id_Here e sostituirlo con l'ID applicazione (client) dell'API Web copiata in precedenza.

Per usare la registrazione dell'app nell'esempio di API Web:

  1. Nell’editor di codice, aprire il file ms-identity-ciam-dotnet-tutorial/2-Authorization/3-call-own-api-dotnet-core-daemon/ToDoListAPI/appsettings.json.

  2. Trovare il segnaposto:

    • Enter_the_Application_Id_Here e sostituirlo con l'ID applicazione (client) dell'API Web copiata.
    • Enter_the_Tenant_Id_Here e sostituirlo con l'ID directory (tenant) copiato in precedenza.
    • Enter_the_Tenant_Subdomain_Here e sostituirlo con il sottodominio della directory (tenant). Ad esempio, se il dominio primario del tenant è contoso.onmicrosoft.com, usare contoso. Se non si dispone del nome del tenant, scoprire come leggere i dettagli del tenant.

Eseguire e testare l'applicazione e l'API del daemon di esempio

  1. Aprire una finestra della console, quindi eseguire l'API Web usando i comandi seguenti:

    cd 2-Authorization\3-call-own-api-dotnet-core-daemon\ToDoListAPI
    dotnet run
    
  2. Eseguire il client dell'app daemon usando i comandi seguenti:

    cd 2-Authorization\3-call-own-api-dotnet-core-daemon\ToDoListClient
    dotnet run
    

Se l'applicazione daemon e l'API Web vengono eseguite correttamente, in genere la finestra della console ha un aspetto simile alla matrice JSON seguente:

Posting a to-do...
Retrieving to-do's from server...
To-do data:
ID: 1
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Bake bread
Posting a second to-do...
Retrieving to-do's from server...
To-do data:
ID: 1
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Bake bread
ID: 2
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Butter bread
Deleting a to-do...
Retrieving to-do's from server...
To-do data:
ID: 2
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Butter bread
Editing a to-do...
Retrieving to-do's from server...
To-do data:
ID: 2
User ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Message: Eat bread
Deleting remaining to-do...
Retrieving to-do's from server...
There are no to-do's in server

Funzionamento

L'applicazione daemon usa la concessione di credenziali client OAuth2.0 per acquisire un token di accesso per se stessa e non per conto dell'utente. Token di accesso richiesto dall'app contenente le autorizzazioni rappresentate come ruoli. Il flusso delle credenziali client usa questo set di autorizzazioni anziché gli ambiti utente per i token dell'applicazione. Queste autorizzazioni dell'applicazione sono state esposte in precedenza nell'API Web, quindi sono state concesse all'app daemon. L'app daemon in questo articolo usa Microsoft Authentication Library for .NET per semplificare il processo di acquisizione di un token.

Sul lato API l'API Web deve verificare che il token di accesso disponga delle autorizzazioni necessarie (autorizzazioni dell'applicazione). L'API Web rifiuta i token di accesso che non dispongono delle autorizzazioni necessarie.