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 ditt program i Azure-portalen

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

Har redan konfigurerats Programmet har konfigurerats med det här attributet.

Steg 2: Ladda ned projektet

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

Tips

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-OpenIDConnect-DotNet.sln).

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

  4. Öppna Package Manager-konsolen genom att välja Visa>Andra fönster>Package Manager Console. Kör sedan Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

Notera

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 över interaktionen mellan webbläsaren, webbappen och Microsofts identitetsplattform i exempelappen.

NuGet-paket med OWIN-mellanprogram

Du kan konfigurera autentiseringspipelinen med cookiebaserad autentisering med hjälp av OpenID Connect 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
            }
        }
    );
}
Var 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 {tenant} är namnet på din klient, 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 dit användare skickas efter att ha loggat ut.
Scope Listan över omfång som begärs, separerade med mellanslag.
ResponseType Begäran om att svaret från autentiseringen innehåller en auktoriseringskod och en ID-token.
TokenValidationParameters En lista med parametrar för tokenverifiering. I det här fallet är ValidateIssuer inställd på false för att indikera att den kan acceptera inloggningar från alla personliga kontotyper, arbets- eller skolkontotyper.
Notifications En lista över delegater som kan köras för OpenIdConnect-meddelanden.

Notera

Att ange ValidateIssuer = false är en förenkling för den här snabbstarten. Verifiera utfärdaren i verkliga applikationer. 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 autentiseringsutmaning i kontrollanten:

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

Tips

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 den metod som beskrivs i nästa avsnitt.

Attribut för att skydda en kontroller eller kontrollerns åtgärder

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 attributet [Authorize].

Hjälp och stöd

Om du behöver hjälp, vill rapportera ett problem eller vill veta 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.