Share via


Testare l'API protetta

Questa esercitazione è la parte finale di una serie che illustra la compilazione e il test di un'API Web protetta registrata in un tenant esterno. Nella parte 1 di questa serie è stata creata un'API Web ASP.NET Core e ne sono stati protetti gli endpoint. In questo passaggio finale si registrerà l'app daemon e si testerà l'API.

In questa esercitazione apprenderai a:

  • Testare un'API Web protetta usando un'app daemon leggera che chiama l'API Web

Prerequisiti

Esercitazione: Proteggere un'API Web ASP.NET Core registrata in un tenant esterno

Registrare l'app daemon

I passaggi seguenti illustrano come registrare l'app daemon nell'interfaccia di amministrazione di Microsoft Entra:

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno uno 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 Applicazioni> di identità>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 di applicazione significativo che verrà visualizzato 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 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.

  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 il segreto client dell'app ciam.
  5. In Scadenza selezionare una durata per cui il segreto è valido (in base alle regole di sicurezza dell'organizzazione) e 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, dopo che si esce dai certificati e dai segreti. Assicurarsi di registrarlo.

Assegnare il ruolo app all'app daemon

Le app che eseguono l'autenticazione da soli richiedono autorizzazioni per le app.

  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 quando l'app esegue l'accesso come se stesso, non come utenti.

  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, 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:

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

Scrivi codice

  1. Inizializzare un'app console .NET e passare alla cartella radice

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Installare MSAL per semplificare la gestione dell'autenticazione eseguendo il comando seguente:

    dotnet add package Microsoft.Identity.Client
    
  3. Eseguire il progetto API e prendere nota della porta in cui è in esecuzione.

  4. 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("https://localhost:<your-api-port>/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Passare alla directory radice dell'app daemon ed eseguire l'app usando il comando dotnet run. Questo codice invia una richiesta senza un token di accesso. Verrà visualizzata la stringa: La risposta è: Non autorizzato stampato nella console.

  5. 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.

    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 tenantName= "<your-tenant-name>";
    var authority = $"https://{tenantName}.ciamlogin.com/";
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("https://localhost:44351/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Passare alla directory radice dell'app daemon ed eseguire 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.

Vedi anche

Abilitare la reimpostazione self-service delle password