两个JWT
身份验证方案如何同时运行?如果其中之一无效,则应将整个请求视为未授权。否则,应将所有声明合并到单个ClaimsIdentity
中。我在启动时有以下配置:
services.AddAuthentication(opt =>
{
opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(opt =>
{
Configuration.GetSection(nameof(JwtBearerOptions)).Bind(opt);
opt.Validate();
})
.AddJwtBearer("CustomBearer", opt =>
{
Configuration.GetSection("CustomJwtBearerOptions").Bind(opt);
opt.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(key);
opt.Events = new JwtBearerEvents
{
OnMessageReceived = ctx =>
{
if (ctx.Request.Headers.TryGetValue("CustomAuthorization", out StringValues headerValue))
{
ctx.Token = headerValue.ToString().Substring("Bearer ".Length).Trim();
}
return Task.CompletedTask;
}
};
opt.Validate();
});
如果我运行请求并且两个令牌都有效,那么我将得到合并的索赔清单(按预期)。但是,如果一个令牌是valid
,而另一个令牌是invalid
,我仍然会得到200 ok
(唯一的区别是这次我只获得了一半的权利要求)。
那么,如果至少一个令牌无效,如何获得“未授权”?
P.S。拜托,不要刻苦判断,我是那个领域的新手。谢谢)