У меня есть пользовательский X509CertificateValidator
, настроенный в службе WCF.Когда клиент подключается к сервису, а на сервере есть сертификат клиента как доверенный, вызывается мой пользовательский X509CertificateValidator
.В пользовательском валидаторе он будет проверять сертификат.
Однако, если клиент пытается аутентифицироваться с помощью сертификата, которому сервер не доверяет, мой пользовательский валидатор не вызывается, и доступ запрещается.Выполняется ли что-то еще до моего пользовательского валидатора, который проверяет сертификат?
- Я хочу, чтобы мой валидатор был вызван, даже если сервер не видел сертификат раньше.
- Если исключениегенерируется из моего пользовательского валидатора, или если мой валидатор не вызывается (предположительно, потому что сертификат клиента не является доверенным), клиент получает исключение, указывающее «HTTP-запрос был запрещен с помощью схемы аутентификации клиента« Anonymous ».»} System.Exception{System.ServiceModel.Security.MessageSecurityException} ". Но я не делаю анонимную аутентификацию. Почему это так?
web.config:
<binding name="certBasicHttpBindingConfig" allowCookies="true" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
<behavior name="ClientCertAuthBehavior">
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="Custom" customCertificateValidatorType="MyApp.WebServices.CertificateValidators.MyClientCertificateValidatorWithAuditing, MyApp.WebServices" />
</clientCertificate>
</serviceCredentials>
</behavior>