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

.net - WCF client exception -"Message security verification failed, The signature verification failed" - how can I debug further?

Getting the following exception when my WCF client gets a response calls a Java based Spring Web Services server -

The Inner Exception - The signature verification failed.

The Java based server web-service seems to process my request fine but I'm having the above trouble with the response. Note: I have no access to the server side of things - I can request changes and query actions but that's all

The set-up

  • WCF .NET 3.5 client web-service
  • Java Spring Web Services 2.1.0 (SOAP protocol implementation) + Apache WSS4J 1.6.7 (WS-Security 1.1 implementation) server
  • The following security binding in config:
  • Binding has been modified in code like so

    What I can't seem to do is:

    1. Figure out which signature has failed? The stack trace for the inner exception mentions System.ServiceModel.Security.ReceiveSecurityHeader.ProcessPrimarySignature so I presumed the Primary Signature was the main envelope body signature? Contradictory to this, however, is the line in the StackTrace System.ServiceModel.Security.MessageSecurityProtocol.ProcessSecurityHeaderwhich would lead me to think that it's a header element - but which one?

    2. Check the signatures in a Console application or something similar using System.Security.Cryptography.Xml.SignedXml classes to verify in a separate, isolated environment which of the signatures are returning false for CheckSignature() - I have tried this and cant seem to get it to return true for elements in my request from WCF (I've pulled the request from fiddler)

Any and all help appreciated

0 投票
0 回答
4480 浏览

java - WSS4J 和 Apache Axis 不起作用

我尝试将 WSS4J 与 Axis Web 服务一起使用,但没有任何反应。似乎根本没有使用 WSS4J。所有必要的库都在 WEB-INF/lib 目录中。该服务正在使用 org.apache.axis.client.AdminClient 实用程序进行部署。

这是我的 deploy.wsdd:

尽管我什至没有haha类,但没有发生错误(请参阅passwordCallbackClassdeploy.wsdd 中的参数)。我可以自由地将没有 WSS 标头的 SOAP 请求发送到我的服务。

更新

我已经解决了一些类路径问题。当我尝试打开http://localhost:8080/axis/servlet/AxisServlet页面时,我看到一个错误:org.apache.axis.ConfigurationException: java.lang.ClassNotFoundException: org.apache.ws.axis.security.WSDoAllSender. WSS4J jar 位于 {tomcat}\webapps\axis\WEB-INF\lib 目录中。我做错了什么?

更新#2

似乎wsdl4jjar 既不包含org.apache.ws.axis.security.WSDoAllSender类也不包含wss4jjar。但是,对于 1.5.x 版本,此类wss4jjar 中。现在它不见了。WSS4J 的文档已过时。

0 投票
1 回答
541 浏览

java - 两次调用 Web 服务时出现 Wss4j 和 soaphandler 错误

当我使用 wss4j 验证服务器上 SOAP 请求的安全性时遇到问题,这是我用来验证肥皂请求的安全标头的代码部分(我在 SOAPHandler 的 handleMessage 方法中执行) :

在请求上有一个签名和一个时间戳,当我第一次调用 Web 服务时,一切正常,请求被处理,我使用一个小型 Java 项目来调用我的 Web 服务,程序检索答案并正确完成。但后来我再次启动程序,但这一次在服务器端检查不起作用。我一直在查看 wss4j 代码以查看问题出在哪里,我已经在 DOMReference.validate 方法中到达这里:

这次 calcDigestValue 不同了,我找不到原因……有人知道吗?

谢谢。

编辑:我的研究一直在取得进展,问题在于请求信封的主体在客户端和服务器之间的某处发生了变化......我已经检查了客户端,我几乎可以确定主体那里没有改变。这些变化只出现在第二次调用,仍然不知道为什么?

0 投票
1 回答
666 浏览

cxf - CXF WSS4J 拦截器与 WS-SecurityPolicy

我对 WS-Security 政策有疑问。我们可以使用 CXF WSS4J 拦截器或 WS-Security Policy 来实现 WS-Security。这两种方法有什么区别?我发现将 WS-Security 策略嵌入到 wsdl 比在 cxf 中添加拦截器更困难。请让我了解这两者之间有什么不同?提前致谢

0 投票
1 回答
4491 浏览

spring - wsse:security 的命名空间

我的问题是我正在尝试调用具有 Wss4jSecurityInterceptor 的 Web 服务来进行用户名密码身份验证。

生成的请求是这样的:

这不起作用但是当我更改命名空间即xmlns:wsse

它工作正常。

我想知道如何更改使用<wsse:Security>代码中的标记生成的命名空间

0 投票
2 回答
10214 浏览

java - 如何让 WSS4J 从回调中加载密钥库密码?

我正在使用 Apache CXF 构建 Web 服务。它使用 Apache WSS4J 来提供 WS-Security 功能。我需要发出一个 SOAP 请求并且它必须被签名。

这是我传递给 WSS4J 的属性文件的内容:

我想用我的密码写成纯文本来摆脱那一行。我删除了该行并向我的 WSS4JOutInterceptor 提供了一个密码回调处理程序,就像上面的代码一样:

但这没有用。它在属性文件中找不到密码并使用默认密码“security”。

如何让它使用回调来获取密码?

0 投票
2 回答
1427 浏览

spring - Wss4jSecurityInterceptor 不解密回复

我有一个在 Spring-ws 中实现的 Web 服务客户端,使用 Wss4jSecurityInterceptor 进行 ws-security。

调用端点有效,数据被加密、签名和发送,但是当收到回复时,它没有被解密。而是调用 JAXB 的解组器,导致如下错误:

然后,预期元素继续列出 xdd 中的每种数据类型。

这是我的 Wss4jSecurityIntercepter 配置的:

知道出了什么问题吗?

谢谢。

编辑:这是由在 handleResponse 上返回 false 的 ClientInterceptor 引起的,并且位于 wss4j 拦截器之前,导致所有拦截器处理停止。

0 投票
1 回答
16440 浏览

java - UsernameToken WS-Security with Apache CXF Annotations (WSS4J)

我正在尝试创建一个“java first”的 web 服务,它将使用简单的 UsernameToken WS-Security。我试图遵循 CXF 中的示例。当我查询我的 wsdl 时,我没有看到任何与 ws-security 相关的内容。我正在使用 CXF 2.7.5,我正在尝试使用注释来做所有事情。

以下是我失败的尝试:

示例服务.java:

SampleServiceImpl.java:

密码处理程序.java:

SampleServicePublisher.java:

mvn 依赖:

0 投票
1 回答
83 浏览

wss4j - WSS4J 是否支持 XKMS?

是否可以将 WSS4J 配置为使用XKMS而不是密钥库来检索私钥和公钥?

这是一个示例密钥库配置:

是否有使用 XKMS 的类似设置,或者我需要创建自定义实现以org.apache.ws.security.components.crypto.Crypto使用 XKMS 检索密钥?

0 投票
0 回答
1014 浏览

wss4j - wss4j-1.6.10 中的 WSDoAllSender 类替换?

我有一个适用于 wssj4-1.5.12 的 WSDD。它看起来像这样:

但是,在切换到 wss4j-1.6.10 后,我得到了一个 ClassNotFoundException:

WSDoAllSender 似乎不再在 wss4j-1.6.4 API 中。但是,我似乎找不到它的替代品。wss4j 是否仍然支持用于 SOAP 连接的 UsernameToken?WSDoAllSender 的替换类是什么?

谢谢你。