Dela via


Snabbstart: ASP.NET webbapp som loggar in Microsoft Entra-användare

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: Lägga till inloggning med Microsoft i en ASP.NET webbapp

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 ett ASP.NET webbprogram som kan logga in användare med Microsoft Entra-konton.

Steg 1: Konfigurera din app i Azure-portalen

För att kodexemplet i den här snabbstarten ska fungera anger du https://localhost:44368/ för Omdirigerings-URI.

Already configured Programmet har konfigurerats med det här attributet.

Steg 2: Ladda ned projektet

Kör projektet med hjälp av Visual Studio 2019.

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: Din app är konfigurerad och redo att köras

Vi har konfigurerat projektet med värden för appens egenskaper.

  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.

Kommentar

Enter_the_Supported_Account_Info_Here

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 of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

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.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

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());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the client ID, authority, and redirect URI as obtained from Web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the code id_token, which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.CodeIdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
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.

Kommentar

Inställningen ValidateIssuer = false är en förenkling för den här snabbstarten. Verifiera utfärdaren i verkliga program. Se exemplen för att förstå hur du gör det.

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.

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.