services.AddAuthentication(
CertificateAuthenticationDefaults.AuthenticationScheme)
.AddCertificate(options =>
{
options.RevocationMode = X509RevocationMode.NoCheck;
options.AllowedCertificateTypes = CertificateTypes.All;
options.Events = new CertificateAuthenticationEvents
{
OnCertificateValidated = context =>
{
var validationService = context.HttpContext.RequestServices.GetService<CertificateValidationService>();
if (validationService.ValidateCertificate(context.ClientCertificate))
{
context.Success();
}
else
{
context.Fail("invalid cert");
}
return Task.CompletedTask;
},
OnAuthenticationFailed = context =>
{
context.Fail("invalid cert");
return Task.CompletedTask;
}
};
});
services.AddAuthentication();
Я использую аутентификацию сертификата клиента в моем проекте webApi (. net core 3.1), следуя этому документу
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/certauth?view=aspnetcore-3.1
Аутентификация сертификата работает нормально, единственная проблема, с которой я столкнулся - это недействительный сертификат "context.Fail ()" не завершает HTTP-запрос с 403. Это обработка порога и доступ к моему ApiController, защищенному [Authorize]
я также использую Soap базовую конечную точку, подобную этой
app.UseSoapEndpoint<IResponseService>("/", new BasicHttpBinding(), SoapSerializer.XmlSerializer);
, трудно понять, чего мне не хватает, может быть, что-то связано с новым BasicHttpBinding (), любая помощь будет оценена