У меня есть два JWT, которые включены во все вызовы моего сервиса. Первый (называемый UserJwt
) - это тот, который я хочу использовать для [Authorize]
для большинства сервисных операций. Второй (называемый ApplicationJwt
) содержит полезную информацию, которую я также хотел бы видеть в списке User.Identities
объектов ClaimsIdentity
.
Я настроил свой код так, чтобы всегда использовался UserJwt
ApplicationJwt
игнорируется:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
// Setup the JWT stuff here for the UserJwt
})
Это работает нормально, но я хочу, чтобы оба JWT были проанализированы и помещены в список User.Identities
.
Я попытался настроить свой код на следуйте этому ответу , (на вопрос: Используйте множественную аутентификацию на носителе JWT ), но это позволяет либо один (UserJwt
или ApplicationJwt
).
В худшем случае мне нужно, чтобы требовалось и то, и другое. Тем не менее, я предпочитаю требовать только UserJwt
, но включать ApplicationJwt
в качестве ClaimsIdentity
, если найден.
services.AddAuthentication()
.AddJwtBearer("UserJwt", options =>
{
// Setup the JWT stuff here for the UserJwt
})
.AddJwtBearer("ApplicationJwt", options =>
{
// Setup the JWT stuff here for the ApplicationJwt
});
services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("UserJwt", "ApplicationJwt")
.Build();
});
Как я могу получить оба JWT в списке User.Identities
Может ли UserJwt использоваться для [Authorize]
, но также разрешать [Authorize(Policy = "ApplicationJwt")]
для некоторых операций службы?