Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: 
Externa klienter (läs mer)
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 Microsoft Entra-klientorganisation. I del 1 av den här serien skapade du ett ASP.NET Core-webb-API och skyddade dess slutpunkter. Nu ska du skapa en enkel daemonapp, registrera den i din klientorganisation och använda daemonappen för att testa webb-API:et som du skapade.
I den här handledningen kommer du att:
- Registrera en daemonapp
- Tilldela en applikationsroll till din daemonapp
- Skapa din daemon-app
- Kör daemonappen för att anropa det skyddade webb-API:et
Förutsättningar
- Om du inte redan har gjort det slutför du Självstudie: Skapa och skydda ett ASP.NET Core-webb-API med Microsofts identitetsplattform
Registrera daemonappen
Följande steg visar hur du registrerar din daemon-app i administrationscentret för Microsoft Entra:
Logga in på Microsoft Entra-administrationscentret åtminstone som en Programutvecklare.
Om du har åtkomst till flera hyresgäster använder du ikonen Inställningar
i den översta menyn för att växla till din externa hyresgäst från menyn Kataloger + prenumerationer.Bläddra till Entra ID>.
Välj + Ny registrering.
På sidan Registrera ett program som visas anger du programmets 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älj Endast konton i den här organisationskatalogen.
Välj Registrera.
Programmets översiktsfönster visas när registreringen är klar. Notera katalog-ID (tenant) och applikations-ID (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 webbappens klienthemlighet) för att öppna sidan Översikt.
- Under Hanteraväljer du Certifikat & hemligheter>Klienthemligheter>Ny klienthemlighet.
- I rutan Beskrivning anger du en beskrivning av klienthemligheten (till exempel webbappens klienthemlighet).
- 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. 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 en applikationsroll till din daemonapp
Program som autentiserar sig själva utan en användare kräver appbehörigheter (även kallade roller). Dessa behörigheter gör att själva appen kan komma åt resurser direkt. Om vi däremot testade API:et med en inloggad användare skulle vi tilldela delegerade behörigheter (omfång). Delegerade behörigheter gör det möjligt för appen att agera för användarens räkning, begränsat till användarens åtkomsträttigheter. Följ dessa steg för att tilldela programbehörigheter till daemon-appen:
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 API:er som min organisation använder .
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, men inte för en användares räkning.
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 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:
- Välj Bevilja administratörsmedgivande för <ditt klientnamn> och välj sedan Ja.
- Välj Uppdateraoch kontrollera sedan att Beviljas för <ditt klientnamn> visas under Status för båda behörigheterna.
Skapa en daemonapp
Initiera en .NET-konsolapp och navigera till rotmappen:
dotnet new console -o MyTestApp cd MyTestAppInstallera MSAL.NET för att hantera autentisering genom att köra följande kommando:
dotnet add package Microsoft.Identity.ClientKör DITT API-projekt och notera porten 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("http://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.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. Den här daemonappen använder flödet för klientautentiseringsuppgifter för att hämta en åtkomsttoken när den autentiserar utan användarinteraktion.
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 tenantId = "<your-tenant-id>"; //Use in workforce tenant configuration var tenantName = "<your-tenant-name>"; //Use in external tenant configuration var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync(); Console.WriteLine($"Access Token: {result.AccessToken}"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine("Your response is: " + response.StatusCode); Console.WriteLine(content);Ersätt platshållarna i koden med daemonappens klient-ID, hemlighet, webb-API-program-ID och klientnamn.
- För externa klienter, använd behörighet i form av:
"https://{tenantName}.ciamlogin.com/" - För arbetskraftshyresgäster, använd myndighet i formuläret:
"https://login.microsoftonline.com/{tenantId}"
- För externa klienter, använd behörighet i form av:
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.