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.
si applica a: inquilini della forza lavoro
inquilini esterni (scopri di più)
Questa esercitazione è la parte finale di una serie che illustra la creazione e il test di un'API Web protetta registrata in un tenant di Microsoft Entra. In parte 1 di questa serieè stata creata un'API Web ASP.NET Core e ne sono stati protetti gli endpoint. A questo punto si creerà un'app daemon leggera, la si registrerà nel tenant e si userà l'app daemon per testare l'API Web compilata.
In questa esercitazione, farai:
- Registrare un'app daemon
- Assegna un ruolo applicazione alla tua app daemon
- Crea la tua app demone
- Eseguire l'app daemon per chiamare l'API Web protetta
Prerequisiti
- Se non è già stato fatto, completare l'esercitazione : Compilare e proteggere un'API Web ASP.NET Core con Microsoft Identity Platform
Registrare l'app daemon
I passaggi seguenti illustrano come registrare l'app daemon nell'interfaccia di amministrazione di Microsoft Entra:
Accedi al centro di amministrazione di Microsoft Entra come almeno sviluppatore di applicazioni.
Se si ha accesso a più locatari, usare l'icona Impostazioni
nel menu in alto per selezionare il locatario esterno dal menu Directory + sottoscrizioni.
Vai a Entra ID>Registrazioni app.
Seleziona + Nuova registrazione.
Nella pagina Registrare un'applicazione visualizzata immettere le informazioni di registrazione dell'applicazione:
Nella sezione Nome immettere un nome di applicazione significativo che verrà visualizzato agli utenti dell'app, ad esempio ciam-client-app.
In Tipi di account supportati, selezionare Solo account in questa directory organizzativa.
Selezionare Registra.
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.
Creare un segreto client per l'applicazione registrata. L'applicazione usa il segreto client per dimostrare la propria identità quando richiede token:
- Nella pagina registrazioni dell'app selezionare l'applicazione creata ( ad esempio segreto client dell'app Web) per aprire la relativa pagina Panoramica.
- In Gestisci, selezionare Certificati & Segreti>Segreti del client>Nuovo segreto client.
- Nella casella Descrizione immettere una descrizione per il segreto client, ad esempio segreto client dell'app Web).
- In Scadenzaselezionare la durata della validità del segreto (in base alle regole di sicurezza dell'organizzazione), quindi selezionare Aggiungi.
- Registrare il Valore del segreto. Questo valore viene 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. Assicurarsi di registrarlo.
Assegna un ruolo applicazione alla tua app daemon
Le applicazioni che eseguono l'autenticazione da soli senza un utente richiedono autorizzazioni per le app (note anche come ruoli). Queste autorizzazioni consentono all'app stessa di accedere direttamente alle risorse. D'altra parte, se si testasse l'API con un utente connesso, si assegnerebbero autorizzazioni delegate (ambiti). Le autorizzazioni delegate consentono all'app di agire per conto dell'utente, limitato ai diritti di accesso dell'utente. Seguire questa procedura per assegnare le autorizzazioni dell'applicazione all'app daemon:
Nella pagina Registrazioni app selezionare l'applicazione creata, ad esempio ciam-client-app.
In Gestisci selezionare Autorizzazioni API.
In Autorizzazioni configurate selezionare Aggiungi un'autorizzazione.
Selezionare la scheda API usate dall'organizzazione.
Nell'elenco delle API, selezionare l'API, ad esempio ciam-ToDoList-api.
Selezionare l’opzione Autorizzazioni applicazione. Selezioniamo questa opzione poiché l'app esegue l'accesso in proprio nome, ma non per conto di un utente.
Nell'elenco delle autorizzazioni selezionare TodoList.Read.All, ToDoList.ReadWrite.All (usare la casella di ricerca, se necessario).
Selezionare il pulsante Aggiungi autorizzazioni.
A questo punto, le autorizzazioni sono state assegnate correttamente. Tuttavia, poiché l'app daemon non consente agli utenti di interagire con essa, gli utenti stessi 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:
- Selezionare Concedi consenso amministratore per <nome del tenant>, quindi selezionare Sì.
- Selezionare Aggiorna, quindi verificare che il valore di Concesso per <nome del tenant> venga visualizzato in Stato per entrambe le autorizzazioni.
Creare un'applicazione demone
Inizializza un'app console .NET e accedi alla sua cartella radice.
dotnet new console -o MyTestApp cd MyTestApp
Installare MSAL.NET per facilitare la gestione dell'autenticazione eseguendo il comando seguente:
dotnet add package Microsoft.Identity.Client
Eseguire il progetto API e prendere nota della porta in cui è in esecuzione.
Aprire il file Program.cs e sostituire il codice "Hello world" con il codice seguente.
using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var response = await client.GetAsync("http://localhost:<your-api-port>/api/todolist); Console.WriteLine("Your response is: " + response.StatusCode);
Accedere alla directory radice dell'app daemon e avviare l'app usando il comando
dotnet run
. Questo codice invia una richiesta senza un token di accesso. Dovresti vedere la stringa: La tua risposta è: Non autorizzata stampata nella console.Rimuovere il codice nel passaggio 4 e sostituire con il codice seguente per testare l'API inviando una richiesta con un token di accesso valido. Questa app daemon usa il flusso di credenziali client per acquisire un token di accesso durante l'autenticazione senza interazione dell'utente.
using Microsoft.Identity.Client; using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var clientId = "<your-daemon-app-client-id>"; var clientSecret = "<your-daemon-app-secret>"; var scopes = new[] {"api://<your-web-api-application-id>/.default"}; var tenantId = "<your-tenant-id>"; //Use in workforce tenant configuration var tenantName = "<your-tenant-name>"; //Use in external tenant configuration var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync(); Console.WriteLine($"Access Token: {result.AccessToken}"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine("Your response is: " + response.StatusCode); Console.WriteLine(content);
Sostituisci i segnaposto nel codice con l'ID client dell'app daemon, il segreto dell'app, l'ID applicazione Web API e il nome del tenant.
- Per i tenant esterni, utilizzare l'autorità nel formato:
"https://{tenantName}.ciamlogin.com/"
- Per i tenant di lavoro, utilizzare l'autorità nel formato:
"https://login.microsoftonline.com/{tenantId}"
- Per i tenant esterni, utilizzare l'autorità nel formato:
Accedere alla directory radice dell'app daemon e avviare l'app usando il comando
dotnet run
. Questo codice invia una richiesta con un token di accesso valido. Verrà visualizzata la stringa: la risposta è: OK stampato nella console.