Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IIS的同一VD中为同一WCF服务实现用户名密码和客户端证书身份验证_Wcf_Wcf Binding_Wcf Security - Fatal编程技术网

在IIS的同一VD中为同一WCF服务实现用户名密码和客户端证书身份验证

在IIS的同一VD中为同一WCF服务实现用户名密码和客户端证书身份验证,wcf,wcf-binding,wcf-security,Wcf,Wcf Binding,Wcf Security,我有一个公开的WCF服务。在安全方面,我需要使用客户端证书和用户名密码对其进行身份验证 很少有客户端使用客户端证书进行身份验证,其他客户端使用用户名密码进行身份验证 当我将服务配置为使用客户端证书时,需要为SSL要求配置IIS-->SSL设置。这样,没有客户端证书的其他客户端就无法访问该服务 如何解决这个问题?在IIS中托管服务时,这是不可能的。具有所需客户端证书的SSL配置适用于配置它的整个虚拟目录/应用程序以及该目录中托管的所有内容。因此,每次必须在不同的虚拟目录或具有不同配置的web应用程

我有一个公开的WCF服务。在安全方面,我需要使用客户端证书和用户名密码对其进行身份验证

很少有客户端使用客户端证书进行身份验证,其他客户端使用用户名密码进行身份验证

当我将服务配置为使用客户端证书时,需要为SSL要求配置IIS-->SSL设置。这样,没有客户端证书的其他客户端就无法访问该服务


如何解决这个问题?

在IIS中托管服务时,这是不可能的。具有所需客户端证书的SSL配置适用于配置它的整个虚拟目录/应用程序以及该目录中托管的所有内容。因此,每次必须在不同的虚拟目录或具有不同配置的web应用程序中托管服务两次


或者,您可以在windows服务中自行托管该服务,并为每个端点指定单独的配置。

我想我确实找到了解决上述问题的方法

您只需要将服务放在虚拟目录下的不同文件夹中

在IIS中拥有上述服务后,只需选择进行客户端证书身份验证的文件夹并设置文件夹SSL设置

注意:在IIS中,可以使用web.config或在“IIS功能”视图中为每个文件夹设置设置


这样,您就可以实现多重身份验证。

请在下面找到我的问题答案。这通常是我写的:)