web-dev-qa-db-ja.com

ASP.NET Core 3で認証フォールバックポリシーが設定されている場合、ヘルスチェックエンドポイントへの匿名アクセスを許可する

asp.netコア3では、デフォルトでエンドポイントを保護するためにFallbackPolicyを設定できます。

            services.AddAuthorization(options =>
            {
                options.FallbackPolicy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser()
                    .Build();
            });

これは素晴らしい機能ですが、HealthCheckエンドポイントもあるので、今は承認が必要です。

            services.AddHealthChecks();
            [...]
            app.UseEndpoints(endpoints => {
                endpoints.MapHealthChecks("/health");
                endpoints.MapControllers();
            });

HealthCheckエンドポイントへの匿名アクセスを許可するにはどうすればよいですか(認証または承認なし)?

5
wxt

私はまったく同じ問題に遭遇したので、これが達成するより満足のいく方法として役立つことを願っています:

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapDefaultControllerRoute().RequireAuthorization();

            endpoints.MapHealthChecks("/health").WithMetadata(new AllowAnonymousAttribute());

        });
2
Michael Gregson

[AllowAnonymous]特定のアクションの属性。

  [AllowAnonymous]
  [HttpGet]
  public ActionResult GetHealth() {
    // ...
  }
1