首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有信任存储的WSS4J SOAP签名验证

没有信任存储的WSS4J SOAP签名验证
EN

Stack Overflow用户
提问于 2017-11-21 17:59:54
回答 2查看 871关注 0票数 1

我需要验证一个签名的SOAP消息,提取证书,并根据LDAP目录对证书进行身份验证,这使得信任存储变得不必要。现在我已经使用了WSS4J一段时间了,但是总是使用本地的信任商店。查看一下正式文档并搜索一下,我找不到任何类似于我的场景的参考。我想知道在这种情况下是否可以继续使用WSS4J。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-22 09:49:50

是的,您可以在这个用例中使用WSS4J。在签署证书时,WSS4J默认使用SignatureTrustValidator来验证信任:

https://github.com/apache/ws-wss4j/blob/master/ws-security-dom/src/main/java/org/apache/wss4j/dom/validate/SignatureTrustValidator.java

您可以通过以下方法将自己的实现插入其中:

https://github.com/apache/ws-wss4j/blob/66ab5fdbeeda0e0cbd6e317272dadd4417f6be91/ws-security-common/src/main/java/org/apache/wss4j/common/ConfigurationConstants.java#L863

如果您在WSS4J中使用CXF,则可以设置一个自定义配置常量,该常量指向Validator实现以获得签名。

票数 1
EN

Stack Overflow用户

发布于 2018-11-14 00:27:00

我也面临着同样的问题,并以这样的方式解决了它:

代码语言:javascript
复制
@EnableWs
@Configuration
public class WsConfiguration extends WsConfigurerAdapter {

@Bean
public Wss4jSecurityInterceptor securityInterceptor() throws Exception {
    Wss4jSecurityInterceptor securityInterceptor = new Wss4jSecurityInterceptor();

    securityInterceptor.setValidationActions("Signature");
    WSSConfig wssConfig = WSSConfig.getNewInstance();
    wssConfig.setValidator(new QName("http://www.w3.org/2000/09/xmldsig#", "Signature"), MySignatureTrustValidator.class);
    securityInterceptor.setWssConfig(wssConfig);

    //the rest of configuration
}

注意,MySignatureTrustValidator必须实现Validator

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

https://stackoverflow.com/questions/47419704

复制
相关文章

相似问题

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