使用Microsoft.AspNetCore.Authentication.JwtBearer包中提供的身份验证方案
可以通过以下步骤解决该问题:
在ASP.NET Core应用程序中添加Microsoft.AspNetCore.Authentication.JwtBearer NuGet包。
在Startup.cs的ConfigureServices方法中添加以下代码:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "your-issuer",
ValidAudience = "your-audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secure-key"))
};
});
在上面的代码中,我们定义了JWT Bearer身份验证方案,并且设置了其验证参数。请注意,您需要替换上面代码中的"user-issuer","your-audience"和"your-secure-key"为实际的值。
app.UseAuthentication();
app.UseAuthorization();
这些中间件将身份验证和授权添加到ASP.NET Core应用程序中。
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok("Authenticated User!");
}
}
这样,只有经过身份验证的用户才能访问此堆栈端点。
现在,ASP.NET Identity与JWT Bearer Token之间的兼容性问题已经得到解决,并且您可以在ASP.NET Core应用程序中使用它们。