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エンドポイントへの匿名アクセスを許可するにはどうすればよいですか(認証または承認なし)?
私はまったく同じ問題に遭遇したので、これが達成するより満足のいく方法として役立つことを願っています:
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute().RequireAuthorization();
endpoints.MapHealthChecks("/health").WithMetadata(new AllowAnonymousAttribute());
});
[AllowAnonymous]
特定のアクションの属性。
[AllowAnonymous]
[HttpGet]
public ActionResult GetHealth() {
// ...
}