在 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 错误

如何设置没有ssl证书,就不能访问url?

WCF 客户端证书身份验证,服务“SslRequireCert”的 SSL 设置与 IIS“Ssl,SslNegotiateCert”的设置不匹配