【问题标题】:Kerberos authentication on a self-hosted WCF Data Service自托管 WCF 数据服务上的 Kerberos 身份验证
【发布时间】:2013-08-13 09:24:55
【问题描述】:

我们有一个 WCF 数据服务,它在 Windows 服务(不使用 IIS)下自托管,我们目前正在努力使用 SSL 和 Windows 身份验证来保护它。

在使用 netsh 和服务器证书一段时间后,我们现在使用 SSL 保护了服务,并且我们还在 app.config 中的 webHttpBinding 上启用了 Windows 身份验证 - 但是我们现在在尝试进行身份验证时看到了一些奇怪的行为某些用户 - 有些用户可以正常登录,有些用户的凭据被拒绝,并提示 HTTP 400 错误。

经过一些测试和挖掘,我们可能会遇到this problem,其中 Kerberos 使用的身份验证标头可能大于某些用户允许的最大标头长度(我认为是 16k) - 并且尽管 IIS 有一个记录在案的解决方法,但似乎没有可用于自托管服务或我们的 app.config 的等效设置 - 除非我遗漏了什么?我们尝试将 maxReceivedMessageSize 和 maxBufferSize 字段设置为它们的最大值,看看这是否会产生任何影响,但显然不会。

绑定配置:

  <webHttpBinding>
    <binding name="DataServicesBinding"
             maxReceivedMessageSize="2147483647"
             maxBufferSize="2147483647">
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </webHttpBinding>

我们已经通过将绑定中的 clientCredentialType 设置为使用 Ntlm 来临时解决此问题,但出于显而易见的原因,我们希望尽可能让 Kerberos 正常工作。

【问题讨论】:

    标签: wcf ssl wcf-data-services kerberos self-hosting


    【解决方案1】:

    因此,事实证明,这是由于我们的服务未配置 SPN(服务主体名称)造成的。这可以使用带有 Windows Server 的 setspn 工具来完成。 (有关更多信息,请参阅this MSDN article。)

    应用 SPN 后,Kerberos 身份验证开始按预期工作。

    【讨论】:

      【解决方案2】:

      使用wireshark 查看客户端发送的内容。确保此输入正确,然后返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-13
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多