Мы используем 2 схемы аутентификации (Bearer, MTLS) в приложении ASP.NET Core.
Когда клиент игнорирует отправку сертификата И токена-носителя клиента, ответом является 401, что является ожидаемым.
Когда клиент отправляет только сертификат клиента ИЛИ только токен на предъявителя, аутентификация проходит, и запрос завершается неудачно при авторизации с кодом состояния 403.
Есть ли способ сделать все методы аутентификации обязательными и вернуть код состояния 401 при отсутствии сертификата клиента или токена на предъявителя?
// Authentication and Authorization setup:
IServiceCollection services = . . .
. . .
services.AddAuthentication(MtlsAuthenticationHandler.AuthenticationScheme)
.AddMtlsAuthentication()
.AddJwtBearer(options =>
{
. . .
});
services.AddAuthorization(options =>
{
options.AddPolicy("RequireMtlsAndBearer",
builder => builder.AddAuthenticationSchemes(MtlsAuthenticationHandler.AuthenticationScheme, JwtBearerDefaults.AuthenticationScheme)
.AddRequirements(. . .)
.AddRequirements(. . .));
});
// Controller:
[HttpGet("v1/endpoint")]
[Authorize("RequireMtlsAndBearer")]
public async Task<IActionResult> Get()
{
. . .
}