Я добавляю Auth0 в простой проект и пытаюсь понять, как работают middlewares.Как выполняются middlewares в ASP.NET Core
В моем Startup.cs у меня есть этот код
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}");
});
}
Если я правильно понимаю идею промежуточного слоя в ASP.NET Ядре в нашем примере, если есть печенье присутствует и аутентификация может быть сделана им
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
Прошивка OpenId не будет выполнена.
app.UseOpenIdConnectAuthentication(options);
Может ли кто-нибудь объяснить мне, как промежуточное программное обеспечение OpenId знает, что оно не должно выполняться?
В нижней части мы имеем
app.UseMvc(routeBuilder =>
{
routeBuilder.MapRoute("Default", "{controller=Home}/{action=Index}");
});
Как он знает, что она всегда должна быть выполнена, но в случае, когда мы спрашиваем некоторый статический файл, который мы не используем MVC.
Есть ли у вас какие-либо комментарии связанные с "AutomaticChallenge"? Какое значение имеет значение AutomaticChallenge для true в промежуточном программном обеспечении UseCookieAuthentication? Мои результаты говорят мне, что это свойство не должно быть установлено в true, если у вас есть UseOpenIdConnectAuthentication в конвейере, это связано с тем, что промежуточное ПО OIDC по умолчанию имеет значение AutomaticChallenge равно true. https://github.com/aspnet/Announcements/issues/210 –
AutomaticChallenge просто определяет, должно ли промежуточное программное обеспечение действовать так, как будто ему было предложено запросить вызов, когда запрос несанкционирован. Немного бессмысленно иметь два из них, поскольку только один зарегистрированный ближе к несанкционированному результату (т. Е. Тот, который зарегистрирован позже). Это действительно зависит от вашего специфического использования, которое промежуточное ПО должно быть стандартным. * Обычно * OIDC является значением по умолчанию, так как мы хотим, чтобы пользователь перенаправлялся к провайдеру входа. – juunas