Как две 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
(единственное отличие состоит в том, что на этот раз я получаю только половину требований).Так как я могу получить «несанкционированный», если хотя бы один токен недействителен?
PS Пожалуйста, не судите сильно, я довольно новичок в этой области.Спасибо)