単純なプロジェクトにAuth0を追加し、ミドルウェアの仕組みを理解しようとしています。ASP.NETコアでミドルウェアを実行する方法
私は私たちの例で正しく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}");
});
}
を持っている私のStartup.csで
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
OpenIdミドルウェアは実行されません。
app.UseOpenIdConnectAuthentication(options);
誰かがOpenIdミドルウェアが実行してはならないことをどのように知っていますか?我々はそれが常に実行されなければならないことを知っているが、場合には、我々はMVCを使用していないいくつかの静的なファイルを要求するところはどのよう
app.UseMvc(routeBuilder =>
{
routeBuilder.MapRoute("Default", "{controller=Home}/{action=Index}");
});
を持っている一番下に
。
「自動チャレンジ」プロパティに関するご意見はありますか? UseCookieAuthenticationミドルウェアでAutomaticChallengeをtrueに設定すると、どのような影響がありますか?私の所見は、パイプラインにUseOpenIdConnectAuthenticationがある場合、このプロパティをtrueに設定するべきではないことを示しています。これは、デフォルトでOIDCミドルウェアがAutomaticChallengeをtrueに設定しているためです。 https://github.com/aspnet/Announcements/issues/210 –
AutomaticChallengeは、要求が許可されていない場合にミドルウェアがチャレンジを発行するように直接要求されたかのように動作するかどうかを定義するだけです。不正な結果の実行に近いところに登録されたもの(すなわち、後に登録されたもの)のみが2つあるため、ちょっと意味がありません。実際には、ミドルウェアがデフォルトのものでなければならない特定の用途に依存します。 *通常、* OIDCは、ユーザがログインプロバイダにリダイレクトされるようにするためのデフォルトです。 – juunas