간단한 프로젝트에 Auth0을 추가하고 미들웨어의 작동 방식을 이해하려고합니다. 나는 우리의 예에서 제대로 ASP.NET 핵심 미들웨어의 개념을 이해한다면이 쿠키 존재 및 인증이 수행 할 수있는 경우 내 Startup.cs에서ASP.NET 코어에서 미들웨어를 실행하는 방법
나는,이 코드
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}");
});
}
이
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"속성과 관련된 의견이 있으십니까? UseCookieAuthentication 미들웨어에서 AutomaticChallenge를 true로 설정하면 어떤 영향이 있습니까? 필자가 발견 한 바에 따르면 파이프 라인에 UseOpenIdConnectAuthentication이 있으면이 속성을 true로 설정해서는 안됩니다. 이는 기본적으로 OIDC 미들웨어가 AutomaticChallenge를 true로 설정했기 때문입니다. https://github.com/aspnet/Announcements/issues/210 –
AutomaticChallenge는 미들웨어가 요청이 승인되지 않은 경우 직접 챌린지를 요청한 것처럼 행동해야 하는지를 정의합니다. 인증되지 않은 결과 실행에 더 가깝게 등록 된 것 (즉, 나중에 등록 된 것) 만이 2 개가있는 것이 조금 비쌉니다. 그것은 실제로 미들웨어가 기본 설정이어야하는 특정 용도에 따라 다릅니다. * 일반적으로 * OIDC는 사용자가 로그인 공급자로 리디렉션되도록하기 때문에 기본값입니다. – juunas