Dela via


Snabbstart: Logga in användare och anropa Microsoft Graph API från en ASP.NET webbapp

I den här snabbstarten laddar du ned och kör ett kodexempel som visar ett ASP.NET webbprogram som kan logga in användare med Microsoft Entra-konton.

Se Så här fungerar exemplet för en bild.

Förutsättningar

Registrera och ladda ned appen

Dricks

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

Du har två alternativ för att börja skapa ditt program: automatisk eller manuell konfiguration.

Automatisk konfiguration

Om du vill konfigurera appen automatiskt och sedan ladda ned kodexemplet följer du dessa steg:

  1. Logga in på microsoft Entra-administrationscentrets snabbstartsupplevelse som minst molnprogramadministratör.
  2. Ange ett namn för programmet och välj Registrera.
  3. Följ anvisningarna för att ladda ned och konfigurera det nya programmet automatiskt med ett klick.

Manuell konfiguration

Om du vill konfigurera programmet och kodexemplet manuellt använder du följande procedurer.

Steg 1: Registrera din app

  1. Logga in på administrationscentret för Microsoft Entra som minst molnprogramadministratör.
  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 och välj Ny registrering.
  4. Som Namn anger du ett namn för ditt program. Ange till exempel ASPNET-Snabbstart. Användare av din app ser det här namnet och du kan ändra det senare.
  5. Ange omdirigerings-URI-typen till Webb och värdet till https://localhost:44368/.
  6. Välj Registrera.
  7. Under Hantera väljer du Autentisering.
  8. I avsnittet Implicit beviljande och hybridflöden väljer du ID-token.
  9. Välj Spara.

Steg 2: Ladda ned projektet

Ladda ned kodexemplet för ASP.NET

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.

Steg 3: Kör projektet

  1. Extrahera .zip-filen till en lokal mapp som är nära rotmappen. Du kan till exempel extrahera till C:\Azure-Samples.

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

  2. Öppna lösningen i Visual Studio (AppModelv2-WebApp-OpenID Anslut-DotNet.sln).

  3. Beroende på versionen av Visual Studio kan du behöva högerklicka på projektet AppModelv2-WebApp-OpenID Anslut-DotNet och sedan välja Återställ NuGet-paket.

  4. Öppna Package Manager-konsolen genom att välja Visa>annan Windows>Package Manager-konsol. Kör sedan Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

  5. Redigera appsettings.json och ersätt parametrarna ClientId, Tenantoch redirectUri med:

    "ClientId" :"Enter_the_Application_Id_here" />
    "TenantId": "Enter_the_Tenant_Info_Here" />
    "RedirectUri" :"https://localhost:44368/" />
    

    I den koden:

    • Enter_the_Application_Id_here är program-ID:t (klient) för appregistreringen som du skapade tidigare. Hitta program-ID:t (klient) på appens översiktssida i Appregistreringar i administrationscentret för Microsoft Entra.
    • Enter_the_Tenant_Info_Here är ett av följande alternativ:
      • Om ditt program endast stöder Min organisation ersätter du det här värdet med katalog-ID:t eller klientorganisationens namn (till exempel contoso.onmicrosoft.com). Hitta katalog-ID:t (klientorganisation) på appens översiktssida i Appregistreringar i administrationscentret för Microsoft Entra.
      • Om ditt program stöder Konton i en organisationskatalog ersätter du det här värdet med organizations.
      • Om ditt program stöder Alla Microsoft-kontoanvändare ersätter du det här värdet med common.
    • redirectUriär den omdirigerings-URI som du angav tidigare i Appregistreringar i administrationscentret för Microsoft Entra.

Mer information

Det här avsnittet ger en översikt över den kod som krävs för att logga in användare. Den här översikten kan vara användbar för att förstå hur koden fungerar, vad huvudargumenten är och hur du lägger till inloggning i ett befintligt ASP.NET program.

Så här fungerar exemplet

Diagram över interaktionen mellan webbläsaren, webbappen och Microsofts identitetsplattform i exempelappen.

OWIN-mellanprogrammets NuGet-paket

Du kan konfigurera autentiseringspipelinen med cookiebaserad autentisering med hjälp av OpenID-Anslut i ASP.NET med OWIN-mellanprogramspaket. Du kan installera dessa paket genom att köra följande kommandon i Package Manager Console i Visual Studio:

Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies

OWIN-startklass

OWIN-mellanprogrammet använder en startklass som körs när värdprocessen startar. I den här snabbstarten finns startup.cs-filen i rotmappen. Följande kod visar de parametrar som används i den här snabbstarten:

    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();

        app.AddMicrosoftIdentityWebApp(factory);
        factory.Services
            .Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
            .AddMicrosoftGraph()
            .AddInMemoryTokenCaches();
        factory.Build();
    }
Där beskrivning
ClientId Program-ID:t från programmet som registrerats i Azure-portalen.
Authority StS-slutpunkten (Security Token Service) som användaren kan autentisera. Det är vanligtvis https://login.microsoftonline.com/{tenant}/v2.0 för det offentliga molnet. I den URL:en är {tenant} namnet på din klientorganisation, ditt klient-ID eller common för en referens till den gemensamma slutpunkten. (Den gemensamma slutpunkten används för program med flera klienter.)
RedirectUri URL:en där användare skickas efter autentisering mot Microsofts identitetsplattform.
PostLogoutRedirectUri URL:en där användare skickas efter signering.
Scope Listan över omfång som begärs, avgränsade med blanksteg.
ResponseType Begäran om att svaret från autentiseringen innehåller en auktoriseringskod och en ID-token.
TokenValidationParameters En lista över parametrar för tokenvalidering. I det här fallet ValidateIssuer är inställt på att false indikera att det kan acceptera inloggningar från alla personliga konto-, arbets- eller skolkontotyper.
Notifications En lista över ombud som kan köras på OpenIdConnect meddelanden.

Autentiseringsutmaning

Du kan tvinga en användare att logga in genom att begära en autentiseringsfråga i kontrollanten:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Dricks

Det är valfritt att begära en autentiseringsutmaning med den här metoden. Du använder den normalt när du vill att en vy ska vara tillgänglig för både autentiserade och oautentiserade användare. Du kan också skydda kontrollanter med hjälp av metoden som beskrivs i nästa avsnitt.

Attribut för att skydda en kontrollant eller en kontrollantåtgärd

Du kan skydda en kontrollant eller kontrollantåtgärder med hjälp av attributet [Authorize] . Det här attributet begränsar åtkomsten till kontrollanten eller åtgärder genom att endast autentiserade användare får åtkomst till åtgärderna i kontrollanten. En autentiseringsutmaning sker sedan automatiskt när en oautentiserad användare försöker komma åt någon av de åtgärder eller kontrollanter som är dekorerade med [Authorize] attributet.

Anropa Microsoft Graph från kontrollanten

Du kan anropa Microsoft Graph från kontrollanten genom att hämta instansen av GraphServiceClient med hjälp GetGraphServiceClient av tilläggsmetoden på kontrollanten, som i följande kod:

    try
    { 
        var me = await this.GetGraphServiceClient().Me.GetAsync();
        ViewBag.Username = me.DisplayName;
    }
    catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
        return View();
    }

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

Om du vill ha en fullständig steg-för-steg-guide om hur du skapar program och nya funktioner, inklusive en fullständig förklaring av den här snabbstarten, kan du prova ASP.NET självstudien.