我正在尝试设置自托管WCF服务,在端点中使用https地址公开,我希望只有某些客户端可以调用该服务。 客户端身份验证应由客户端提供的证书完成。 我在公司网络中,所有证书都是由相同的权限颁发的,所以我在服务器端使用certificateValidationMode =“PeerTrust”来识别授权客户。
绑定到端口的服务器证书已完成。 服务绑定配置为:
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
服务行为配置为:
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="LocalMachine"></authentication>
</clientCertificate>
</serviceCredentials>
客户端证书位于服务器端的Windows信任(受信任的人)中。
服务器证书位于客户端的Windows应用商店(受信任的人)中。
客户端和服务器之间的通信工作正常... SSL握手正常......
但是,当我从服务器端的Trusted People中删除客户端的证书时,客户端仍然可以调用该服务,我期待恰恰相反: “如果客户的证书不在服务器信任的人存储中,那么就不要接受电话。”
所有缓存已被删除,服务器重新启动...客户端应用程序仍然可以从之前授权的客户端工作站调用该服务。
任何建议?