我想在我的WCF服务中检查客户端证书.
我的目标是只允许具有特定指纹证书的客户能够与我的服务进行通信.
我的WCF服务托管在IIS中,我使用basicHttpBinding和安全模式="transport",凭据类型为"Certificate".IIS需要客户端证书才能与服务进行通信.
在此先感谢您的帮助.
更新:我的配置:
行为:
服务配置:
为了测试目的,我以这种方式实现了验证器:
public class CustomCertificateValidator : X509CertificateValidator { public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { throw new SecurityTokenValidationException("TEST Certificate was not issued by a trusted issuer TEST"); } }
这不起作用.我可以使用任何有效证书连接到我的服务.
您可以创建一个派生自X509CertificateValidator的类,并使用它来对传入证书进行自定义验证.如果由于某种原因想要验证失败,则抛出SecurityTokenValidationException.
将certificateValidationMode设置为Custom,并在配置文件的clientCertificate服务行为部分中指定验证器.
如何:创建使用自定义证书验证程序的服务
我认为无论如何都没有"自定义证书验证"和"运输安全".它只适用于'Message Security'.