从mule esb使用.NET ASMX Web服务会引发CXFexception:401未经授权

我在另一台服务器上有一个.NET ASMX Web服务,我在另一台服务器上安装了mule standalone CE 3.4。 我有一个非常简单的流程,需要调用此.NET Web服务并传递两个字符串参数。

            

基本上,我公开了一个http入站端点(用于测试目的)来调用流并使用java转换器类来返回需要传递给Web服务的字符串。 这是WebServiceParamsTransformer类的代码。

 public class WebServiceParamsTransformer extends AbstractTransformer { @Override public Object doTransform(Object src, String encoding) throws TransformerException { Object[] out = new Object[2]; out[0] = "Update Ticket Service"; out[1] = Base64.encode("123456hari2013-09-16T15:52:14.0000+00.00"); return out; } } 

不幸的是这不起作用 – 我收到以下错误’响应代码:401。未经授权’。 以下是错误日志的摘录:

 INFO 2013-09-17 13:54:13,396 [[sftest].httpConnector.receiver.02] org.apache.commons.httpclient.auth.AuthChallengeProcessor: **ntlm authentication scheme selected** INFO 2013-09-17 13:54:13,397 [[sftest].httpConnector.receiver.02] org.apache.commons.httpclient.HttpMethodDirector: **No credentials available for NTLM @myserver:80** INFO 2013-09-17 13:54:13,397 [[sftest].httpConnector.receiver.02] org.mule.transport.http.HttpClientMessageDispatcher: **Received a redirect, but followRedirects=false. Response code: 401 Unauthorized** WARN 2013-09-17 13:54:13,398 [[sftest].httpConnector.receiver.02] org.apache.cxf.phase.PhaseInterceptorChain: Interceptor for {http://tempuri.org/}WebServiceListener#{http://tempuri.org/}ProcessExternalMessage has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Response was of unexpected text/html ContentType. Incoming portion of HTML stream: **You do not have permission to view this directory or page.** 

.NET Web服务由Windows集成身份validation保护,并在.NET Framework 2.0中的Windows Server 2008下的IIS 7中运行。 以下是显示身份validation设置的屏幕截图。

在此处输入图像描述

我哪里做错了? 我的要求是简单地调用一个由mule esb集成身份validation保护的Web服务。 任何帮助深表感谢。

这是因为身份validationexception。

      

这里Credential Supplier是一个扩展WSS4JOutInterceptor的bean。 并进行身份validation。

凭证供应商:

 public class CredentialsSupplier extends WSS4JOutInterceptor { public CredentialsSupplier() { setProperty("action", "UsernameToken"); setProperty("passwordType", "PasswordText"); } @Override public void handleMessage(SoapMessage message) { super.handleMessage(prepareHandleMessage(message)); } protected SoapMessage prepareHandleMessage(SoapMessage message) { message.setContextualProperty("user", "username"); message.setContextualProperty("password", "pswd"); return message; } }