当Biztalk 2009通过WS BasicHTTP适配器调用常规ASP.NET Web服务时,它会获得System.ServiceModel.Security.MessageSecurityException:HTTP请求未经授权,客户端身份验证方案为“Anonymous”。从服务器收到的身份验证标头是:Negotiate NTLM“。
Web服务托管在IIS(7.5)中,禁用匿名访问,并启用Windows身份验证。
答案 0 :(得分:2)
您的发送端口需要配置为使用NTLM安全性,因为这似乎是Web服务所需的。
打开发送端口的配置,打开传输类型(WCF-BasicHttp)配置,然后转到“安全”选项卡。在那里,将安全模式设置为Transport。这将允许您将传输客户端凭据类型设置为Ntlm。
这将导致BizTalk使用NTLM对Web服务进行身份验证。它将使用运行发送端口的BizTalk主机的帐户。如果该帐户无权访问Web服务,那么您将需要授予其访问权限或查看备选方案,例如从NTLM切换到Basic(允许您在同一“安全”选项卡下指定凭据)。有关此问题的讨论是here。
当然,您确实提到您为Windows身份验证配置了Web服务,因此您也可以尝试将传输客户端凭据类型设置为Windows。但是,它应该仍然使用BizTalk主机进程的帐户,就像NTLM一样。
答案 1 :(得分:0)
FWIW这里是一个暴露给BizTalk 2009的WCF basicHttpBinding的粘贴
<services>
<service ... >
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="binding4BizTalk"
bindingNamespace="xxx"
... >
<!-- Delete the identity tag here -->
</endpoint>
然后在绑定下
<bindings>
<basicHttpBinding>
<binding name="binding4BizTalk" ...>
<security mode="None" />
希望有用吗?