如何禁用WCF数据服务的身份验证方案

时间:2010-03-30 00:18:59

标签: wcf wcf-data-services

当我将WCF数据服务部署到生产主机时,我开始收到以下错误(或类似取决于哪些身份验证方案处于活动状态):

  

IIS指定的身份验证方案   '基本,匿名',但具有约束力   仅支持准确的规范   一种认证方案。有效   身份验证方案是Digest,   谈判,NTLM,基本或匿名。   更改IIS设置,以便只有一个   使用单一认证方案。

显然,WCF数据服务(一般是WCF?)无法处理多次激活身份验证方案。

好的,所以我知道我可以通过IIS控制面板在Web应用程序上禁用一对一的身份验证方案....通过支持请求!!

有没有办法在web.config中的每个服务级别指定一个身份验证方案?

我认为这可能比对<system.serviceModel>进行更改更直接但是......结果是 WCF数据服务未在Web配置中配置 即可。如果你查看DataService<>类,它没有实现[ServiceContract]因此你不能在<service><endpoint>中引用它...我认为通过XML更改其配置需要它。

P.S。我们的主机使用的是II6,但这两种解决方案都适用于IIS6和IIS7赞赏。

1 个答案:

答案 0 :(得分:16)

首先,可以在Web配置文件中配置数据服务。 DataService使用的合同称为System.Data.Services.IRequestHandler。

您可以在Web配置文件中执行以下操作来配置它。

在system.servicemodel元素的Service标记上添加

<service name="{you service type name including the namespace i.e. myapplication.myservice}">
    <endpoint address="" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
    </endpoint>
</service>

在那里,您可以使用标准WCF配置元素开始配置所有方式。

其次,要为IIS中的特定服务启用或禁用身份验证方法,您可以执行以下操作:

在IIS的管理单元中右键单击您的服务文件(即yourservice.svc),然后单击属性。 进入属性后,转到文件安全性选项卡,然后选择身份验证和访问控制组框中的编辑按钮。之后就像在IIS中设置目录安全性一样。

根据任何故障排除的最后一个建议,重要的是在使用xml配置配置时启用wcf诊断,在WCF中编写,数据服务日志记录是根据wcf丰富且非常丰富的信息。

您可以在WCF Administration and Diagnostics

上找到更多相关信息

我希望我能帮助你解决问题

让我知道情况如何。

此致

Daniel Portella

更新:

施耐德先生

在下面的xml中指定身份验证方案

以Windows身份验证为例

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="MyBindingName" >
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="{you service type name including the namespace i.e. myapplication.myservice}">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler">
        </endpoint>
      </service>
    </services>
  </system.serviceModel>
</configuration>

对于其他类型的身份验证,请查看MSDN库以获取示例

Common Scenarios for security