Мой сайт вызывает сервис (назовем его FooService), который требует очень сложного набора протоколов аутентификации.Все протоколы обернуты в пользовательское поведение ClientCredentials, которое объявлено следующим образом в коде:
class FooServiceCredentialsBehavior : ClientCredentials
{
public FooServiceCredentialsBehavior()
{
//Set up service certificate
var cert = CertStore.FindBySerialNumber(certSerialNumber);
base.ServiceCertificate.DefaultCertificate = cert;
}
}
Затем мы регистрируем расширение поведения:
<behaviorExtensions>
<add name="FooServiceCredentials" type="MyProject.Namespace.FooService, MyProject" />
</behaviorExtensions>
Сконфигурируем поведение endpointBehavior для его использования:
<endpointBehaviors>
<behavior name="FooServiceCredentialsBehavior">
<FooServiceCredentials />
</behavior>
И настройте конечную точку для работы с ней:
<endpoint address="https://fooservice.com/bar"
behaviorConfiguration="FooServiceCredentialsBehavior"
contract="FooService_PortType" />
Все вышеперечисленное прекрасно работает и работает для многих клиентов в течение многих лет..
Сейчас я внедряю этот материал в систему, которая не может получить доступ к серверам CRL, и в пользовательское поведение входит сертификат службы с включенной проверкой.Поэтому мне нужно отключить проверку.Однако Я не могу изменить класс FooServiceCredentials .Если бы я мог, я бы просто сделал это:
base.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
Но я не могу.
Я хотел бы знать, возможно ли добавить конфигурацию WCF, которая применяется к пользовательскойПоведение учетных данных, которые будут делать то же самое.Примерно так:
<endpointBehaviors>
<behavior name="FooServiceCredentialsBehavior">
<FooService>
<ServiceCertificate>
<authentication certificateValidationMode="None"/>
</ServiceCertificate>
</FooService>
</behavior>
Этот точный XML не работает (служба даже не запускается), но я надеюсь, что есть какой-то волшебный способ упорядочить эти тегиотключить проверку сертификата сервиса только из конфигурации.
Возможно ли это?Как?