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
Wcf IIS管理器中的身份验证设置与web.config和system.serviceModel_Wcf_Authentication_.net 3.5_Iis 6_Web Config - Fatal编程技术网

Wcf IIS管理器中的身份验证设置与web.config和system.serviceModel

Wcf IIS管理器中的身份验证设置与web.config和system.serviceModel,wcf,authentication,.net-3.5,iis-6,web-config,Wcf,Authentication,.net 3.5,Iis 6,Web Config,我有一个WCF web服务,我想使用基本身份验证。我在身份验证选项中迷失了方向: 在IIS 6管理器中,我可以进入网站的属性并设置身份验证选项 在网站的web.config文件中,在system.web下,有一个标记 在网站的web.config文件中,在system.serviceModel下,我可以配置: <wsHttpBinding> <binding name="MyBinding"> <security mode="Transport"> &

我有一个WCF web服务,我想使用基本身份验证。我在身份验证选项中迷失了方向:

  • 在IIS 6管理器中,我可以进入网站的属性并设置身份验证选项
  • 在网站的web.config文件中,在
    system.web
    下,有一个
    标记
  • 在网站的web.config文件中,在
    system.serviceModel
    下,我可以配置:

    <wsHttpBinding> <binding name="MyBinding"> <security mode="Transport"> <transport clientCredentialType="Basic"/> </security> </binding> </wsHttpBinding>
这三者之间有什么区别?如何配置每一个


一些上下文:我有一个简单的web站点项目,其中包含一个
.svc
web服务,我希望它通过SSL使用基本身份验证。(另外,我希望它不要使用Windows帐户,但这可能是另一个问题。)

前两个是相关的,如果它们不匹配,您的服务将无法激活。如果您选择Windows身份验证,显然会假设您将绑定到Windows域或本地计算机

由于您将要进行SSL基本身份验证,因此将此设置为“无”,然后配置传输安全性

我不确定您是否仍在计划如何进行安全性,但我建议您考虑使用消息安全性与传输(个人对消息安全性的偏见)


前两个是关于访问IIS6中的ASP.NET虚拟目录或虚拟应用程序的,基本上与WCF无关(WCF实际上既不是ASP.NET的一部分,也不依赖于ASP.NET)。这些设置控制进入IIS6 web服务器的HTTP请求在身份验证方面的处理方式。这主要控制来自internet的匿名呼叫者是否可以在不进行身份验证的情况下直接呼入,或者是否需要输入用户名/密码,或者是否只允许在此域中具有有效Windows标识的呼叫者进入

WCF服务对此感兴趣的唯一原因是,当您在IIS中托管WCF服务时(只是众多选项中的一个),您需要在虚拟目录中驻留一个
(myservice).svc
文件。当然,对该SVC文件的访问由IIS6/ASP.NET的身份验证设置控制


部分中的安全模式是WCF服务如何与其客户端通信的安全相关定义。Mode=传输意味着,您正在保护实际的传输层(通常使用SSL),而不是单独保护每条消息。此设置在企业防火墙后面有所有客户端的Intranet场景中效果非常好,但在Internet场景中效果不太好,因为您无法通过一系列到服务器的中间跃点来控制从客户端(地球上任何地方)到服务器的整个链-您就是不能。在这种情况下,您必须使用Mode=Message,它基本上对通过电线传输的每条消息进行加密和签名,在从起点到服务器的过程中通过任意数量的路由器和中继进行工作。

这为我澄清了一些问题。不过,我不确定你的最后一点:我认为Mode=Transport意味着SSL,而SSL在互联网的路由器上可以正常工作。无论如何,我最终关闭了IIS和WCF身份验证,并用于实现自定义基本身份验证。