我目前正在使用带有 Windows 身份验证的 netTcpBinding(用 C# 编写的程序)。我将远离域身份验证(添加不会在域上的新客户端),并希望通过用户名/通过身份验证来设置证书安全性。从目前为止我所阅读的内容来看,我不一定需要客户端证书(这很好;我将无法在每个客户端上安装服务的证书)。我的想法与使用来自受信任 CA 的证书导航到安全网站的思路相同。它承认它是受信任的,不会提出任何问题或麻烦,它只是接受证书!
到目前为止,我已经设置了服务证书(我们有来自 GoDaddy 的通配符证书),但是我无法弄清楚我必须对 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>
客户端 app.config:
<security mode="Transport">
<transport clientCredentialType="Certificate" protectionLevel="EncryptAndSign" />
<message clientCredentialType="UserName" />
</security>
我知道我必须为用户名部分设置一个自定义验证器,但我想一步一步来。谢谢,如果您需要更多详细信息,请告诉我。