使用 WebSphere、Spring-WS 和 WSS4J 的 WebService 证书验证

Posted

技术标签:

【中文标题】使用 WebSphere、Spring-WS 和 WSS4J 的 WebService 证书验证【英文标题】:WebService Certificate Validation using WebSphere, Spring-WS and WSS4J 【发布时间】:2011-11-21 02:04:45 【问题描述】:

我正在开发一个使用 Spring-WS 2.0 提供 SOAP WebServices 的 webapp。 WebService 请求需要使用在服务器上经过验证的证书进行签名。为了做到这一点 WSS4J 并使用了信任库 - 这里是 spring-config:

<bean class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
    <property name="validationActions" value="Signature" />
    <property name="validationSignatureCrypto">
      <bean class="org.springframework.ws.soap.security.wss4j.support.CryptoFactoryBean">
        <property name="keyStorePassword" value="pass"/>
        <property name="keyStoreLocation" value="location"/>
      </bean>
    </property>
</bean>

应用程序应部署到 WebSphere 7,主要要求是,信任库不应随应用程序一起提供,而应由 Application Server 提供。 有人知道我可以如何实现,WebSphere 要么提供信任库,要么如何配置 WebSphere 以执行安全授权?主要的挑战似乎是,使用 Spring-WS 而不是使用 WebSphere 的 WebServices 工具......

【问题讨论】:

【参考方案1】:

我不使用 Spring-WS,所以不知道它的细节。

WAS 有一个信任库,用于存储受信任的签署者证书列表。

如果您愿意,密钥库和信任库可以保持@多个级别(例如节点、单元等)。

有关详细信息,您可以查看公开的 PPT

http://www.websphereusergroup.org.uk/wug/files/presentations/25/25_3_WAS61SecUpdate.pdf.

我不知道您使用的 WAS 版本是 WAS 6.1,而 WAS 7.x 是目前使用最广泛的版本!

HTH 芒露

【讨论】:

好的 - 一旦我将证书上传到密钥/信任库,我如何在我的应用程序中获取它? 嗨 Odalf,我不确定我是否理解您的评论。为什么您的应用程序需要您的应用程序中的证书。您将身份验证委托给 WAS 运行时(这是我从您的问题中理解的)。如果您可以改写您的查询,我可以尝试提供帮助。

以上是关于使用 WebSphere、Spring-WS 和 WSS4J 的 WebService 证书验证的主要内容,如果未能解决你的问题,请参考以下文章

来自 WSDL 的 Spring-ws 客户端

Spring-WS为SOAP版本1.2设置SOAPAction头

Spring-WS:具有 WSDL 多节点分类的 SimpleWsdl11Definition

Spring-ws自动生成WSDL时生成java类的最佳方式

如何更改Spring-WS的“SOAP-ENV”默认前缀

@PayloadRoot vs @Action vs @SoapAction 在 Spring-WS 中