Asp.Net Core Identity 在验证 JWT 令牌时会使用以下信息来授权一个令牌有效:
以下是一个常见的代码示例,以说明如何在 Asp.Net Core Identity 中验证令牌:
// 在 ASP.NET Core Startup.cs 文件中配置 JWT 认证
public void ConfigureServices(IServiceCollection services)
{
// 配置身份验证方案
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
// 配置密钥和颁发者
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
}
// 在 API 控制器中验证令牌
[Authorize]
[ApiController]
[Route("[controller]")]
public class MyApiController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
// 从请求头中获取令牌
var token = HttpContext.Request.Headers["Authorization"].ToString().Substring("Bearer ".Length);
// 使用 Asp.Net Core Identity 中的 JwtSecurityTokenHandler 类来验证令牌
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(Configuration["Jwt:Key"]);
try
{
tokenHandler.ValidateToken(token, new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = Configuration["Jwt:Audience"],
ClockSkew = TimeSpan.Zero