问题标签 [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.
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
谢谢你的帮助!
cxf - SoapFault MustUnderstand headers, CXF WSS4J 未提供加密属性文件
我的 SOAP 服务器正在接收必须理解标头设置为 1 的 SOAP 消息。
为了理解标头,我使用了 wss4j 拦截器。
我的 sign.properties 文件是:
我的端点 xml:
但是我收到错误“org.apache.wss4j.common.ext.WSSecurityException:没有提供加密属性文件来验证签名”
我假设它就像没有正确处理 signaturePropFile 一样简单,但我尝试提供完整的文件路径,但返回了相同的结果。
任何帮助将不胜感激。
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 类。有人可以帮帮我吗!
saml - SAML 1.1 令牌生成器和使用 Java 的自签名
作为一项要求,我需要使用 SAML 令牌配置 2 个企业应用程序。由于以下列出的限制,我需要为令牌生成和令牌签名编写单独的服务。
约束是:
- 没有可用的 IdP(身份提供者)。没有可用的关联元数据文件。
- 需要使用 SAML 1.1 版本
- 需要对 SAML 响应进行自签名。
作为 POC 的一部分,我可以使用 2.0 版本通过编写一个转发到签名服务进行签名的服务来生成 SAML 令牌。我可以通过使用 Windows keytool 命令生成证书\密钥库来对其进行签名。
尽管对于使用 OpenSAML 库的 SAML 1.1 实施,我无法生成正确格式的 SAML 请求消息。我寻找了可以提供帮助的其他库,例如具有SAML Token Profile Generator的 WSS4J 。还有一些围绕 IBM Websphere Application server ( SAML Token Generator ) 的配置,因为它用于托管应用程序。仍然无法使用上述选项实施解决方案。
问题:
- 是否可以在不使用 IdP 服务器的情况下进行 SAML 实施?
- 我可以使用 IBM Websphere Application Server(WAS) 作为 IdP 服务器吗?
- WAS 可以用来生成 STS 代币吗?
- 任何像 OpenSAML、WSS4J 这样的库可以帮助轻松地为 SAML 1.1 版本生成和签署 SAML 令牌?
java - CXF WSS4JOutInterceptor 数字签名和指纹
我正在使用 CXF 来使用 Web 服务
<SignedInfo>
它涉及使用我的私钥签署节点并加密<soap:Body>
节点。
我正在使用WSS4JOutInterceptor对肥皂消息进行签名。
我无法弄清楚如何指定 WSS4J 对<SignedInfo>
标头节点进行签名。
我也想把我的自定义指纹放在标题中。我猜服务提供商使用它来识别他们必须使用的公钥。
下面是我现在使用评论中使用的 Java 代码生成的 Soap Header
**我还尝试截取消息,以便我可以从肥皂信封中获取标题并可以自己更新指纹值。但我无法在 Interceptor 中获得 Signature 值。
**
上述程序的输出是
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 的浏览器中看到的堆栈跟踪下方:
tomcat - 资源路径 [cxf-ehcache.xml] 无效
我正在尝试实现消息级加密。具体来说,SOAP 消息的正文将被加密。我正在尝试加密从客户端到 Web 服务的流量。
客户端成功发送加密数据:
我正在使用:Apache Tomcat 8 和 Apache CXF 2.6.13
spring - 使用 cxf 验证时签名或解密无效
我正在关注 cxf 样本来验证签名,不幸的是我收到了以下错误“org.apache.wss4j.common.ext.WSSecurityException:签名或解密无效”
我已经尝试了很多天,但没有找到任何解决方案。
弹簧配置:
绒球
和 saop 请求
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 的情况下,只有在接收端(在这种情况下为服务器)端有证书的情况下,您才能验证签名。
有没有人有更好的解释?
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
?
我相信我需要一个私钥才能做到这一点。
我需要他们的私钥吗?任何澄清都会有所帮助。