Snabbstart: Anropa ett ASP.NET webb-API som skyddas av Microsofts identitetsplattform

Välkommen! Det här är förmodligen inte den sida du förväntade dig. När vi arbetar med en korrigering bör den här länken ta dig till rätt artikel:

Snabbstart: Anropa ett skyddat ASP.NET webb-API

Vi ber om ursäkt för besväret och uppskattar ditt tålamod medan vi arbetar för att få detta löst.

I den här snabbstarten laddar du ned och kör ett kodexempel som visar hur du skyddar ett ASP.NET webb-API genom att begränsa åtkomsten till dess resurser till endast auktoriserade konton. Exemplet stöder auktorisering av personliga Microsoft-konton och -konton i alla Microsoft Entra-organisationer.

Artikeln använder också en WPF-app (Windows Presentation Foundation) för att visa hur du kan begära en åtkomsttoken för att få åtkomst till ett webb-API.

Förutsättningar

Klona eller ladda ned exemplet

Du kan hämta exemplet på något av två sätt:

  • Klona den från gränssnittet eller kommandoraden:

    git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
    
  • Ladda ned den som en ZIP-fil.

Dricks

För att undvika fel som orsakas av sökvägslängdsbegränsningar i Windows rekommenderar vi att du extraherar arkivet eller klonar lagringsplatsen till en katalog nära roten på enheten.

Registrera webb-API:et (TodoListService)

Registrera ditt webb-API i Appregistreringar i Azure-portalen.

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

  2. Bläddra till Identitetsprogram>> Appregistreringar.

  3. Välj Ny registrering.

  4. Ange ett namn för ditt program, till exempel AppModelv2-NativeClient-DotNet-TodoListService. Användare av din app kan se det här namnet och du kan ändra det senare.

  5. För Kontotyper som stöds väljer du Konton i valfri organisationskatalog.

  6. Välj Registrera för att skapa programmet.

  7. På appöversiktssidan letar du efter värdet program-ID (klient) och registrerar det för senare användning. Du behöver den för att konfigurera Visual Studio-konfigurationsfilen för det här projektet (d.v.s ClientId . i filen TodoListService\Web.config ).

  8. Under Hantera väljer du Exponera ett API>Lägg till ett omfång. Godkänn den föreslagna program-ID-URI:n (api://{clientId}> ) genom att välja Spara och fortsätta och ange sedan följande information:

    1. Som Omfångsnamn anger du access_as_user.
    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 Access TodoListService as a user.
    4. I rutan Beskrivning av administratörsmedgivande anger du Accesses the TodoListService web API as a user.
    5. I rutan Visningsnamn för användarmedgivande anger du Access TodoListService as a user.
    6. I rutan Beskrivning av användarmedgivande anger du Accesses the TodoListService web API as a user.
    7. Behåll Aktiverad för Tillstånd.
  9. Välj Lägg till definitionsområde.

Konfigurera tjänstprojektet

Konfigurera tjänstprojektet så att det matchar det registrerade webb-API:et.

  1. Öppna lösningen i Visual Studio och öppna sedan filen Web.config under roten i TodoListService-projektet.

  2. Ersätt värdet för parametern ida:ClientId med värdet för klient-ID (program-ID) från det program som du registrerade i Appregistreringar-portalen.

Lägg till det nya omfånget i filen app.config

Följ dessa steg om du vill lägga till det nya omfånget i filen TodoListClient app.config :

  1. Öppna filen app.config i rotmappen TodoListClient-projekt.

  2. Klistra in program-ID:t från det program som du registrerade för ditt TodoListService-projekt i parametern TodoListServiceScope och ersätt strängen {Enter the Application ID of your TodoListService from the app registration portal} .

Kommentar

Kontrollera att program-ID:t använder följande format: api://{TodoListService-Application-ID}/access_as_user (där {TodoListService-Application-ID} är DET GUID som representerar program-ID:t för din TodoListService-app).

Registrera webbappen (TodoListClient)

Registrera din TodoListClient-app i Appregistreringar i Azure-portalen och konfigurera sedan koden i Projektet TodoListClient. Om klienten och servern anses vara samma program kan du återanvända programmet som är registrerat i steg 2. Använd samma program om du vill att användarna ska logga in med ett personligt Microsoft-konto.

Registrera appen

Följ dessa steg för att registrera TodoListClient-appen:

  1. Gå till Microsofts identitetsplattform för utvecklare Appregistreringar portalen.

  2. Välj Ny registrering.

  3. När sidan Registrera ett program öppnas anger du programmets registreringsinformation:

    1. I avsnittet Namn anger du ett beskrivande programnamn som ska visas för appens användare (till exempel NativeClient-DotNet-TodoListClient).
    2. För Kontotyper som stöds väljer du Konton i valfri organisationskatalog.
    3. Välj Registrera för att skapa programmet.

    Kommentar

    I filen TodoListClient project app.config är standardvärdet ida:Tenant för inställt på common. Möjliga värden är:

    • common: Du kan logga in med ett arbets- eller skolkonto eller ett personligt Microsoft-konto (eftersom du valde Konton i valfri organisationskatalog i ett tidigare steg).
    • organizations: Du kan logga in med ett arbets- eller skolkonto.
    • consumers: Du kan bara logga in med ett personligt Microsoft-konto.
  4. På sidan Appöversikt väljer du Autentisering och slutför sedan de här stegen för att lägga till en plattform:

    1. Under Plattformskonfigurationer väljer du knappen Lägg till en plattform .
    2. För mobil- och skrivbordsprogram väljer du Mobil- och skrivbordsprogram.
    3. Markera kryssrutan för https://login.microsoftonline.com/common/oauth2/nativeclient Omdirigerings-URI:er.
    4. Välj Konfigurera.
  5. Välj API-behörigheter och slutför sedan de här stegen för att lägga till behörigheter:

    1. Välj knappen Lägg till en behörighet.
    2. Välj fliken Mina API:er .
    3. I listan över API:er väljer du AppModelv2-NativeClient-DotNet-TodoListService API eller det namn som du angav för webb-API:et.
    4. Markera kryssrutan access_as_user behörighet om den inte redan är markerad. Använd sökrutan om det behövs.
    5. Välj knappen Lägg till behörigheter.

Konfigurera projektet

Konfigurera ditt TodoListClient-projekt genom att lägga till program-ID:t i filen app.config .

  1. På Appregistreringar portalen på sidan Översikt kopierar du värdet för program-ID:t (klient-ID).

  2. Från rotmappen TodoListClient-projekt öppnar du filen app.config och klistrar sedan in program-ID-värdet i parametern ida:ClientId .

Köra dina projekt

Starta båda projekten. Om du använder Visual Studio:

  1. Högerklicka på Visual Studio-lösningen och välj Egenskaper

  2. I Vanliga egenskaper väljer du Startprojekt och sedan Flera startprojekt.

  3. För båda projekten väljer du Starta som åtgärd

  4. Kontrollera att TodoListService-tjänsten startar först genom att flytta den till den första positionen i listan med hjälp av uppåtpilen.

Logga in för att köra ditt TodoListClient-projekt.

  1. Tryck på F5 för att starta projekten. Tjänstsidan öppnas samt skrivbordsprogrammet.

  2. I TodoListClient, längst upp till höger, väljer du Logga in och loggar sedan in med samma autentiseringsuppgifter som du använde för att registrera ditt program eller logga in som användare i samma katalog.

    Om du loggar in för första gången kan du uppmanas att godkänna Webb-API:et TodoListService.

    För att hjälpa dig att komma åt TodoListService-webb-API:et och ändra att göra-listan begär inloggningen även en åtkomsttoken till access_as_user omfång.

Förauktorisera klientprogrammet

Du kan tillåta användare från andra kataloger att komma åt webb-API:et genom att förauktorisera klientprogrammet för åtkomst till webb-API:et. Det gör du genom att lägga till program-ID:t från klientappen i listan över förauktoriserade program för webb-API:et. Genom att lägga till en förauktoriserat klient tillåter du användare att komma åt ditt webb-API utan att behöva ge medgivande.

  1. Öppna egenskaperna för din TodoListService-app i Appregistreringar-portalen.
  2. I avsnittet Exponera ett API går du till Auktoriserade klientprogram och väljer Lägg till ett klientprogram.
  3. I rutan Klient-ID klistrar du in program-ID för TodoListClient-appen.
  4. I avsnittet Auktoriserade omfång väljer du omfånget för webb-API:et api://<Application ID>/access_as_user .
  5. Välj Lägg till program.

Köra projektet

  1. Tryck på F5 för att köra projektet. TodoListClient-appen öppnas.
  2. Längst upp till höger väljer du Logga in och loggar sedan in med ett personligt Microsoft-konto, till exempel ett live.com - eller hotmail.com-konto eller ett arbets- eller skolkonto.

Valfritt: Begränsa inloggningsåtkomsten till vissa användare

Som standard kan alla personliga konton, till exempel outlook.com eller live.com konton eller arbets- eller skolkonton från organisationer som är integrerade med Microsoft Entra-ID, begära token och komma åt ditt webb-API.

Om du vill ange vem som kan logga in på ditt program använder du något av följande alternativ:

Alternativ 1: Begränsa åtkomsten till en enskild organisation (enskild klientorganisation)

Du kan begränsa inloggningsåtkomsten till ditt program till användarkonton som finns i en enda Microsoft Entra-klientorganisation, inklusive gästkonton för den klientorganisationen. Det här scenariot är vanligt för verksamhetsspecifika program.

  1. Öppna filen App_Start\Startup.Auth och ändra sedan värdet för metadataslutpunkten som skickas till OpenIdConnectSecurityTokenProvider .https://login.microsoftonline.com/{Tenant ID}/v2.0/.well-known/openid-configuration Du kan också använda klientorganisationens namn, till exempel contoso.onmicrosoft.com.
  2. I samma fil anger du ValidIssuer egenskapen på TokenValidationParameters till https://sts.windows.net/{Tenant ID}/och anger ValidateIssuer argumentet till true.

Alternativ 2: Använd en anpassad metod för att verifiera utfärdare

Du kan implementera en anpassad metod för att verifiera utfärdare med hjälp av parametern IssuerValidator . Mer information om den här parametern finns i klassen TokenValidationParameters.

Hjälp och support

Om du behöver hjälp, vill rapportera ett problem eller vill lära dig mer om dina supportalternativ kan du läsa Hjälp och support för utvecklare.

Nästa steg

Läs mer genom att skapa ett skyddat ASP.NET Core-webb-API i följande självstudieserie: