CertificateAuthenticationFailedContext не завершает HTTP-запрос - PullRequest
0 голосов
/ 08 апреля 2020
  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 (), любая помощь будет оценена

...