gpt4 book ai didi

java - 在 xws-security for Spring-WS 中支持 X509PKIPathv1

转载 作者:IT老高 更新时间:2023-10-28 13:03:17 25 4
gpt4 key购买 nike

我正在尝试向现有网络服务发送请求。该网络服务不受我管辖。此 Web 服务的安全策略要求我在 SOAP 请求中发送完整的证书链。我的证书链包含 3 个证书。证书链的设置没有问题,因为我能够测试它的有效性(并且已经这样做了)。

此设置的安全配置(= 在请求中发送完整的证书链)是:

<xwss:Sign id="signature">
<xwss:X509Token
certificateAlias="alias"
keyReferenceType="Direct"
valueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1" />
</xwss:Sign>

我正在尝试通过 Spring-WS 来实现这一目标. Spring-WS 使用 spring-ws-security 来保证安全性。 Spring-ws-security 委托(delegate)给 xws-security。

    <dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>2.1.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.xml.wsit</groupId>
<artifactId>xws-security</artifactId>
</exclusion>
</exclusions>
</dependency>

Xws-security 有两种风格:

    <dependency>
<groupId>com.sun.xml.wsit</groupId>
<artifactId>xws-security</artifactId>
<version>1.3.1</version>
</dependency>

    <dependency>
<groupId>com.sun.xml.wss</groupId>
<artifactId>xws-security</artifactId>
<version>3.0</version>
</dependency>

第一个由 Spring WS Security 使用。第二个是遗产。

在 xws-security 中应用我的 XWSS 配置是在一个名为 BinarySecurityToken 的类中完成的。 BinarySecurityToken 有一个名为

的字段
valueType

valueType 的 JavaDoc 说它支持 X509PKIPathv1(以及其他)。但是,正如这个 setter 所说,它不是:

    protected void setValueType(String valueType) {
if (!(MessageConstants.X509v3_NS.equals(valueType)||MessageConstants.X509v1_NS.equals(valueType))) {
log.log(Level.SEVERE,"WSS0342.valtype.invalid");
throw new RuntimeException("Unsupported value type: " + valueType);
}
this.valueType = valueType;
}

MessageConstants 类(甚至)没有 X509PKIPathv1 的静态数据。当我运行我的代码时,我得到了预期的结果:

Unsupported value type: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1

我能够查看旧版 com.sun.xml.wss.xws-security:3.0 的源代码。尽管我努力了,我还是没有找到com.sun.xml.wsit.xws-security-1.3.1的源代码。但是我相信代码是一样的。我尝试了两个库,都给了我同样的异常(exception)。我试过了,使用默认的 spring-ws-security 并使用两个库的显式依赖声明(一次一个)。

我的问题:

  1. 有没有人能够使用 xws-security 生成 X509 签名,其 valueType 为 X509PKIPathv1,keyReferenceType 为 Direct?
  2. 是否存在其他提供此功能的 xws-security 实现?还是我应该看看像 Wss4j 这样完全不同的方法?

我考虑过重写 BinarySecurityToken,但这也可能意味着在 DSIG 中重写 SignatureProcessor 的 X509 签名。

最佳答案

你遇到了有趣的问题。

据我的 Google-fu 所知,在某些项目中支持 #X509PKIPathv1(例如 Oracle's XMLSecOpen SAML ),但它并不普遍,甚至像 Soap UI don't support it 这样的应用程序也不广泛。用于 SOAP-WS。

不仅如此,其他语言/框架也同样缺乏支持,例如 Delphi.NET , IBM JRE .

你能做什么,基于 this SO尤其是 this SO正在实现您自己的 WebServiceTemplate/WebServiceMessageSender。

关于java - 在 xws-security for Spring-WS 中支持 X509PKIPathv1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12596543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com