Condividi tramite


Testare l'API protetta

Questa esercitazione è la parte finale di una serie che descrive 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 almeno come sviluppatore di applicazioni.

  2. Se si ha accesso a più tenant, usare l'iconaImpostazioni 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 di applicazione significativo che sarà 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. Il riquadro Panoramica dell'applicazione viene visualizzato al termine della registrazione. 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 i token.

  1. Nella pagina Registrazioni app selezionare l'applicazione creata (ad esempio ciam-client-app) per aprire la relativa pagina di 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 una durata per la quale il segreto è valido (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.

Assegnare all'app daemon il ruolo app

Le app che eseguono l'autenticazione autonomamente richiedono le 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 app, non come 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 dovrà fornire il consenso a tali 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 Concesso per <nome del tenant> venga visualizzato in Stato per entrambe le autorizzazioni.

Scrivi codice

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

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Installare MSAL per semplificare la gestione dell'autenticazione. A tal fine eseguire 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 token di accesso. Sarà visualizzata la stringa: La risposta è: non autorizzato stampato nella console.

  5. Rimuovere il codice nel passaggio 4 e sostituire con il codice seguente. Questo consente di 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. Sarà visualizzata la stringa: la risposta è: OK stampato nella console.

Vedi anche

Abilitare la reimpostazione self-service delle password