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.
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.
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.
Öppna lösningen i Visual Studio (AppModelv2-WebApp-OpenID Anslut-DotNet.sln).
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.
Ö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
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 ellercommon
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å attfalse
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.