В настоящее время я использую 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>
Я знаю, что мне придется настроить собственный валидатор для части имени пользователя, но я рассчитываю на один шаг за раз. Спасибо, и дайте мне знать, если вам нужна дополнительная информация.