IIS 6.0上的WCF中的集成Windows身份验证

Far*_*oon 2 authentication iis wcf

我需要为没有证书的 IIS 6.0(Windows Server 2003)上托管的WCF服务实现集成Windows身份验证.要求是在特定Active Directory组中的用户访问服务时简单地对其进行身份验证.使用的Framework版本是3.0.

WCF配置:

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

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

</bindings>
Run Code Online (Sandbox Code Playgroud)

没有 "MEX"端点.

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

此服务的安全设置需要Windows身份验证,但不支持承载此服务的IIS应用程序.

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

  • 该服务在单独的App Pool下运行
  • 应用程序池在应用程序池的"标识"选项卡下配置的单独特权帐户下运行.

我在这些方面看到了许多其他问题,但没有一个修复实际上纠正了这个问题.非常感谢您的投入.

Gra*_*ank 6

经过一番挖掘后,我终于发现,如果你将"Windows"改为"Ntlm",这就行了.我从来没有能够使用Kerberos,但你提到不想使用证书.

如果您仍然遇到问题,可以查看NTAuthenticationProviders下有关站点的IIS元数据库中的内容.如果你只想使用Ntlm,你需要将该字符串设置为"NTLM",并且你需要确保它在你的传输clientCredentialType中说"Ntlm"而不是"Windows",否则你将获得异常你引用原帖.

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