Bar*_*rts 47 java spring spring-ws x509
我正在尝试向现有的Web服务发送请求.此网络服务不受我的约束.此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>
Run Code Online (Sandbox Code Playgroud)
我试图通过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>
Run Code Online (Sandbox Code Playgroud)
Xws-security有两种版本:
<dependency>
<groupId>com.sun.xml.wsit</groupId>
<artifactId>xws-security</artifactId>
<version>1.3.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和
<dependency>
<groupId>com.sun.xml.wss</groupId>
<artifactId>xws-security</artifactId>
<version>3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
第一个由Spring WS Security使用.第二个是遗产.
在xws-security中应用我的XWSS配置是在名为BinarySecurityToken的类中完成的.BinarySecurityToken有一个名为的字段
valueType
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
MessageConstants类(甚至)没有X509PKIPathv1的静态.当我运行我的代码时,我得到了预期的结果:
Unsupported value type: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
Run Code Online (Sandbox Code Playgroud)
我能够查看遗产的源代码com.sun.xml.wss.xws-security:3.0
.尽管我付出了努力,但我还没有找到它的源代码com.sun.xml.wsit.xws-security-1.3.1
.不过我相信代码是一样的.我尝试了两个库,两者都给了我相同的例外.我尝试了它,使用默认的spring-ws-security并对两个库使用显式依赖声明(一次一个).
我的问题:
我考虑过重写BinarySecurityToken,但这可能也意味着重写了DSIG中签名处理器的X509签名.
归档时间: |
|
查看次数: |
2065 次 |
最近记录: |