ausgeführt Ich füge Aut0 zum einfachen Projekt hinzu und versuche zu verstehen, wie Middleware funktioniert.Wie werden Middlewares in ASP.NET Core
In meinem Startup.cs Ich habe diesen Code
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IOptions<AuthSettings> auth0Settings)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
// Add the cookie middleware
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
// Add the OIDC middleware
var options = new OpenIdConnectOptions("Auth0")
{
// here there are some configurations
// .....................
};
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("name");
options.Scope.Add("email");
options.Scope.Add("picture");
app.UseOpenIdConnectAuthentication(options);
app.UseMvc(routeBuilder =>
{
routeBuilder.MapRoute("Default", "{controller=Home}/{action=Index}");
});
}
Wenn ich in ASP.NET-Core in unserem Beispiel richtig die Idee der Middleware zu verstehen, wenn es ein Cookie vorhanden ist und die Authentifizierung kann es geschehen
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
OpenId Middleware wird nicht ausgeführt.
app.UseOpenIdConnectAuthentication(options);
Könnte mir jemand erklären, wie funktioniert OpenId Middleware weiß, dass es nicht ausgeführt werden sollte?
Am Boden haben wir
app.UseMvc(routeBuilder =>
{
routeBuilder.MapRoute("Default", "{controller=Home}/{action=Index}");
});
Wie funktioniert es weiß, dass es immer in Fall ausgeführt werden soll, aber wo wir fordern einige statische Datei, die wir nicht Mvc verwenden.
Haben Sie einen Kommentar zur "AutomaticChallenge" -Eigenschaft? Welchen Effekt hat AutomaticChallenge in der UseCookieAuthentication Middleware auf true gesetzt? Meine Ergebnisse sagen mir, dass diese Eigenschaft sollte nicht auf True festgelegt werden, wenn Sie eine UseOpenIdConnectAuthentication in der Pipeline haben, dies aufgrund der Tatsache, dass die OIDC Middleware standardmäßig AutomaticChallenge auf True festgelegt haben. https://github.com/aspnet/Announcements/issues/210 –
AutomaticChallenge definiert einfach, ob die Middleware so funktionieren soll, als wäre sie direkt aufgefordert worden, eine Anfrage zu stellen, wenn eine Anfrage nicht autorisiert ist. Es ist ein wenig sinnlos, zwei von ihnen zu haben, da nur derjenige läuft, der näher an dem nicht autorisierten Ergebnis registriert ist (d. H. Derjenige, der später registriert wird). Es hängt wirklich von Ihrem spezifischen Anwendungsfall ab, welche Middleware standardmäßig verwendet werden sollte. * Normalerweise * OIDC ist die Standardeinstellung, da der Benutzer zum Anmeldeprovider weitergeleitet werden soll. – juunas