.NET WSE3.0 调用配置UsernameToken 的CXF webservice出错

21 views
Skip to first unread message

mark

unread,
Sep 21, 2007, 6:31:56 AM9/21/07
to cxf-zh
用java 的client 调用没问题。

.NET WSE3.0调用 错误信息:

2007-9-21 17:40:46 org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor
handleMessage
警告: Security processing failed (actions mismatch)
2007-9-21 17:40:46 org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
信息: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: ACTION_MISMATCH
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:
207)
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:
59)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:
73)
at
org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:
78)
at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:
231)
at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:
139)
at org.apache.cxf.transport.servlet.CXFServlet.invoke(CXFServlet.java:
271)
at org.apache.cxf.transport.servlet.CXFServlet.doPost(CXFServlet.java:
249)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper
$ServletServiceAction.run(StubSecurityHelper.java:223)
at
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:
125)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:
283)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:
175)
at weblogic.servlet.internal.WebAppServletContext
$ServletInvocationAction.run(WebAppServletContext.java:3245)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:
321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
at
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:
2003)
at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:
1909)
at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:
1359)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

CXF 配置:

<jaxws:endpoint id="helloWorld"
implementor="demo.spring.HelloWorldImpl" address="/HelloWorld">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordText" />
<entry key="passwordCallbackClass"
value="demo.spring.AuthenticationCallbackHandler" />
</map>
</constructor-arg>
</bean>
</jaxws:inInterceptors>
</jaxws:endpoint>

.NET 测试代码:

localhost.HelloWorldImplService service = new
CXFTest.localhost.HelloWorldImplService();
UsernameToken token = new UsernameToken("joe",
"password1", PasswordOption.SendPlainText);
service.SoapVersion =
System.Web.Services.Protocols.SoapProtocolVersion.Soap11;

service.SetClientCredential<UsernameToken>(token);
sayHi hi = new sayHi();
hi.arg0 = name;
service.sayHi(hi);


谁知道怎么解决, 先谢谢了。

willem

unread,
Sep 22, 2007, 9:58:22 PM9/22/07
to cxf-zh
建议你把这封信发到cxf-...@incubator.apache.org 里去,在那里有很多WS Security 的专家帮你回答问题。

bldmickey

unread,
Sep 24, 2007, 10:59:01 AM9/24/07
to cxf-zh
用NET WSE3.0 调用配置UsernameToken 的Axis2成功过。但是CXF没有试过,如果做测试成功了,谢谢发一个相
关的文档。
顺便问三个问题:
1、WSE3.0是否只能在C#中使用?我在managed C++中好像有问题。
2、我用的是WSE3.0集成在VS2005的环境中,不知道是否能用在VS2003的环境下?
3、.NET平台下的WS程序的软件打包是否有什么好办法,分发客户端软件的时候,如果都要依赖.NET Framework(20多M太大)在某些环
境下不太方便。

bldmickey
email: bldm...@gmail.com
blog: http://bldmickey.sohu.com.cn


On Sep 21, 6:31 pm, mark <jking...@gmail.com> wrote:

Reply all
Reply to author
Forward
0 new messages