У меня есть простая служба WCF, настроенная для защиты транспорта и учетных данных клиента сертификата.
Я подключаю к нему настраиваемый валидатор сертификата и выдает FaultException.
Мой пробкемн - это сообщение о том, что сообщение не доходит до клиента: я получаю только исключение MessageSecurityException без каких-либо ошибок ...
Если я включаю свой сервис в net.tcp (самостоятельно), я получаю сообщение CommunicationExcetion, также без ошибок.
Вот часть моего web.config:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="wsHttpEndpointBinding" messageEncoding="Text">
<reliableSession enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="SecureService.Server.ChunkStreamService">
<endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding" behaviorConfiguration="myBehavior" name="wsHttpEndPoint" contract="SecureService.Server.IChunkStreamService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication customCertificateValidatorType="SecureService.Server.CPSValidator, SecureService.Server" certificateValidationMode="Custom" />
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
и мой валидатор:
public class CPSValidator : System.IdentityModel.Selectors.X509CertificateValidator
{
public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)
{
throw new FaultException("Certificate is not from a trusted issuer");
}
}
Есть идеи?
Заранее спасибо за любую помощь!