去年我在此链接中为 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>
另外,这里有细微的差别。我现在认为有两种方法:
- 如果我可以将旧代码更改为 STS 客户端发送具有这些值的请求。我尝试过但没有成功。
- 他们提供了一些支持从 STS 客户端获取 SAML 断言令牌和证明令牌的代码。如果我可以将 SAML 断言令牌直接放入我的 JAX-WS 客户端,那么这个问题也解决了。
我们将不胜感激任何帮助或建议