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

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.

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

  2. 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.

  3. Bläddra till Identitetsprogram>> Appregistreringar.

  4. Välj Ny registrering.

  5. Ange ett namn för programmet, till exempel NewWebAPI1.

  6. 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 .

  7. Välj Registrera.

    Skärmbild som visar hur du anger ett namn och väljer kontotyp.

  8. 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.

    Skärmbild som visar identifierarvärdena på översiktssidan.

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.

  1. 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:

    1. Som Omfångsnamn anger du Forecast.Read.
    2. För Vem kan samtycka kontrollerar du att alternativet Administratörer och användare är valt.
    3. I rutan Visningsnamn för administratörsmedgivande anger du Read forecast data.
    4. I rutan Beskrivning av administratörsmedgivande anger du Allows the application to read weather forecast data.
    5. I rutan Visningsnamn för användarmedgivande anger du Read forecast data.
    6. I rutan Beskrivning av användarmedgivande anger du Allows the application to read weather forecast data.
    7. Kontrollera att tillståndet är inställt på Aktiverad.
  2. Välj Lägg till definitionsområde. Om omfånget har angetts korrekt visas det i fönstret Exponera ett API .

    Skärmbild som visar fältvärdena när du lägger till omfånget i 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

  1. I din IDE öppnar du projektmappen ms-identity-docs-code-dotnet/web-api som innehåller exemplet.

  2. Ö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

  1. Kör följande kommando för att starta appen:

    dotnet run
    
  2. Utdata som följande exempel visas:

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

    Registrera portnumret i https://localhost:{port} URL:en.

  3. Kontrollera att slutpunkten är skyddad genom att använda följande cURL-kommando i Bash för att skicka en oautentiserad HTTP GET-begäran i Bash:

    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