如何禁用 WCF 数据服务的身份验证方案
Posted
技术标签:
【中文标题】如何禁用 WCF 数据服务的身份验证方案【英文标题】:How to disable authentication schemes for WCF Data Services 【发布时间】:2011-02-02 06:46:55 【问题描述】:当我将 WCF 数据服务部署到生产托管时,我开始收到以下错误(或类似错误,具体取决于激活的身份验证方案):
IIS 指定的身份验证方案 “基本,匿名”,但具有约束力 只支持精确的规范 一种身份验证方案。有效的 身份验证方案是摘要, 协商、NTLM、基本或匿名。 更改 IIS 设置,以便只有一个 使用单一身份验证方案。
显然 WCF 数据服务(通常是 WCF?)无法处理激活多个身份验证方案。
好的,所以我知道我可以通过 IIS 控制面板在 Web 应用程序上禁用唯一身份验证方案 .... 通过支持请求!!
有没有办法在 web.config 中的每个服务级别上指定单个身份验证方案?
我认为这可能与更改 <system.serviceModel>
一样简单,但是...事实证明 WCF 数据服务并未在 Web 配置中进行自我配置强>。如果您查看DataService<>
类,它没有实现[ServiceContract]
,因此您不能在<service><endpoint>
中引用它...我认为通过XML 更改其配置需要它。
附:我们的主机使用的是 II6,但 IIS6 和 IIS7 的两种解决方案都值得赞赏。
【问题讨论】:
【参考方案1】:首先可以在网络配置文件中配置数据服务。 DataService 使用的契约称为 System.Data.Services.IRequestHandler。
这是您可以在 web 配置文件中进行的配置。
在 system.servicemodel 元素的服务标签上添加
<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上找到更多相关信息
希望能帮到你
让我知道事情的进展。
问候
丹尼尔·波特拉
更新:
你好施耐德
在下面读取的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
【讨论】:
谢谢。端点配置很有用。现在我有了,我将寻找一种在 xml 中指定身份验证方案的方法... 在上面添加更新希望解释如何为服务设置身份验证 如果可以的话,我会给你赏金..!非常感谢! 感谢 Rashack 对答案进行投票就足以确保其他人可以看到它的帮助,并让社区相信问题已得到解决以上是关于如何禁用 WCF 数据服务的身份验证方案的主要内容,如果未能解决你的问题,请参考以下文章