Ошибка при использовании проверки подлинности сертификата в WCF - PullRequest
2 голосов
/ 22 мая 2011

Я немного рассол!

При развертывании на одном из моих действующих серверов я получаю следующую ошибку, которую я не видел в предыдущих установках. Этот сервер находится за аппаратным балансировщиком нагрузки (BigIP) в нашей производственной среде, который, насколько я могу судить, является единственным отличием от предыдущих развертываний.

Невозможно запустить олицетворение, поскольку SecurityContext для роли UltimateReceiver из сообщения запроса с действием http://tempuri.org/ISomeService/GetStuff' не сопоставлено с удостоверением Windows.

Мы работаем под управлением Windows Server 2008 R2 (IIS 7.5), WCF 4.0 в пуле приложений в классическом режиме.

Ниже приведены некоторые фрагменты из моего конфигурационного файла. Могут быть некоторые опечатки, в которых я изменил имена, чтобы защитить виновных:

<service behaviorConfiguration="SomeServiceBehavior" name="SomeService">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingCert" contract="ISomeService" />
</service>

<wsHttpBinding>
    <binding name="wsHttpBindingCert">
        <security mode="Transport">
            <transport clientCredentialType="Certificate" />
        </security>
    </binding>
</wsHttpBinding>

<behavior name="SomeServiceBehavior">
    <serviceMetadata httpsGetEnabled="false" />
    <serviceDebug includeExceptionDetailInFaults="false" />
    <serviceCredentials>
        <clientCertificate>
          <authentication certificateValidationMode="ChainTrust" mapClientCertificateToWindowsAccount="True"/>
        </clientCertificate>
        <serviceCertificate findValue="somecert.domain.com" x509FindType="FindBySubjectName" storeName="My" storeLocation="LocalMachine" />
    </serviceCredentials>
</behavior>

Любая помощь будет принята с благодарностью.

...