我有一个与WCF服务通信的Web应用程序客户端。客户端和服务都在运行模拟,因为他们需要写入NAS上的类似位置以便编写日志和工作文件。问题是,虽然客户端可以写得很好,但服务却不能。两者都使用System.IO.FileStream
写入NAS。我们最初认为这可能是由于未正确传递的凭据,因此为域用户启用了委派。我们仍然收到同样的错误。如果我检查ServiceSecurityContext.Current.WindowsIdentity
我可以看到它是我期望的域用户,但奇怪的是IIdentity.AuthenticationType
值是“Kerberos”。使用this文章,我们检查了我们的IIS NTAuthenticationProviders
并验证它已设置为“Negotiate,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>
感谢您的帮助!
答案 0 :(得分:0)