【发布时间】:2011-12-07 03:17:01
【问题描述】:
我有一个与 WCF 服务通信的 Web 应用程序客户端。客户端和服务都在运行模拟,因为它们需要写入 NAS 上的类似位置以写入日志和工作文件。问题是,虽然客户端可以写得很好,但服务不能。两者都使用System.IO.FileStream 写入NAS。我们最初认为这可能是由于不正确地传递了凭据,因此为域用户启用了委派。我们仍然收到同样的错误。如果我检查ServiceSecurityContext.Current.WindowsIdentity,我可以看到这是我所期望的域用户,但奇怪的是IIdentity.AuthenticationType 的值是“Kerberos”。使用this 文章,我们检查了我们的 IIS NTAuthenticationProviders 并验证它设置为“协商,NTLM”。我意识到这个 IIS 设置是用于 IIS 而不是 NAS 之间的通信,但我们想确定一下。
我们还执行了跟踪,可以看到有问题的服务器与 NAS 位置之间的协商。发送请求后,我们确实看到它尝试联系域控制器,但由于未配置,因此身份验证失败。
最后,我只是想找出是否有一个配置指令可以设置,以防止它在写入 NAS 时尝试使用 Kerberos 身份验证,其次,为什么当客户端是服务时使用 Kerberos不是。
我很乐意对此进行编辑并添加所需的任何其他配置项,因此请告诉我。
WCF 服务 web.config 绑定部分
<bindings>
<wsHttpBinding>
<binding name="default" maxReceivedMessageSize="200000">
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
感谢您的帮助!
【问题讨论】:
标签: wcf authentication wcf-security impersonation delegation