小编典典

如何在不调用STSClient的情况下将SAML令牌直接放入JAX-WS服务

java

去年,我通过此链接为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客户端,那么这个问题也可以解决。

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


阅读 219

收藏
2020-11-26

共1个答案

小编典典

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

2020-11-26