[英]Support for X509PKIPathv1 in xws-security for Spring-WS
我正在尝试向现有网络服务发送请求。 这个网络服务不是由我管理的。 此 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 委托给 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(等等)。 但是,正如此设置者所述:
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
的源代码。 但是我相信代码是一样的。 我尝试了两个图书馆,都给了我同样的例外。 我尝试了它,使用默认的 spring-ws-security 并使用对两个库的显式依赖声明(一次一个)。
我的问题:
我已经考虑过重写 BinarySecurityToken,但这可能也意味着在 DSIG 中重写 SignatureProcessor 的 X509 签名。
valueType 可以是 #X509v3, #X509PKIPathv1
可以在此处找到XWS-SecurityIntro4您是否专门尝试过这些值而不是 URL?
此拉取请求将启用使用 X509PKIPathv1 的能力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.