Estoy trabajando para actualizar mi aplicación .NET Core 2.2 MVC a 3.0. En esta aplicación, me autentico en un controlador utilizando un token JWT. El token contiene varios reclamos, pero cuando intento acceder a ellos a través de User.Claimsla lista resultante siempre está vacío.
En mi Startup.cstengo la configuración de autenticación de esta manera:
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Code removed for clarity //
        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer = JwtManager.Issuer,
                    ValidAudience = "MyAudience",
                    IssuerSigningKey = "MySigningKey"
                };
            });
    }
}En Core 2.2 pude acceder a mis reclamos usando un código similar al siguiente:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class MyController : Controller
{
    [HttpGet("MyController/Action")]
    public ActionResult<Aggregate[]> GetAction()
    {
        var username = User.FindFirstValue("MyUsernameClaim");
        if (username == null)
        {
            return Forbid();
        }       
        // Do Stuff //
    }
}Sin embargo, cuando migro el mismo código a Core 3.0, me autentico correctamente, pero no recibo ningún reclamo por el Userobjeto. 

¿Me perdí un paso al convertir esto a 3.0? ¿ UserYa no se rellena automáticamente con información o algo así?
                    
                        c#
                                asp.net-mvc
                                .net-core
                                
                    
                    
                        Chris Stillwell
fuente
                
                fuente

User.Identity.IsAuthenticatedparece falso. Si es así, entonces esto puede tener que ver con AuthenticationScheme.UseEndpointsal final delConfiguremétodo y eso solucionó las cosas. Santa vaca, no puedo creer que algo tan simple como eso me haya costado una cantidad de tiempo embarazosa. Si quieres publicar eso como respuesta, lo aceptaré.Respuestas:
Parece que el usuario no está autenticado en absoluto.
Con asp.net core 3.0, el enrutamiento ha cambiado a enrutamiento de Endpoint. Puede optar por salir configurando
EnableEndpointRouting = false.Pero ese no parece ser el caso aquí. Eso significa que tendrá que incluir ciertos servicios cuando los use, como autenticación y autorización:
Y lo más importante, en ese orden . Como se documenta aquí: Migrate Startup.Configure .
fuente