【问题标题】:Integrated Windows Authentication in WCF on IIS 6.0IIS 6.0 上 WCF 中的集成 Windows 身份验证
【发布时间】:2009-05-27 06:44:50
【问题描述】:

我需要为托管在 IIS 6.0 (Windows Server 2003) 上的 WCF 服务实现集成 Windows 身份验证没有证书。要求是在特定 Active Directory 组中的用户点击服务时简单地验证他们的 Windows 凭据。使用的框架版本是 3.0。

WCF 配置:

以下是服务的 web.config 文件的“绑定”部分:

<bindings>
<basicHttpBinding>
<binding name="Binding1">
    <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Windows" />
    </security>
</binding>
</basicHttpBinding>

</bindings>

没有“mex”端点。

即使虚拟目录以及 .svc 文件的安全设置在 IIS 中选择了“集成 Windows 身份验证”,当导航到 .svc 文件时仍会出现以下错误:

此服务的安全设置需要 Windows 身份验证,但托管此服务的 IIS 应用程序未启用它。

以下是服务托管的其他细节:

  • 服务在单独的应用程序池下运行
  • 应用程序池在应用程序池的“身份”选项卡下配置的单独特权帐户下运行。

我已经看到了许多其他类似的问题,但没有一个修复程序真正解决了这个问题。您的意见将不胜感激。

【问题讨论】:

    标签: wcf iis authentication


    【解决方案1】:

    经过一番挖掘,我终于发现如果将“Windows”更改为“Ntlm”,这将有效。 我永远无法让它与 Kerberos 一起使用,但您提到无论如何都不想使用证书。

    如果您仍然遇到问题,您可以在 NTAuthenticationProviders 下查看相关站点的 IIS 元数据库中的内容。如果您只想使用 Ntlm,您需要将该字符串设置为“NTLM”,并且您需要确保它在您的传输客户端CredentialType 中显示“Ntlm”而不是“Windows”,否则您会得到异常您在原始帖子中引用。

    相反,如果有人遇到此错误并且想要使用 Kerberos 证书(如果可用),他们应该检查元数据库 NTAuthenticationProviders 是否显示“协商,NTLM”。这是默认设置,但在我今天尝试在其上运行 WCF 服务的 VM 上对我来说神秘不同(最终将我带到了这个线程!)

    【讨论】:

      【解决方案2】:

      根据我使用 WCF 的经验,正确配置所有内容非常困难 - 需要反复试验!然而,我确实发现以下链接非常有用,因为它提供了针对不同场景的清单:CodePlex - WCF Security Guide 和主要的 WCF 部分:WCF Security

      我检查了我的应用场景的清单,问题得到了解决。希望对您有所帮助!

      【讨论】:

        【解决方案3】:

        NTLM 的工作方式与 Windows 不同。如果你想要真正的 Windows,只需删除上面写着的那段代码

        bindingConfiguration="your_basicHttpBinding_binding_name"
        

        从端点。应该可以的。

        【讨论】:

          【解决方案4】:

          确保您确实取消选中“启用匿名访问”。

          如果这些都适用于您的情况,也许您可​​以尝试强制 NTML 身份验证

          • 您可以通过配置工作程序在虚拟目录级别隔离网站 处理身份不同 域帐户。

          • 您正在使用集成 Windows 身份验证,未使用 WINS 或运行 IIS 的服务器的 DNS 名称,并且您希望使用本地用户帐户或 LocalService 帐户作为工作进程标识。

          见:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/524404dc-8586-46b0-89ac-0f5db6d33c9c.mspx?mfr=true

          【讨论】:

          • 谢谢你,但是“启用匿名访问”肯定没有被选中。
          猜你喜欢
          • 2011-07-22
          • 1970-01-01
          • 1970-01-01
          • 2013-02-22
          • 1970-01-01
          • 1970-01-01
          • 2010-11-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多