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:
Logga in på Microsoft Entra administrationscenter som minst en programutvecklare.
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.
Bläddra till Identitetsprogram>>Appregistreringar.
Välj + Ny registrering.
På sidan Registrera ett program som visas anger du ditt programs registreringsinformation:
I avsnittet Namn anger du ett beskrivande programnamn som ska visas för appens användare, till exempel ciam-client-app.
Under Kontotyper som stöds väljer du Endast konton i den här organisationskatalogen.
Välj Register (Registrera).
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.
- På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-client-app) för att öppna sidan Översikt.
- Under Hantera väljer du Certifikathemligheter&.
- Välj Ny klienthemlighet.
- I rutan Beskrivning anger du en beskrivning av klienthemligheten (till exempel ciam-appklienthemlighet).
- 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.
- 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.
På sidan Appregistreringar väljer du det program som du skapade, till exempel ciam-client-app.
Under Hantera väljer du API-behörigheter.
Under Konfigurerade behörigheter väljer du Lägg till en behörighet.
Välj fliken Mina API:er .
I listan över API:er väljer du API:et, till exempel ciam-ToDoList-api.
Välj alternativet Programbehörigheter . Vi väljer det här alternativet eftersom appen loggar in som sig själv, inte användare.
I behörighetslistan väljer du TodoList.Read.All, ToDoList.ReadWrite.All (använd sökrutan om det behövs).
Välj knappen Lägg till behörigheter .
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:
- Välj Bevilja administratörsmedgivande för <ditt klientnamn> och välj sedan Ja.
- Välj Uppdatera och kontrollera sedan att Beviljat för <ditt klientnamn> visas under Status för båda behörigheterna.
Skriva kod
Initiera en .NET-konsolapp och navigera till dess rotmapp
dotnet new console -o MyTestApp cd MyTestApp
Installera MSAL för att hjälpa dig att hantera autentisering genom att köra följande kommando:
dotnet add package Microsoft.Identity.Client
Kör DITT API-projekt och notera den port där det körs.
Ö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.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.