2

去年我在此链接中为 Web 服务制作了 JAX-WS 客户端

此 Web 服务使用STS 服务来获取 SAML 令牌并使用它来访问主 Web 服务。我使用 apache cxf 的 wsdl2java 为这个 web 服务生成 JAX-WS 客户端。一切都很好。

最近他们更新了他们的 STS 服务端点。这个新的 STS 服务端点。其中有不同的签名和摘要算法。它在请求正文中有一些额外的元素。

我试图修改当前代码,使其支持新的 STS 服务。但是我的代码正在发送相同的 RequestSecurityToken 请求。我的意思是它不适合新的要求。我试图采用这一点,但我不能那样做。

新的 STS 服务需要http://www.w3.org/2001/04/xmldsig-more#rsa-sha256作为新的签名方法和http://www.w3.org/2001/04/xmlenc#sha256作为新的摘要算法。此外,它还需要请求正文中的以下元素:

    <tr:ActAs xmlns:tr="http://docs.oasis-open.org/ws-sx/ws-trust/200802">
<v13:RelationshipToken xmlns:v13="http://vanguard.business.gov.au/2016/03" ID="1bc9a44e-dccd-49e2-8f29-40d7b1257325">
<v13:Relationship v13:Type="OSPfor">
<v13:Attribute v13:Name="SSID" v13:Value="1234567895"/>
</v13:Relationship>
<v13:FirstParty v13:Scheme="uri://abr.gov.au/ABN" v13:Value="27809366375"/>
<v13:SecondParty v13:Scheme="uri://abr.gov.au/ABN" v13:Value="89567587874"/>
</v13:RelationshipToken>
</tr:ActAs>

另外,这里有细微的差别。我现在认为有两种方法:

  1. 如果我可以将旧代码更改为 STS 客户端发送具有这些值的请求。我尝试过但没有成功。
  2. 他们提供了一些支持从 STS 客户端获取 SAML 断言令牌和证明令牌的代码。如果我可以将 SAML 断言令牌直接放入我的 JAX-WS 客户端,那么这个问题也解决了。

我们将不胜感激任何帮助或建议

4

2 回答 2

1

SHA-256 摘要算法通常使用需要它的算法套件策略(例如 Basic256Sha256)来设置。我在政策中看到他们仍在使用“Basic256”。CXF 允许您通过一些配置属性来配置 RSA-SHA256(例如,请参见此处http://cxf.apache.org/docs/ws-securitypolicy.html的“ws-security.asymmetric.signature.algorithm” )。您可以直接在 STSClient 上设置 ActAs 对象/元素。

于 2017-05-30T10:58:51.277 回答
0

我收到“验证消息的安全性时出错”。在使用 Metro 2.3.1 时,我必须进行两项更改才能解决此问题 -

  1. 在STS wsdl中,需要提到这样的签名算法---

    sp:AlgorithmSuite 签名算法="SHA256withRSA"

  2. 在USI wsdl中,需要将AlgorithmSuite从Basic256Sha256Rsa15改为Basic256

于 2020-03-05T05:41:05.687 回答