Snabbstart: Skydda ett ASP.NET Core-webb-API med Microsofts identitetsplattform
Den här snabbstarten använder ett kodexempel för ASP.NET Core-webb-API:et för att visa hur du begränsar resursåtkomsten till auktoriserade konton. Exemplet använder ASP.NET Core Identity som interagerar med Microsoft Authentication Library (MSAL) för att hantera autentisering.
Förutsättningar
- Azure-konto med en aktiv prenumeration. Om du inte redan har ett kan du skapa ett konto kostnadsfritt.
- Ett minimikrav för .NET 8.0 SDK
- Visual Studio 2022 eller Visual Studio Code
Registrera program- och postidentifierare
Dricks
Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.
För att slutföra registreringen anger du ett namn för programmet och anger vilka kontotyper som stöds. När programmet har registrerats visar programöversiktssidan de identifierare som behövs i programmets källkod.
Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.
Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till den klientorganisation där du vill registrera programmet från menyn Kataloger + prenumerationer.
Bläddra till Identitetsprogram>> Appregistreringar.
Välj Ny registrering.
Ange ett namn för programmet, till exempel NewWebAPI1.
För Kontotyper som stöds väljer du Endast konton i den här organisationskatalogen. Om du vill ha information om olika kontotyper väljer du Alternativet Hjälp mig att välja .
Välj 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.
Kommentar
Kontotyper som stöds kan ändras genom att referera till Ändra konton som stöds av ett program.
Gör ett API tillgängligt
När API:et har registrerats kan du konfigurera dess behörighet genom att definiera de omfång som API:et exponerar för klientprogram. Klientprogram begär behörighet att utföra åtgärder genom att skicka en åtkomsttoken tillsammans med dess begäranden till det skyddade webb-API:et. Webb-API:et utför sedan endast den begärda åtgärden om den åtkomsttoken som den tar emot innehåller de nödvändiga omfången.
Under Hantera väljer du Exponera ett API > Lägg till ett omfång. Acceptera den föreslagna program-ID-URI:
(api://{clientId})
n genom att välja Spara och fortsätta.{clientId}
är värdet som registrerats från sidan Översikt. Ange sedan följande information:- Som Omfångsnamn anger du
Forecast.Read
. - För Vem kan samtycka kontrollerar du att alternativet Administratörer och användare är valt.
- I rutan Visningsnamn för administratörsmedgivande anger du
Read forecast data
. - I rutan Beskrivning av administratörsmedgivande anger du
Allows the application to read weather forecast data
. - I rutan Visningsnamn för användarmedgivande anger du
Read forecast data
. - I rutan Beskrivning av användarmedgivande anger du
Allows the application to read weather forecast data
. - Kontrollera att tillståndet är inställt på Aktiverad.
- Som Omfångsnamn anger du
Välj Lägg till definitionsområde. Om omfånget har angetts korrekt visas det i fönstret Exponera ett API .
Klona eller ladda ned exempelprogrammet
Om du vill hämta exempelprogrammet kan du antingen klona det från GitHub eller ladda ned det som en .zip fil.
Om du vill klona exemplet öppnar du en kommandotolk och navigerar till den platsen där du vill skapa projektet och anger följande kommando:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
Ladda ned filen .zip. Extrahera den till en filsökväg där namnets längd är färre än 260 tecken.
Konfigurera exempelprogrammet ASP.NET Core
I din IDE öppnar du projektmappen ms-identity-docs-code-dotnet/web-api som innehåller exemplet.
Öppna
appsettings.json
filen, som innehåller följande kodfragment:{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center", "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center", "Scopes": "Forecast.Read" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Hitta följande
key
:ClientId
- Identifieraren för programmet, även kallad klienten.value
Ersätt texten inom citattecken med program-ID (klient)-ID som spelades in tidigare från översiktssidan för det registrerade programmet.TenantId
– Identifieraren för klientorganisationen där programmet är registrerat.value
Ersätt texten i citattecken med katalog-ID-värdet (klientorganisation) som spelades in tidigare från översiktssidan för det registrerade programmet.
Köra exempelprogrammet
Kör följande kommando för att starta appen:
dotnet run
Utdata som följande exempel visas:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Registrera portnumret i
http://localhost:{port}
URL:en.Kontrollera att slutpunkten är skyddad genom att uppdatera bas-URL:en i följande cURL-kommando så att den matchar den du fick i föregående steg och kör sedan kommandot:
curl -X GET https://localhost:5001/weatherforecast -ki
Det förväntade svaret är 401 Obehörig med utdata som liknar:
user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki HTTP/2 401 date: Fri, 23 Sep 2023 23:34:24 GMT server: Kestrel www-authenticate: Bearer content-length: 0
Nästa steg
Gå vidare till nästa artikel för att lära dig hur du anropar det skyddade webb-API:et med hjälp av cURL.