首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UsernameToken的SOAP规范

UsernameToken的SOAP规范
EN

Stack Overflow用户
提问于 2015-12-30 14:29:40
回答 1查看 1.6K关注 0票数 0

我正在编写一个客户机,使用WSDL优先方法连接到SOAP WSDL服务。对于实现,我使用Apache版本3.1.4

在测试时,我得到以下异常:

12:35:15.492 [main] WARN o.a.c.w.p.a.w.Wsdl11AttachmentPolicyProvider - Failed to build the policy 'UsernameToken':sp:UsernameToken must have an inner wsp:Policy element Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: sp:UsernameToken must have an inner wsp:Policy element at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:160) at com.sun.proxy.$Proxy36.getPing(Unknown Source) ... Caused by: java.lang.IllegalArgumentException: sp:UsernameToken must have an inner wsp:Policy element at org.apache.wss4j.policy.builders.UsernameTokenBuilder.build(UsernameTokenBuilder.java:52) at org.apache.wss4j.policy.builders.UsernameTokenBuilder.build(UsernameTokenBuilder.java:34) at org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(AssertionBuilderFactoryImpl.java:138)

WSDL文件的相关部分如下所示:

<wsp:Policy wsu:Id="UsernameToken"> <wsp:ExactlyOne> <wsp:All> <sp:SupportingTokens> <wsp:Policy> <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"/> </wsp:Policy> </sp:SupportingTokens> </wsp:All> </wsp:ExactlyOne> </wsp:Policy>

错误消息指示CXF需要UsernameToken下的策略标记。事实上,在我研究的时候我发现了一个来自CXF bug跟踪器的评论

Yes... Per spec, the <sp:UsernameToken> element MUST contain an internal wsp:Policy element. It should look like: <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:WssUsernameToken11 /> </wsp:Policy> </sp:UsernameToken>

但是,说明书上说

/sp:UsernameToken/wsp:Policy This optional element identifies additional requirements for use of the sp:UsernameToken assertion.

注:可选。

那是哪一个?似乎CXf需要一个策略,而规范说它是可选的。我还需要看另一个规格吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-04 12:35:48

看起来这个问题在这里并没有被注意到,但是在谷歌领导下,我还是把解决方案发出去吧。

我在Apache用户邮件列表上发布了同样的问题,并得到了答复:

这是WSS4J中的一个bug,我刚刚修复了它:https://issues.apache.org/jira/browse/WSS-564

WS-SecurityPolicy1.2+ 1.3需要一个策略元素,但1.1不需要。在下一个WSS4J发布之前,最好的选择是只使用一个空的策略元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34531438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档