gebeurtenis
Power BI DataViz World Championships
14 feb, 16 - 31 mrt, 16
Met 4 kansen om in te gaan, kun je een conferentiepakket winnen en het naar de LIVE Grand Finale in Las Vegas maken
Meer informatieDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Met de externe verificatiefunctie van System.Web-adapters kan een ASP.NET Core-app de identiteit van een gebruiker bepalen (een HTTP-aanvraag verifiëren) door uit te stellen op een ASP.NET-app. Als u de functie inschakelt, wordt een eindpunt toegevoegd aan de ASP.NET-app die een geserialiseerde ClaimsPrincipal retourneert die de geverifieerde gebruiker vertegenwoordigt voor alle aanvragen die zijn ingediend bij het eindpunt. De ASP.NET Core-app registreert vervolgens een aangepaste verificatiehandler die (voor eindpunten waarvoor externe verificatie is ingeschakeld) de identiteit van een gebruiker bepaalt door dat eindpunt aan te roepen in de ASP.NET-app en geselecteerde headers en cookies door te geven van de oorspronkelijke aanvraag die is ontvangen door de ASP.NET Core-app.
Er zijn slechts enkele kleine codewijzigingen nodig om externe verificatie in te schakelen in een oplossing die al is ingesteld volgens de Aan de slag.
Volg eerst de externe app-installatie instructies om de ASP.NET Core- en ASP.NET-apps te verbinden. Vervolgens zijn er slechts een paar extra extensiemethoden die je kunt aanroepen om de externe app-authenticatie in te schakelen.
De ASP.NET-app moet worden geconfigureerd om het verificatie-eindpunt toe te voegen. Het toevoegen van het verificatie-eindpunt wordt uitgevoerd door de AddAuthenticationServer
-extensiemethode aan te roepen om de HTTP-module in te stellen die controleert op aanvragen naar het verificatie-eindpunt. Houd er rekening mee dat scenario's voor externe verificatie doorgaans ook proxyondersteuning willen toevoegen, zodat de omleidingen die met verificatie te maken hebben correct naar de ASP.NET Core-app in plaats van de ASP.NET-app worden gerouteerd.
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
.AddProxySupport(options => options.UseForwardedHeaders = true)
.AddRemoteAppServer(options =>
{
options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
})
.AddAuthenticationServer();
Vervolgens moet de ASP.NET Core-app worden geconfigureerd om de verificatiehandler in te schakelen waarmee gebruikers worden geverifieerd door een HTTP-aanvraag naar de ASP.NET-app te verzenden. Nogmaals, dit wordt gedaan door AddAuthenticationClient
aan te roepen bij het registreren van System.Web adapters services:
builder.Services.AddSystemWebAdapters()
.AddRemoteAppClient(options =>
{
options.RemoteAppUrl = new Uri(builder.Configuration
["ReverseProxy:Clusters:fallbackCluster:Destinations:fallbackApp:Address"]);
options.ApiKey = builder.Configuration["RemoteAppApiKey"];
})
.AddAuthenticationClient(true);
De Booleaanse waarde die wordt doorgegeven aan de AddAuthenticationClient
-aanroep geeft aan of externe app-verificatie het standaardverificatieschema moet zijn. Als true
wordt doorgegeven, wordt de gebruiker geverifieerd via externe app-verificatie voor alle aanvragen, terwijl het doorgeven van false
betekent dat de gebruiker alleen wordt geverifieerd met externe app-verificatie als het externe app-schema specifiek wordt aangevraagd (bijvoorbeeld met [Authorize(AuthenticationSchemes = RemoteAppAuthenticationDefaults.AuthenticationScheme)]
op een controller of actiemethode). Het doorgeven van false voor deze parameter heeft het voordeel dat alleen HTTP-aanvragen worden verzonden naar de oorspronkelijke ASP.NET-app voor verificatie voor eindpunten waarvoor externe app-verificatie is vereist, maar het nadeel heeft dat er aantekeningen moeten worden toegevoegd aan al deze eindpunten om aan te geven dat ze externe app-verificatie gebruiken.
Naast de vereiste booleaanse waarde kan een optionele callback worden doorgegeven aan AddAuthenticationClient
om enkele andere aspecten van het gedrag van het externe verificatieproces te wijzigen:
RequestHeadersToForward
: deze eigenschap bevat headers die moeten worden doorgestuurd vanuit een aanvraag bij het aanroepen van de verificatie-API. De enige headers die worden doorgestuurd, worden standaard Authorization
en Cookie
. Extra headers kunnen worden doorgestuurd door ze toe te voegen aan deze lijst. Als de lijst is gewist (zodat er geen kopteksten zijn opgegeven), worden alle headers ook doorgestuurd.ResponseHeadersToForward
: deze eigenschap bevat antwoordheaders die moeten worden doorgegeven vanuit de verificatieaanvraag naar de oorspronkelijke aanroep waarin verificatie is gevraagd in scenario's waarin identiteit wordt aangeroepen. Dit omvat standaard Location
, Set-Cookie
en WWW-Authenticate
kopteksten.AuthenticationEndpointPath
: het eindpunt in de ASP.NET-app waar verificatieaanvragen moeten worden gedaan. Dit is standaard ingesteld op /systemweb-adapters/authenticate
en moet overeenkomen met het eindpunt dat is opgegeven in de configuratie van het ASP.NET verificatie-eindpunt.Als ten slotte de ASP.NET Core-app eerder geen middleware voor verificatie heeft opgenomen, moet deze worden ingeschakeld (na routering van middleware, maar vóór autorisatie-middleware):
app.UseAuthentication();
RemoteAuthenticationAuthHandler
de gebruiker te verifiëren.
Authorize
en Cookie
headers. De HEADER van de API-sleutel wordt ook toegevoegd voor beveiligingsdoeleinden.RemoteAuthenticationAuthHandler
van de ASP.NET Core-app het antwoord van de ASP.NET-app ontvangt: IRemoteAuthenticationResultProcessor
-implementaties registreren bij de ASP.NET Core-app, die worden uitgevoerd op alle authenticatieresultaten voordat ze worden gebruikt. Als voorbeeld is de ingebouwde IRemoteAuthenticationResultProcessor
RedirectUrlProcessor
die zoekt naar Location
antwoordheaders die worden geretourneerd vanaf het verificatie-eindpunt en ervoor zorgt dat ze terugkeren naar de host van de ASP.NET Core-app en niet rechtstreeks naar de ASP.NET-app.Deze benadering voor externe verificatie kent enkele bekende beperkingen:
Als authenticatie in de ASP.NET-app wordt uitgevoerd met Microsoft.Owin
Cookie Authentication Middleware, dan is een alternatief voor het delen van identiteit het zodanig configureren van de ASP.NET- en ASP.NET Core-apps dat ze dezelfde authenticatiemogelijkheden kunnen delen cookie. Door het delen van een verificatie cookie maakt u het volgende mogelijk:
Houd er rekening mee dat omdat aanmelden doorgaans afhankelijk is van een specifieke database, niet alle verificatiefunctionaliteit in beide apps werkt:
Details over hoe verificatiecookies te configureren voor het delen tussen ASP.NET en ASP.NET Core-apps zijn beschikbaar in de documentatie voor het delen cookie. De volgende voorbeelden in de System.Web-adapters GitHub-opslagplaats demonstreren authenticatie van externe apps met gedeelde cookie-configuratie, zodat beide apps gebruikers kunnen aanmelden en afmelden.
Delen van authenticatie is een goede optie als beide van de volgende waar zijn:
Microsoft.Owin
cookie verificatie.Voor andere scenario's is de benadering voor externe verificatie die eerder in dit document is beschreven flexibeler en is waarschijnlijk beter geschikt.
ASP.NET Core-feedback
ASP.NET Core is een open source project. Selecteer een koppeling om feedback te geven:
gebeurtenis
Power BI DataViz World Championships
14 feb, 16 - 31 mrt, 16
Met 4 kansen om in te gaan, kun je een conferentiepakket winnen en het naar de LIVE Grand Finale in Las Vegas maken
Meer informatieTraining
Module
Een .NET-web-app beveiligen met het ASP.NET Core Identity Framework - Training
Meer informatie over het toevoegen van verificatie en autorisatie aan een .NET-web-app met behulp van het ASP.NET Core Identity Framework.
Certificering
Microsoft Gecertificeerd: Identiteits- en Toegangsbeheerbeheerder Associate - Certifications
Demonstreer de functies van Microsoft Entra ID om identiteitsoplossingen te moderniseren, hybride oplossingen te implementeren en identiteitsbeheer te implementeren.
Documentatie
Gemigreerde eindpunten testen met A/B
Gemigreerde eindpunten testen met A/B