在 IIS 上将客户端证书选项设置为“已接受”时未调用 CustomCertificateValidator
Posted
技术标签:
【中文标题】在 IIS 上将客户端证书选项设置为“已接受”时未调用 CustomCertificateValidator【英文标题】:CustomCertificateValidator not called when client certificates option is set to "accepted" on IIS 【发布时间】:2021-05-05 12:44:00 【问题描述】:我有以下情况:
我正在寻找通过用户名/密码或证书在 wcf 休息服务中对用户进行身份验证的可能性。我有 2 个客户端,一个通过用户名/密码使用身份验证,另一个通过证书使用身份验证。 但是像这里描述的 CustomCertificateValidator 类https://docs.microsoft.com/en-us/dotnet/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator 仅在 IIS 中 SSL 下的客户端证书选项设置为“必需”时调用,但如果我想使用相同的服务,我需要在设置为“接受”时使用它。有人知道我这通常不起作用吗?我做错了什么?在我的 web.config 中,我设置了选项
问候,吉米
【问题讨论】:
【参考方案1】:关于CustomCertificateValidator,可以下载官方文档提供的wcf demo。下载后就是WF_WCF_Samples文件夹。转到 WCF>可扩展性>安全>X509CertificateValidator。 X509CertificateValidator 示例展示了如何使用自定义 X509CertificateValidator 来验证客户端凭据。官方文档还提供detailed instructions供demo使用。
【讨论】:
我的问题不是实现问题,它一定是配置问题,因为当我在 IIS 中将客户端证书设置为“必需”时,它可以工作并调用自定义证书验证器,但我需要它“公认”。示例中的设置以上是关于在 IIS 上将客户端证书选项设置为“已接受”时未调用 CustomCertificateValidator的主要内容,如果未能解决你的问题,请参考以下文章
如何设置IIS以验证客户端证书并将其作为http标头传递给后端?
IIS 是不是进行 SSL 证书检查,还是我必须对其进行验证?
如何在 IIS 7、Windows 7 上将 ASP.NET 4.0 添加为应用程序池
“此服务的安全设置需要 Windows 身份验证”客户端证书 WCF 项目的 IIS 错误
WCF 客户端证书身份验证,服务“SslRequireCert”的 SSL 设置与 IIS“Ssl,SslNegotiateCert”的设置不匹配