Biztalk使用WCF-WsHTTP端点获取MessageSecurityException

时间:2011-02-10 08:35:14

标签: wcf security biztalk

当Biztalk 2009通过WS BasicHTTP适配器调用常规ASP.NET Web服务时,它会获得System.ServiceModel.Security.MessageSecurityException:HTTP请求未经授权,客户端身份验证方案为“Anonymous”。从服务器收到的身份验证标头是:Negotiate NTLM“。

Web服务托管在IIS(7.5)中,禁用匿名访问,并启用Windows身份验证。

2 个答案:

答案 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" />

希望有用吗?