【问题标题】:WCF: Using Multiple Authentication Schemes on same endpointWCF:在同一端点上使用多个身份验证方案
【发布时间】:2015-01-14 10:38:59
【问题描述】:

我有一个作为 Windows 服务托管的 WCF 服务。我需要在服务端点上同时支持 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 质询。

我错过了什么吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    希望,这可以节省其他人的 4 天时间! :)

    【讨论】:

      【解决方案2】:

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

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

      http://NeedHelp:8001/NoAuth

      http://NeedHelp:8002/WindowsAuth

      http://NeedHelp:8003/CertAuth

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

      【讨论】:

      • 我分享的 MSDN 链接声称支持同一端点上的多个身份验证方案,但是,当我尝试时,我发现它不起作用。从技术上讲,我没有看到我发送的请求的 HTTP 401 挑战,它直接失败说请求错误。
      猜你喜欢
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 2017-10-03
      • 2021-07-19
      • 1970-01-01
      相关资源
      最近更新 更多