Estou trabalhando para atualizar meu aplicativo .NET Core 2.2 MVC para 3.0. Nesta aplicação, estou me autenticando em um controlador usando um token JWT. O token contém várias declarações, mas quando tento acessá-las através User.Claimsda lista resultante, sempre está vazio.
No meu Startup.cseu tenho a configuração de autenticação da seguinte forma:
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"
};
});
}
}
No Core 2.2, consegui acessar minhas reivindicações usando um código semelhante ao seguinte:
[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 //
}
}
No entanto, quando migro o mesmo código para o Core 3.0, faço a autenticação corretamente, mas não recebo reivindicações para o Userobjeto.

Perdi um passo na conversão para 3.0? Não Useré mais preenchido automaticamente com informações ou algo assim?
UseEndpointspara o final do Configuremétodo e isso consertou as coisas. Vaca sagrada, eu não posso acreditar que algo tão simples assim tenha me custado uma quantidade embaraçosa de tempo. Se você quiser postar isso como resposta, eu aceito.
User.Identity.IsAuthenticatedparece falso. Nesse caso, isso pode ter a ver com o AuthenticationScheme.