要验证 Auth0 的 JWT 令牌,你可以使用 ASP.NET Core 中的 JwtBearer 认证中间件。下面是一个示例代码:
首先,确保你已经安装了 Microsoft.AspNetCore.Authentication.JwtBearer
包。
在 Startup.cs
文件中的 ConfigureServices
方法中添加以下代码:
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
public void ConfigureServices(IServiceCollection services)
{
// 添加 JWT 认证服务
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = "https://your-auth0-domain.auth0.com/";
options.Audience = "your-audience";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("your-signing-key")),
ValidateIssuer = true,
ValidIssuer = "https://your-auth0-domain.auth0.com/",
ValidateAudience = true,
ValidAudience = "your-audience"
};
});
// 添加其他服务
services.AddControllers();
}
在上面的代码中,你需要将 https://your-auth0-domain.auth0.com/
替换为你的 Auth0 域名,your-audience
替换为你的受众(即你的 API 的标识符),以及 your-signing-key
替换为你的签名密钥。
Configure
方法中添加以下代码:public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 添加身份验证中间件
app.UseAuthentication();
// 添加其他中间件
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
上面的代码确保 JWT 认证中间件在其他中间件之前运行。
[Authorize]
属性来标记需要身份验证的操作,例如:using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class MyController : ControllerBase
{
[HttpGet]
[Authorize]
public IActionResult Get()
{
// 执行需要身份验证的操作
return Ok("Authenticated");
}
}
在上面的代码中,[Authorize]
属性确保只有提供有效的 JWT 令牌的请求才能访问 Get
方法。
这样,你就可以在 ASP.NET Core 中验证 Auth0 的 JWT 令牌了。请确保替换示例代码中的相应值以适应你的应用程序和 Auth0 配置。