Dela via


Anropa ett ASP.NET Core-webb-API med sömnlöshet

Den här artikeln visar hur du anropar ett skyddat ASP.NET Core-webb-API med hjälp av Sömnlöshet. Sömnlöshet är ett program som låter dig skicka HTTP-begäranden till ett webb-API för att testa dess auktoriserings- och åtkomstkontrollprinciper (autentisering). I den här artikeln registrerar du en webbapp och ett webb-API i en klientorganisation. Webbappen används för att hämta en åtkomsttoken som genereras av Microsoft platforma za identitete. Sedan använder du token för att göra ett auktoriserat anrop till webb-API:et med hjälp av Insomnia.

Den här artikeln visar hur du anropar ett skyddat ASP.NET Core-webb-API med hjälp av Sömnlöshet. Sömnlöshet är ett program som låter dig skicka HTTP-begäranden till ett webb-API för att testa dess auktoriserings- och åtkomstkontrollprinciper (autentisering). I självstudien: Implementera en skyddad slutpunkt till ditt API, där du skapade ett skyddat API, måste du registrera ett webbprogram med Microsoft platforma za identitete för att generera en åtkomsttoken. Sedan använder du token för att göra ett auktoriserat anrop till API:et med hjälp av Insomnia.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
  • Det här Azure-kontot måste ha behörighet att hantera program. Någon av följande Microsoft Entra-roller innehåller de behörigheter som krävs:
    • Programadministratör
    • Programutvecklare
    • Molnprogramadministratör
  • Ladda ned och installera Insomnia. Du använder Insomnia för att hämta en åtkomsttoken för dina API-begäranden.
  • Ett minimikrav på .NET 8.0 SDK.

Registrera en app

Microsoft platforma za identitete kräver att ditt program registreras innan du tillhandahåller identitets- och åtkomsthanteringstjänster. Med programregistreringen kan du ange namnet och typen av program och inloggningspubliken. Inloggningspubliken anger vilka typer av användarkonton som tillåts logga in på ett visst program.

Registrera webb-API:et

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Följ dessa steg för att skapa webb-API-registreringen:

  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 Appregistreringar för identitetsprogram>>.

  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. Du kan se programmets översiktsfönster när registreringen är klar. Registrera katalog-ID:t (klient)-ID:t och program-ID:t (klient) som ska användas i senare steg.

    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.

Exponera API:et

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 är giltig.

  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.

Registrera webbappen

Det räcker inte att ha ett webb-API, du behöver också en webbapp för att få en åtkomsttoken för att få åtkomst till webb-API:et.

Följ dessa steg för att skapa registrering av webbappar:

  1. Välj Start för att återgå till startsidan. Bläddra till Appregistreringar för identitetsprogram>>.
  2. Välj Ny registrering.
  3. Ange ett namn för programmet, till exempel web-app-calls-web-api.
  4. 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 .
  5. Under Omdirigerings-URI (valfritt) väljer du Webb och anger http://localhost sedan i textrutan URL.
  6. Välj Registrera.
  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 Appregistreringar för identitetsprogram>>.
  4. Välj Ny registrering.
  5. Ange ett namn för programmet, till exempel web-app-calls-web-api.
  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 .
  7. Under Omdirigerings-URI (valfritt) väljer du Webb och anger http://localhost sedan i textrutan URL.
  8. Välj Registrera.

Du kan se programmets översiktsfönster när registreringen är klar. Registrera katalog-ID:t (klient)-ID:t och program-ID:t (klient) som ska användas i senare steg.

Lägg till en klienthemlighet

En klienthemlighet är ett strängvärde som appen kan använda för själva identiteten och kallas ibland för ett programlösenord. Webbappen använder klienthemligheten för att bevisa sin identitet när den begär token.

Följ dessa steg för att konfigurera en klienthemlighet:

  1. I fönstret Översikt går du till Hantera och väljer Certifikat och hemligheter>Klienthemligheter>Ny klienthemlighet.

  2. Lägg till en beskrivning för din klienthemlighet, till exempel Min klienthemlighet.

  3. Välj en förfallotidpunkt för hemligheten eller ange en anpassad livslängd.

    • En klienthemlighets livslängd är begränsad till två år (24 månader) eller mindre. Du kan inte ange en anpassad livslängd som är längre än 24 månader.
    • Microsoft rekommenderar att du anger ett förfallovärde på mindre än 12 månader.
  4. Markera Lägga till.

  5. Se till att registrera värdet för klienthemligheten. Det här hemliga värdet visas aldrig igen när du har lämnat den här sidan.

Mer information om hur du lagrar din klienthemlighet på ett säkert sätt finns i Metodtips för hantering av hemligheter i Key Vault.

Lägga till behörigheter för att komma åt ditt webb-API

Genom att ange webb-API:ets omfång kan webbappen hämta en åtkomsttoken som innehåller de omfång som tillhandahålls av Microsoft platforma za identitete. I koden kan webb-API:et sedan ge behörighetsbaserad åtkomst till dess resurser baserat på de omfång som finns i åtkomsttoken.

Följ dessa steg för att konfigurera klientens behörigheter till webb-API:et:

  1. I fönstret Översikt i ditt program går du till Hantera och väljer API-behörigheter>Lägg till behörighets-API>:er som min organisation använder.
  2. Välj NewWebAPI1 eller det API som du vill lägga till behörigheter till.
  3. Markera kryssrutan bredvid Forecast.Read under Välj behörigheter. Du kan behöva expandera behörighetslistan. Detta väljer de behörigheter som klientappen ska ha för den inloggade användarens räkning.
  4. Välj Lägg till behörigheter för att slutföra processen.

När du har lagt till dessa behörigheter i ditt API bör du se de valda behörigheterna under Konfigurerade behörigheter.

Du kan också märka behörigheten User.Read för Microsoft Graph-API:et. Den här behörigheten läggs till automatiskt när du registrerar en app.

Testa webb-API:et

Följ dessa steg för att se till att ditt API är i drift och redo att hantera begäranden:

  1. Klona lagringsplatsen ms-identity-docs-code-dotnet.

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  2. Navigera till ms-identity-docs-code-dotnet/web-api och öppna appsettings.json, ersätt {APPLICATION_CLIENT_ID} och {DIRECTORY_TENANT_ID} med följande värden:

    • {APPLICATION_CLIENT_ID}är webb-API-programmets (klient)-ID i appens översiktsfönster.
    • {DIRECTORY_TENANT_ID}är webb-API-katalog-ID :t (klientorganisation) i appens översiktsfönster.
  3. Kör följande kommando för att starta appen:

    dotnet run
    
  4. Utdata som liknar följande visas. Registrera portnumret i https://localhost:{port} URL:en.

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

Testa webb-API:et

Följ dessa steg för att se till att ditt API är i drift och redo att hantera begäranden:

  1. Navigera till webb-API:et som skapades i Självstudie: Skapa ett ASP.NET Core-projekt och konfigurera API:et, till exempel NewWebAPILocal, och öppna mappen.

  2. Öppna ett nytt terminalfönster och navigera till mappen där webb-API-projektet finns.

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

      dotnet run
      
  3. Utdata som liknar följande visas. Registrera portnumret i https://localhost:{port} URL:en.

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

Konfigurera en auktoriserad begäran till webb-API:et i Sömnlöshet

Följ dessa steg för att hämta en åtkomsttoken för dina API-begäranden:

  1. Starta insomnia-programmet.

  2. Välj Ny HTTP-begäran eller använd Ctrl + N för att skapa en ny HTTP-begäran.

  3. I modalen Ny begäran väljer du en GET-metod i listrutan.

  4. Ange URL:en för den slutpunkt som exponeras av webb-API:et för https://localhost:{port}/weatherforecastbegärande-URL:en.

  5. I listrutan Auth väljer du OAuth 2.0. Då visas OAuth 2.0-formuläret .

  6. Ange följande värden i formuläret OAuth 2.0 :

    Inställning Värde
    BEVILJA TYP Välj auktoriseringskod
    AUKTORISERINGS-URL https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize
    Ersätt {tenantId} med katalog-ID :t (klientorganisation)
    URL FÖR ÅTKOMSTTOKEN https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    Ersätt {tenantId} med katalog-ID :t (klientorganisation)
    KLIENT-ID Program-ID-värdet (klient) för din webbappsregistrering
    KLIENTHEMLIGHET Värdet för webbappregistreringens klienthemlighet
    OMDIRIGERINGS-URL Ange http://localhost, som anger OMDIRIGERINGs-URL:en till omdirigerings-URI:n som registrerats med Microsoft Entra-ID.
    Omfång för avancerade alternativ> api://{application_client_id}/Forecast.Read
    Gå till din webbappsregistrering under Hantera, välj API-behörigheter och välj sedan Forecast.Read
    Kopiera värdet i textrutan, som innehåller omfångsvärdet

Hämta en åtkomsttoken och skicka en begäran till webb-API:et

  1. När dessa värden har angetts väljer du Hämta token i slutet av formuläret. Detta startar ett webbläsarfönster för Insomnia där du autentiserar med dina användarautentiseringsuppgifter. Se till att tillåta popup-fönster från programmet Insomnia i webbläsaren.
  2. När du har autentiserat väljer du Skicka för att skicka begäran till den skyddade webb-API-slutpunkten.

Med en giltig åtkomsttoken som ingår i begäran är det förväntade svaret 200 OK med utdata som liknar:

[
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": -16,
    "summary": "Scorching",
    "temperatureF": 4
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 1,
    "summary": "Sweltering",
    "temperatureF": 33
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 26,
    "summary": "Freezing",
    "temperatureF": 78
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 54,
    "summary": "Mild",
    "temperatureF": 129
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 11,
    "summary": "Bracing",
    "temperatureF": 51
  }
]

Mer information om OAuth 2.0-auktoriseringskodflöde och programtyper finns i: