Suk*_*hah 11
我在六年后发布了这个答案,但说实话,没有一个帖子提供完整而简洁的解决方案.您所需要的只是spring-ws-core(2.1.4.RELEASE +)和spring-we-security(2.2.4.RELEASE +)依赖项.下一步是将自定义密钥库和信任库配置为bean,然后在spring配置中将它们注入Web服务模板.
<bean id="myKeyStore" class="org.springframework.ws.soap.security.support.KeyStoreFactoryBean">
<property name="location" value="file:/tmp/config/my-keystore.jks"/>
<property name="password" value="password"/>
</bean>
<bean id="myTrustStore" class="org.springframework.ws.soap.security.support.KeyStoreFactoryBean">
<property name="location" value="file:/tmp/config/my-truststore.jks"/>
<property name="password" value="different_password"/>
</bean>
<bean id="template" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender">
<property name="trustManagers">
<bean class="org.springframework.ws.soap.security.support.TrustManagersFactoryBean">
<property name="keyStore" ref="mytrustStore" />
</bean>
</property>
<property name="keyManagers">
<bean class="org.springframework.ws.soap.security.support.KeyManagersFactoryBean">
<property name="keyStore" ref="myKeyStore" />
<property name="password" value="password" />
</bean>
</property>
</bean>
</property>
</bean>Run Code Online (Sandbox Code Playgroud)
总之,不需要编写任何代码,使用spring配置可以轻松实现用例.
我认为您可以使用 KeyStore.Builder 以编程方式加载基于密钥库:
因此,也许有一个具有Web服务模板或扩展它的类,然后在Spring配置中设置密钥库的文件路径,并使其成为一个初始化bean(Spring 3中的@PostConstruct?),然后加载密钥库。
File f = new File(keyStorePath);
KeyStore.Builder builder = KeyStore.Builder.newInstance("type",provider,file,protection);
KeyStore keystore = builder.getKeyStore();
Run Code Online (Sandbox Code Playgroud)
好的 - 要实际将它与您的 webservicetemplate 一起使用,我认为它必须基于密钥库回调,如此处记录:http://static.springsource.org/spring-ws/sites/1.5/reference/html/security.html#d0e4462
或者也许可以通过使用 spring org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender 来设置 keystoremanager 。然后您的 Web 服务模板就可以使用它。
有点像这样:
<bean id="template" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender">
<property name=""></property>
</bean>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
华泰
| 归档时间: |
|
| 查看次数: |
15636 次 |
| 最近记录: |