Casi todas las plantillas predeterminadas de dotnet tienen la línea app.UseAuthorization() sin app.UseAuthentication() en la configuración de canalización. Por ejemplo, en línea es una aplicación web creada en .net 6.0 ejecutando dotnet new webapp
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorPages(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run(); Lo que me intriga es que la autorización solo puede funcionar con autenticación, por lo que es obligatorio tener tanto app.UseAuthentication() como app.UseAuthorization() en la canalización. Además, el orden debe ser exacto, es decir app.UseAuthentication() debe ir seguido de app.UseAuthorization() .
Sin embargo, la canalización creada con plantillas predeterminadas solo tiene app.UseAuthorization() . ¿Alguien puede arrojar algo de luz sobre cuál podría ser el propósito de agregar solo app.UseAuthorization() a la canalización?
Este es un problema conocido: el propósito de agregar el middleware app.UseAuthorization() cuando se usa una plantilla predeterminada para crear una aplicación sin autenticación
A partir de 3.1, el enrutamiento de punto final reemplazó algunas construcciones de MVC, incluido el reemplazo de filtros de autenticación con AuthorizationMiddleware. Por lo tanto, necesitaría el middleware cada vez que esté usando MVC. Particularmente porque podría tener reglas de autorización que no requieran la autenticación de un usuario. Por ejemplo, RequireHttpsAttribute es un filtro de autenticación que requiere que un recurso solo esté permitido a través de una conexión TLS. Podría concebir otros requisitos de autenticación que se basen en las características de la solicitud HTTP en lugar del usuario que inició sesión.