问题标签 [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 投票
0 回答
739 浏览

java - 使用 CXF 3.0.3 + WSS4J 在 WebSphere Application Server 8 上使用 SOAP ws 安全性

我的应用程序需要使用一些 SOAP ws-sercurity 服务,它在 Tomcat 中运行良好,但是当我在 WAS 8 上部署它时,我得到了下一个场景:

情况1:

如果我只使用JaxWsProxyFactoryBean

我得到这个异常Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.)org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:183) at org.apache.cxf.bus.extension.Extension.getClassObject(Extension.java:199) at org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAllByType(ExtensionManagerImpl.java:144) at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:169) at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:175) at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:40) at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:36) at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:32) at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:146) at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:122) at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:94) at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:83) at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:106) at org.apache.cxf.BusFactory.createThreadBus(BusFactory.java:243) at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:227) at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:214) at org.apache.cxf.frontend.ClientProxyFactoryBean.configureObject(ClientProxyFactoryBean.java:100) at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:133) at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)

案例二:

如果我使用这个实现

我明白了(org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler incompatible with org.apache.cxf.frontend.ClientProxy)java.lang.ClassCastException: org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler incompatible with org.apache.cxf.frontend.ClientProxy at org.apache.cxf.frontend.ClientProxy.getClient(ClientProxy.java:128) at com.proteccion.hubDigital.integration.impl.ConsultaSaldosImpl.consultarSaldoCesantiasDetallado(ConsultaSaldosImpl.java:199) at com.proteccion.hubDigital.core.services.impl.SaldoServicioImpl.consultarSaldos(SaldoServicioImpl.java:76) at com.proteccion.hubDigital.rest.controller.SaldoConsultaControlador.consultarSaldos(SaldoConsultaControlador.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)

我也尝试了这篇文章的建议,但不起作用CXF 2.7.14 + WSS4J + Websphere 7 ClassCastException

谢谢你的帮助!

0 投票
2 回答
4794 浏览

cxf - SoapFault MustUnderstand headers, CXF WSS4J 未提供加密属性文件

我的 SOAP 服务器正在接收必须理解标头设置为 1 的 SOAP 消息。

必须了解标题

为了理解标头,我使用了 wss4j 拦截器。

我的 sign.properties 文件是:

我的端点 xml:

但是我收到错误“org.apache.wss4j.common.ext.WSSecurityException:没有提供加密属性文件来验证签名”

没有提供加密属性文件来验证签名

我假设它就像没有正确处理 signaturePropFile 一样简单,但我尝试提供完整的文件路径,但返回了相同的结果。

任何帮助将不胜感激。

0 投票
2 回答
1264 浏览

spring - Websphere 8.5:即使这些类在 lib 文件夹中也找不到类

我在 websphere 8.5 中使用 spring/wss4j 来实现 web 服务安全。Wss4j 需要 xmlsec.jar,我在 WEB-INF/lib/xmlsec-2.0.4.jar 下包含了 xmlsec.jar。但是 websphere 类加载器找不到 DOMXMLSignatureFactory。

我正在为 APPLICATION 和 MODULE 设置 PARENT_LAST。Xmlsec-2.0.4.jar 显示在“类加载器查看器”下。我检查了我所有的库,没有重复的 DOMXMLSignatureFactory 类。有人可以帮帮我吗!

0 投票
0 回答
639 浏览

saml - SAML 1.1 令牌生成器和使用 Java 的自签名

作为一项要求,我需要使用 SAML 令牌配置 2 个企业应用程序。由于以下列出的限制,我需要为令牌生成和令牌签名编写单独的服务。

约束是:

  1. 没有可用的 IdP(身份提供者)。没有可用的关联元数据文件。
  2. 需要使用 SAML 1.1 版本
  3. 需要对 SAML 响应进行自签名。

作为 POC 的一部分,我可以使用 2.0 版本通过编写一个转发到签名服务进行签名的服务来生成 SAML 令牌。我可以通过使用 Windows keytool 命令生成证书\密钥库来对其进行签名。

尽管对于使用 OpenSAML 库的 SAML 1.1 实施,我无法生成正确格式的 SAML 请求消息。我寻找了可以提供帮助的其他库,例如具有SAML Token Profile Generator的 WSS4J 。还有一些围绕 IBM Websphere Application server ( SAML Token Generator ) 的配置,因为它用于托管应用程序。仍然无法使用上述选项实施解决方案。

问题:

  1. 是否可以在不使用 IdP 服务器的情况下进行 SAML 实施?
  2. 我可以使用 IBM Websphere Application Server(WAS) 作为 IdP 服务器吗?
  3. WAS 可以用来生成 STS 代币吗?
  4. 任何像 OpenSAML、WSS4J 这样的库可以帮助轻松地为 SAML 1.1 版本生成和签署 SAML 令牌?
0 投票
0 回答
1242 浏览

java - CXF WSS4JOutInterceptor 数字签名和指纹

我正在使用 CXF 来使用 Web 服务

<SignedInfo>它涉及使用我的私钥签署节点并加密<soap:Body>节点。

我正在使用WSS4JOutInterceptor对肥皂消息进行签名。

我无法弄清楚如何指定 WSS4J 对<SignedInfo>标头节点进行签名。

我也想把我的自定义指纹放在标题中。我猜服务提供商使用它来识别他们必须使用的公钥。

下面是我现在使用评论中使用的 Java 代码生成的 Soap Header

**我还尝试截取消息,以便我可以从肥皂信封中获取标题并可以自己更新指纹值。但我无法在 Interceptor 中获得 Signature 值。

**

上述程序的输出是

0 投票
1 回答
808 浏览

axis2 - Axis2 和 Rampart 错误

您好我在尝试查看 Axis2 上的可用服务时遇到错误。

我基本上需要客户端始终将用户名/密码发送到 Axis2 服务器。以下是我安装的:

Java7 Apache Tomcat 7.0.22 Axis2 1.6 Rampart 1.6

Tomcat 启动正常。我能够看到 Axis2,但是当我单击服务链接时,我看到以下错误。下面也是我添加到 services.xml 的策略部分。我是否还必须为证书创建一个 java 数据存储 JKS?这是必需的吗?我只是想让它启动并运行。一旦这个工作正常,我将添加额外的安全性,如 HTTPS。

提前致谢。

在我在 Axis2 的浏览器中看到的堆栈跟踪下方:

0 投票
1 回答
1127 浏览

tomcat - 资源路径 [cxf-ehcache.xml] 无效

我正在尝试实现消息级加密。具体来说,SOAP 消息的正文将被加密。我正在尝试加密从客户端到 Web 服务的流量。

客户端成功发送加密数据:

我正在使用:Apache Tomcat 8 和 Apache CXF 2.6.13

0 投票
2 回答
6021 浏览

spring - 使用 cxf 验证时签名或解密无效

我正在关注 cxf 样本来验证签名,不幸的是我收到了以下错误“org.apache.wss4j.common.ext.WSSecurityException:签名或解密无效”

我已经尝试了很多天,但没有找到任何解决方案。

弹簧配置:

绒球

和 saop 请求

0 投票
0 回答
2511 浏览

cxf - CXF WS-Security - X509IssuerSerial 验证失败

我在使用 CXF WS-Security 和签名验证时遇到了问题。我WSS4JInInterceptor在服务器端使用以验证Body元素上的签名。
- 当我使用 e BinarySecurityToken( DirectReference) 作为关键标识符类型时,一切正常;
- 当我使用X509IssuerSerial( IssuerSerial) 作为服务器端的密钥标识符类型签名验证失败。
这是服务器端的配置:

如果我(从客户端)发送带有此 SOAPHeader 的 SOAPEnvelope:

我会得到 SOAPFault:

使用调试日志输出,我没有得到太多信息。但是在调试时,我发现org.apache.wss4j.dom.processor.SignatureProcessor此时失败了:

在 wss4j-ws-security-dom-2.1.0 中引发异常的是第 197 行。这意味着 certificate 和 publicKey 为空。这使我得出一个结论,即我从一开始就想得不够——我没有意识到没有可以验证签名的证书。另外,我的结论是,在 X509IssuerSerial 的情况下,只有在接收端(在这种情况下为服务器)端有证书的情况下,您才能验证签名。
有没有人有更好的解释?

0 投票
0 回答
727 浏览

java - 如何使用 WSS4J 使用对称密钥加密和签署 SOAP

我需要使用Axis 1.4它将访问第三方系统(Web 服务生产者)来构建 Web 服务客户端应用程序。

为了向第三方系统发送有效请求,我需要在发送给他们之前对其进行加密签名。SOAP request

我利用wss4j 1.5以下链接中的步骤执行此任务: Calling an OWSM protected service with Axis 1.4 and WSS4J

我的理解是:

1-要加密SOAP需要使用第三方公钥,他们将使用自己的私钥对其进行解密。

2-要签名SOAP我需要使用我自己的私钥,他们应该使用我需要与他们共享的公钥来验证签名。

我这样做了,但我收到了错误

从第三方端。在与第三方团队核实后,他们说:

"我们使用“使用对称密钥的用户名身份验证”,因此我们不会在我们的信任库中维护任何客户端证书。签名和加密都使用一个共享密钥。因此您需要使用我们的证书进行签名和加密。 "

这种反应对我来说没有意义。我了解我需要使用第三方证书(即公钥)来加密.SOAP Request

但是我怎样才能使用相同的公钥 -这是他们共享的唯一证书 - 来签名SOAP Request

我相信我需要一个私钥才能做到这一点。

我需要他们的私钥吗?任何澄清都会有所帮助。