2017-05-29 62 views
0

去年我做了JAX-WS客戶端中的Web服務this link如何把SAML令牌直接到JAX-WS的服務,而無需調用STSClient

此WebService使用STS service獲得SAML令牌並使用它來訪問主網絡服務。我使用apache cxf的wsdl2java爲這個webservice生成JAX-WS客戶端。一切都很好。

最近他們已經更新了他們的STS服務端點。 This新的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客戶端,那麼這個問題也可以解決。

任何幫助或建議將認識到我們

回答

1

的SHA-256散列算法通常由需要它(例如Basic256Sha256)的AlgorithmSuite策略集。然而,我看到他們仍在使用「Basic256」的政策。 CXF允許您通過一些配置屬性來配置RSA-SHA256(例如,請參閱'ws-security.asymmetric.signature.algorithm'http://cxf.apache.org/docs/ws-securitypolicy.html)。您可以直接在STSClient上設置ActAs對象/元素。

+0

我不確定如何在客戶端代碼中放置ActAs元素。如果您可以提供一些更好的細節方式,例子會很棒。現在我正在覆蓋默認的JAX-WS代碼來實現這個目標。我的意思是我試圖覆蓋他們的代碼。 –

+0

查看此配置:https://github.com/apache/cxf/blob/master/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/username_actas/cxf-client .XML - 在「ACTAS」屬性是指一類https://github.com/apache/cxf/blob/master/rt/ws/security/src/main/java/org/apache/cxf/ws/security/信任/委派/ WSSUsernameCallbackHandler.java - 這增加了一個用戶名令牌元素變成「ACTAS」 –

+0

感謝您的建議。我會測試一下。 –