【发布时间】:2022-02-16 21:51:03
【问题描述】:
我有一个 JWT Bearer 身份验证的配置,但有时我不想使用 JWT 令牌,而是想在请求标头中使用 API KEY 并在中间件中检查此密钥。
但在这种情况下,当我不将不记名令牌放在标头中时,我总是以未经授权的响应代码进行响应。
如何禁用不记名令牌检查?
我的配置:
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
// options.RequireHttpsMetadata = false;
// options.SaveToken = true;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidateAudience = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtSettings.Secret)),
ValidIssuer = jwtSettings.Issuer,
ValidAudiences = jwtSettings.Audiences,
ClockSkew = TimeSpan.Zero // remove delay of token when expire
};
});
【问题讨论】:
-
Hmm.. 在我看来,定义它的“正确”方法是在 JWT Bearer 之外定义一个新的身份验证方案。然后,您将在您的 JWT Bearer 方案上添加一个转发默认选择器,如果 API 密钥标头等存在,则将请求的方案更改为您的 API 密钥身份验证方案。
标签: asp.net asp.net-core authentication jwt