asp.net core 3 permite configurar FallbackPolicy para que los puntos finales sean seguros de forma predeterminada:
services.AddAuthorization(options => { options.FallbackPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); });Es una gran característica, pero también tengo un punto final de HealthCheck , que requiere autorización ahora.
services.AddHealthChecks(); [...] app.UseEndpoints(endpoints => { endpoints.MapHealthChecks("/health"); endpoints.MapControllers(); });¿Cómo permito el acceso anónimo al punto final de HealthCheck (SIN autenticación o autorización)?
Me encontré exactamente con el mismo problema, así que espero que esto ayude como una forma más satisfactoria de lograr:
app.UseEndpoints(endpoints => { endpoints.MapDefaultControllerRoute().RequireAuthorization(); endpoints.MapHealthChecks("/health").WithMetadata(new AllowAnonymousAttribute()); });Puede invocar HealthCheckMiddleware antes de usar AuthenticationMiddleware:
app.Map("/health",appbuilder =>{ appbuilder.UseMiddleware<HealthCheckMiddleware>(); }); // or // app.UseHealthChecks("/health"); app.UseRouting(); // make sure the authentication middleware runs after the health check middleware app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });