WCF:在同一端点上使用多个身份验证方案

时间:2015-01-14 10:39:00

标签: c# .net web-services wcf wcf-security

我有一个WCF服务,我作为Windows服务托管。我需要在服务端点上支持Windows和NTLM身份验证。

我遇到了一个MSDN页面,它解释了与.NET 4.5完全相同的内容,这里是链接:

http://msdn.microsoft.com/en-us/library/hh556235(v=vs.110).aspx

通过这种方式,我在代码中配置了我的服务端点,如上面链接的自托管服务部分所述。但是,当我测试时,这并不起作用。我捕获了流量并观察到该服务没有发送HTTP 401质询,而是直接因HTTP 400 Bad Request错误而失败。我认为应该是发送给客户端的HTTP 401质询。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

有可能,我可以在经过4天的努力后使其工作,错误HTTP错误请求并不表示问题。但是,当我使用HttpGetEnabled添加服务元数据行为时,它起作用了。

另外,请确保在定义ServiceAuthenticationBehavior时,将ClientCredentialType标记为InheritedFromHost。这将确保应用ServiceAuthenticationBahavior指示的身份验证方案。

希望,这会拯救别人的4天! :)

答案 1 :(得分:0)

您可以在同一Windows服务中运行多个身份验证方案,但不能在同一个端点运行 - 这是不可能的。

例如,我可以创建和IIS或自托管一个名为NeedHelp的Web服务,它使用三种身份验证,这是我的端点:

http:/ / NeedHelp:8001 / NoAuth

http:/ / NeedHelp:8002 / WindowsAuth

http:/ / NeedHelp:8003 / CertAuth

所有这些都可以在同一个Web服务下运行,所有这些服务都由IIS托管或自托管为Windows服务。但它们都需要单独的端口地址。