Share via


Testa ditt skyddade API

Den här självstudien är den sista delen i en serie som visar hur du skapar och testar ett skyddat webb-API som är registrerat i en extern klientorganisation. I del 1 av den här serien skapade du ett ASP.NET Core-webb-API och skyddade dess slutpunkter. I det här sista steget registrerar du daemon-appen och testar ditt API.

I den här självstudien lär du dig att:

  • Testa ett skyddat webb-API med hjälp av en enkel daemonapp som anropar webb-API:et

Förutsättningar

Självstudie: Skydda ett ASP.NET Core-webb-API som registrerats i en extern klientorganisation

Registrera daemonappen

Följande steg visar hur du registrerar din daemon-app i administrationscentret för Microsoft Entra:

  1. Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.

  2. Om du har åtkomst till flera klienter använder du ikonenInställningar på den översta menyn för att växla till din externa klientorganisation från menyn Kataloger + prenumerationer.

  3. Bläddra till Identitetsprogram>> Appregistreringar.

  4. Välj + Ny registrering.

  5. På sidan Registrera ett program som visas anger du programmets registreringsinformation:

    1. I avsnittet Namn anger du ett beskrivande programnamn som ska visas för appens användare, till exempel ciam-client-app.

    2. Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.

  6. Välj Registrera.

  7. Programmets översiktsfönster visas när registreringen är klar. Registrera katalog-ID:t (klient)-ID:t och program-ID:t (klient) som ska användas i programmets källkod.

Skapa en klienthemlighet för det registrerade programmet. Programmet använder klienthemligheten för att bevisa sin identitet när den begär token.

  1. På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-client-app) för att öppna sidan Översikt.
  2. Under Hantera väljer du Certifikat och hemligheter.
  3. Välj Ny klienthemlighet.
  4. I rutan Beskrivning anger du en beskrivning av klienthemligheten (till exempel ciam-appklienthemlighet).
  5. Under Upphör att gälla väljer du en varaktighet för vilken hemligheten är giltig (enligt organisationens säkerhetsregler) och väljer sedan Lägg till.
  6. Registrera hemlighetens värde. Du använder det här värdet för konfiguration i ett senare steg. Det hemliga värdet visas inte igen och kan inte hämtas på något sätt när du har navigerat bort från certifikaten och hemligheterna. Se till att du registrerar den.

Tilldela approllen till din daemon-app

Appar som autentiserar själva kräver appbehörigheter.

  1. På sidan Appregistreringar väljer du det program som du skapade, till exempel ciam-client-app.

  2. Under Hantera väljer du API-behörigheter.

  3. Under Konfigurerade behörigheter väljer du Lägg till en behörighet.

  4. Välj fliken API:er som min organisation använder .

  5. I listan över API:er väljer du API:et, till exempel ciam-ToDoList-api.

  6. Välj alternativet Programbehörigheter . Vi väljer det här alternativet eftersom appen loggar in som sig själv, inte användare.

  7. I behörighetslistan väljer du TodoList.Read.All, ToDoList.ReadWrite.All (använd sökrutan om det behövs).

  8. Välj knappen Lägg till behörigheter.

  9. Nu har du tilldelat behörigheterna korrekt. Men eftersom daemon-appen inte tillåter användare att interagera med den, kan användarna själva inte samtycka till dessa behörigheter. För att lösa det här problemet måste du som administratör samtycka till dessa behörigheter för alla användare i klientorganisationen:

    1. Välj Bevilja administratörsmedgivande för <ditt klientnamn> och välj sedan Ja.
    2. Välj Uppdatera och kontrollera sedan att Beviljat för <klientorganisationens namn> visas under Status för båda behörigheterna.

Skriv kod

  1. Initiera en .NET-konsolapp och navigera till rotmappen

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Installera MSAL för att hjälpa dig att hantera autentisering genom att köra följande kommando:

    dotnet add package Microsoft.Identity.Client
    
  3. Kör DITT API-projekt och notera porten där det körs.

  4. Öppna filen Program.cs och ersätt "Hello world"-koden med följande kod.

    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);
    

    Navigera till daemon-appens rotkatalog och kör appen med kommandot dotnet run. Den här koden skickar en begäran utan en åtkomsttoken. Du bör se strängen: Ditt svar är: Otillåten utskrift i konsolen.

  5. Ta bort koden i steg 4 och ersätt med följande för att testa ditt API genom att skicka en begäran med en giltig åtkomsttoken.

    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);
    

    Navigera till daemon-appens rotkatalog och kör appen med kommandot dotnet run. Den här koden skickar en begäran med en giltig åtkomsttoken. Du bör se strängen: Svaret är: OK skrivs ut i konsolen.

Se även

Aktivera lösenordsåterställning via självbetjäning