Я работаю над обновлением моего приложения .NET Core 2.2 MVC до версии 3.0. В этом приложении я аутентифицируюсь на контроллере с помощью токена JWT. Маркер содержит несколько утверждений, но когда я пытаюсь получить к ним доступ через User.Claims
, результирующий список всегда пуст.
В моем Startup.cs
у меня настроена аутентификация следующим образом:
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"
};
});
}
}
В Core 2.2 я смог получить доступ к своим заявкам, используя код, подобный следующему:
[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 //
}
}
Однако, когда я переносил тот же код в Core 3.0, я аутентифицировался должным образом, но не получал претензий кUser
объект.
Я пропустил шаг в преобразовании этого в 3.0? Разве User
автоматически не заполняется информацией или чем-то еще?