问题标签 [wss4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
75531 浏览

java - SOAPFaultException “MustUnderstand 标头 (oasis-200401-wss-wssecurity-secext-1.0.xsd) 不被理解”

我尝试从使用 PasswordText WSS 类型的 Web 服务获取信息。首先,我使用soapUI对其进行了测试,并成功获取了数据。然后我在Java上实现了认证,写了SecurityHandler:

我检查了 doc 对象XMLUtils.PrettyDocumentToString(doc)并看到,它看起来像 soupUI 发送的 XML - 所有身份验证信息(登录名、密码、nonce 和创建时间)都已到位,标记的mustUnderstand属性Security为 true。

然后我遇到了错误:

javax.xml.ws.soap.SOAPFaultException: MustUnderstand headers:[{ http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd }Security] 是不明白

我找到了从标签中删除 mustUnderstand 属性的建议Security,但这没有帮助。你有什么想法?

附言

Web 服务端点位于HTTPS上。

来自 WSDL 的策略部分:

肥皂UI请求:

我的请求:

0 投票
1 回答
3261 浏览

java - 使用 WSS4J 的安全 Web 服务调用返回“处理标题"

我正在尝试使用 WSS4J 将密码摘要 WS-Security 位添加到来自我的客户端的 Web 服务调用。我使用 Axis 的 WSDL4J 从 WSDL 生成客户端类,并按照说明使用 WSS4J 将 WS-Security 的“Password Digest”标头添加到 SOAP 消息,但返回错误消息“处理标头时发现错误”。添加调试消息,看起来我的 CallbackHandler 并没有受到打击。我做错了什么吗?或者我是否遗漏了一些在 WSS4J 文档中无法解释的设置?

0 投票
1 回答
3370 浏览

exception-handling - Spring Web Services 和 Spring Security 异常处理

我正在尝试将 Spring 安全性中的级联异常作为 Spring Web 服务中的肥皂故障的解决方案。

我们使用 Spring Web 服务并使用SimplePlainTextPasswordValidationCallbackHandler. 但是,spring security 中的所有自定义异常都会在soap响应中作为“Invalid Soap Header”输出。这是相信是默认行为。

有什么方法可以覆盖此行为以将我们自定义的异常级联到 Spring WS?

谢谢。

0 投票
2 回答
4041 浏览

java - 如何通过 WSS4J 使用 Eclipse 生成的代理(轴 1.4)对 SOAP 请求进行数字签名?

我已经获得了一个 Web 服务的 WSDL。我现在需要对该请求进行数字签名。以前的开发人员利用 Eclipse 特性来生成代理类。将 WSDL 添加到项目中,然后右键单击它,单击“Web Service”,然后单击“Generate Client”。

在我们被要求对请求进行数字签名之前,这一直很好。我做了一些挖掘,看起来 Axis 1.4 不允许您签署请求。您可以使用 WSS4J 来做到这一点。我在 WSS4j 1.5 中加入了我的项目。

我不知道如何对请求进行数字签名。这是我现有的使用代理类的代码:

我想做的是类似于这篇文章的事情。这是他们使用的一个函数:

当创建它的所有代码都隐藏在生成的代理类中时,我如何才能对 Soap Envelope 进行签名?

0 投票
1 回答
1171 浏览

java - 如何在发送前使用 gzip 压缩 Web 服务中的消息?

我知道Java编。但是,我是 Java EE 和 Web 服务、soap 等方面的完整初学者。我需要在发送之前压缩消息并使用 Apache wss4j 为其添加签名。我按照 Netbeans 网站上的教程创建了一个 Web 服务和一个使用相应服务的 Web 服务客户端。(一个数字添加服务和一个客户端)我正在阅读官方 Java EE 文档,但我无法理解和写一些东西。我正在搜索示例代码和项目,但找不到相关代码或无法理解我找到的代码。

这些是我找到的:

但是在我的项目中在哪里添加这些代码。如何添加签名和压缩?提前致谢。

0 投票
1 回答
731 浏览

java - XMLStreamException 未绑定到前缀。Stax 实现 WebSphere

我在尝试在 WAS 6.1.0.43 上部署带有 WSS4J 密码回调的 Web 服务时遇到问题。

基于 XFire 1.2.2 的 Web 服务

我对 Tomcat 7.0.25 没有任何问题:

好像和STAX Implementation有关;IBM 在 WAS 上使用自己的。

如果您有任何提示。

堆栈跟踪 :

谢谢

0 投票
1 回答
3494 浏览

cxf - 如何配置 wss4j 签名验证器

我正在使用 WSS4J 来验证肥皂消息中的签名和时间戳。但是当我收到没有签名时间戳部分的消息时,wssj4 认为一切正常,我希望在这种情况下看到错误。

我的好消息是这样的:

和坏消息(这个应该抛出类似“时间戳未签名”的异常):

所以我的坏消息不包含:

目前我的拦截器配置如下:

如何设置 wss4j 来实现这种行为?顺便说一句:CXF 版本:2.5.1 WSS4J 版本:1.6.2

0 投票
1 回答
192 浏览

authentication - 如何使用 WSS4j 通过 usernameToken 记录服务器成功和不成功的 Web 服务身份验证尝试

如何使用 WSS4j 通过 usernameToken 登录服务器成功和不成功的 Web 服务身份验证尝试?据我了解,检查登录/密码是否符合 WSS4j 内部,如果身份验证成功,则调用 Web 服务的方法,否则根本不调用

0 投票
2 回答
7127 浏览

jboss - JBoss AS 7 - NoSuchMethodError org.apache.xml.security.transforms.Transform.init()V

我正在从 JBoss 5 -> JBoss 7 迁移,根据https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7,打包在 WEB-INF/lib 中的本地资源应该在部署间依赖项之前加载。

在我的 WEB-INF/lib 目录中,我有 wss4j(版本 1.5.7)库 jar,其中包含 Transform.init() 方法。

在我部署并运行我的应用程序后,我收到以下错误。

错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/].[Resteasy]] (http--127.0.0.1-8080-1) Servlet.service() for servlet Resteasy 抛出异常:org.jboss.resteasy.spi.UnhandledException: java.lang.NoSuchMethodError: org.apache.xml.security.transforms.Transform.init()V at org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException( SynchronousDispatcher.java:340) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:214) [resteasy-jaxrs-2.3.2.Final. jar:] 在 org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190) [resteasy-jaxrs-2.3.2.Final.jar:] 在 org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher .java:540) [resteasy-jaxrs-2.3.2.Final.jar:] 在org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) [resteasy-jaxrs-2.3.2.Final.jar:] 在 org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher .java:208) [resteasy-jaxrs-2.3.2.Final.jar:] 在 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.2 .Final.jar:] 在 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.2.Final.jar:] 在 javax.servlet.http。 HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13 .Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 在 org.apache.catalina.core。 StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache。 catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0. 13.Final.jar:] 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler .process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13 .Final.jar:] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_05] 原因:java.lang.NoSuchMethodError: org.apache.xml.security.transforms.Transform.init()V 在 org.apache.ws.security.WSSConfig.(WSSConfig.java:81) [wss4j-1.5.2.jar:]在 org.apache.ws.security.WSSConfig.getNewInstance(WSSConfig.java:95) [wss4j-1.5.2.jar:] 在 org.apache.ws.security.WSSConfig.(WSSConfig.java:47) [wss4j- 1.5.2.jar:] 在 org.apache.ws.security.WSSecurityEngine.(WSSecurityEngine.java:51) [wss4j-1.5.2.jar:] 在 org.apache.ws.security.handler.WSHandler.(WSHandler .java:62) [wss4j-1.5.2.jar:] at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_05] at java.lang.Class.forName(Class.java:264 ) [rt.jar:1.7.0_05] 在 org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:177) [axis-1.4.jar:] 在 java.security.AccessController。doPrivileged(Native Method) [rt.jar:1.7.0_05] at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160) [axis-1.4.jar:] at org.apache.axis.utils。 ClassUtils.forName(ClassUtils.java:100) [axis-1.4.jar:] 在 org.apache.axis.deployment.wsdd.WSDDDeployableItem.getJavaClass(WSDDDeployableItem.java:353) [axis-1.4.jar:] 在 org. apache.axis.deployment.wsdd.WSDDDeployableItem.makeNewInstance(WSDDDeployableItem.java:295) [axis-1.4.jar:] at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274) [axis- 1.4.jar:] 在 org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260) [axis-1.4.jar:] 在 org.apache.axis.deployment.wsdd.WSDDChain.makeNewInstance(WSDDChain .java:125) [axis-1.4.jar:] 在 org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274) [axis-1.4.jar:] at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260) [axis- 1.4.jar:] 在 org.apache.axis.deployment.wsdd.WSDDDeployment.getGlobalRequest(WSDDDeployment.java:473) [axis-1.4.jar:] 在 org.apache.axis.configuration.FileProvider.getGlobalRequest(FileProvider.java :269) [axis-1.4.jar:] at org.apache.axis.AxisEngine.getGlobalRequest(AxisEngine.java:365) [axis-1.4.jar:] at org.apache.axis.client.AxisClient.invoke(AxisClient .java:126) [axis-1.4.jar:] 在 org.apache.axis.client.Call.invokeEngine(Call.java:2784) [axis-1.4.jar:] 在 org.apache.axis.client.Call .invoke(Call.java:2767) [axis-1.4.jar:] 在 org.apache.axis.client。Call.invoke(Call.java:2443) [axis-1.4.jar:] 在 org.apache.axis.client.Call.invoke(Call.java:2366) [axis-1.4.jar:] 在 org.apache。 axis.client.Call.invoke(Call.java:1812) [axis-1.4.jar:] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_05] 在 sun.reflect.NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:57)[rt.jar:1.7.0_05] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_05] 在 java.lang.reflect.Method。在 org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155) [resteasy-jaxrs-2.3.2.Final.jar:] 调用(Method.java:601)[rt.jar:1.7.0_05]在 org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.ResourceMethod.invoke (ResourceMethod.java:211) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs-2.3.2.Final .jar:] ... 还有 19 个

0 投票
1 回答
1775 浏览

soap - WSS4J 不解析 SOAP 消息

我有这样的代码:

传递给 WSS4j 引擎的文件中的 SOAP 消息是:

在我看来,这是一个完全符合 WS-Security UsernameToken 的消息!

但是,engine.processSecurityHeader() 不返回任何安全结果。结果变量保持为空,然后在下一行引发 NPE。这是堆栈跟踪:

任何人都知道我做错了什么?

谢谢弗兰克