Share via


Testa ditt skyddade API

Den här självstudien är en del av en serie som hjälper dig att skapa och testa ett skyddat webb-API som är registrerat i ett Microsoft Entra-ID för kunders klientorganisation.

I den här guiden får du lära dig att:

  • Testa ett skyddat webb-API med en enkel daemonapp som anropar webb-API:et

Förutsättningar

Innan du går igenom den här artikeln ska du se till att du har ett skyddat webb-API som ska användas i testsyfte.

Registrera daemonappen

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

  1. Logga in på Microsoft Entra administrationscenter som minst en programutvecklare.

  2. Om du har åtkomst till flera klienter använder du filtret Kataloger + prenumerationer på den översta menyn för att växla till din kundklientorganisation.

  3. Bläddra till Identitetsprogram>>Appregistreringar.

  4. Välj + Ny registrering.

  5. sidan Registrera ett program som visas anger du ditt programs 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 Register (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. 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 Certifikathemligheter&.
  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.

Anteckning

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 sidan Certifikat och hemligheter , så se till att du registrerar det.
För förbättrad säkerhet bör du överväga att använda certifikat i stället för klienthemligheter.

Tilldela approllen till daemonappen

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

  1. 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 Mina API:er .

  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 godkänna dessa behörigheter. För att lösa problemet måste du som administratör godkänna 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 <ditt klientnamn> visas under Status för båda behörigheterna.

Skriva kod

  1. Initiera en .NET-konsolapp och navigera till dess rotmapp

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

    Gå till daemonappens 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);
    

    Gå till daemonappens 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.