Аутентификация сертификата WCF только с помощью службы (без сертификата клиента)

В настоящее время я использую netTcpBinding с проверкой подлинности Windows (программа, написанная на C#). Я буду отходить от аутентификации домена (добавляя новых клиентов, которые не будут в домене) и собираюсь настроить безопасность сертификата с аутентификацией по имени пользователя/паролю. Из того, что я читал до сих пор, мне не обязательно нужен сертификат клиента (что хорошо, я не смогу установить сертификат службы на каждом клиенте). Я думаю, что это похоже на переход на безопасный веб-сайт с сертификатом от доверенного ЦС; он признает, что ему доверяют, и не задает никаких вопросов и не доставляет никаких хлопот, он просто принимает сертификат!

На данный момент у меня настроен сертификат службы (у нас есть сертификат с подстановочными знаками от GoDaddy), однако я не могу понять, какие изменения я должен внести в файл(ы) app.config, чтобы не требовать сертификат клиента.

Сервис app.config:

<serviceBehaviors>
   <behavior name="">
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
     <serviceDebug includeExceptionDetailInFaults="false" />
     <serviceCredentials>
       <clientCertificate>
         <authentication certificateValidationMode="None" revocationMode="NoCheck" />
       </clientCertificate>
       <serviceCertificate findValue="*.xxxxxx.com"
                           storeLocation="LocalMachine"
                           storeName="TrustedPublisher"
                           x509FindType="FindBySubjectName" />
     </serviceCredentials>
   </behavior>
 </serviceBehaviors>

Клиентское приложение.config:

      <security mode="Transport">
        <transport clientCredentialType="Certificate" protectionLevel="EncryptAndSign" />
        <message clientCredentialType="UserName" />
      </security>

Я знаю, что мне придется настроить собственный валидатор для части имени пользователя, но я рассчитываю на один шаг за раз. Спасибо, и дайте мне знать, если вам нужна дополнительная информация.


person jmgardn2    schedule 30.04.2012    source источник


Ответы (1)


измените clientCredentialType на None. Также сделайте это в конфигурации сервера.

person Yaron Naveh    schedule 30.04.2012
comment
Работал отлично! Спасибо за помощь! - person jmgardn2; 14.05.2012