2017-05-29 8 views
0

année dernière, je fait le client JAX-WS pour un service Web dans this linkComment mettre SAML jeton directement en service JAX-WS sans appeler STSClient

Ce webservice utiliser un STS service pour obtenir SAML jeton et l'utiliser pour accéder principale service Web. J'utilise wsdl2java de apache cxf pour générer le client JAX-WS pour ce webservice. Tout allait bien.

Récemment, ils ont mis à jour leur point de terminaison de service STS. This nouveau point de terminaison de service STS. Qui a un algorithme de signature et de digestion différent. Il a un élément supplémentaire dans le corps de la requête.

J'ai essayé de modifier le code actuel afin qu'il prenne en charge le nouveau service STS. Mais mon code envoie la même requête RequestSecurityToken. Je veux dire qu'il n'adopte pas pour la nouvelle exigence. J'ai essayé d'adopter cela mais je ne pouvais pas faire ça.

Nouveau service STS requis http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 comme nouvelle méthode de signature et http://www.w3.org/2001/04/xmlenc#sha256 comme nouvel algorithme de résumé. De plus, il fallait l'élément suivant dans le corps de la demande:

<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> 

De plus, il existe des différences mineures ici. J'ai deux façons maintenant je pense:

  1. Si je peux changer l'ancien code à STS demande d'envoi du client avec les valeurs. que j'ai essayé et pas réussi.
  2. Ils fournissent du code qui prend en charge l'extraction du jeton d'assertion SAML et le jeton d'épreuve du client STS. Si je peux mettre le jeton d'assertion SAML directement dans mon client JAX-WS, ce problème est également résolu.

Toute aide ou suggestion sera nous apprécié à

Répondre

1

L'algorithme digest SHA-256 est normalement réglé en utilisant une stratégie AlgorithmSuite qui l'exige (par exemple Basic256Sha256). Je vois dans la politique qu'ils utilisent toujours "Basic256" cependant. CXF vous permet de configurer RSA-SHA256 via certaines propriétés de configuration (voir par exemple 'ws-security.asymmetric.signature.algorithm' ici http://cxf.apache.org/docs/ws-securitypolicy.html). Vous pouvez définir directement l'objet/élément ActAs sur STSClient.

+0

Je ne sais pas comment mettre ActAs Element dans le code client. Si vous pouvez donner plus de détails avec un exemple, ce sera génial. Et maintenant je suis en train d'écraser le code JAX-WS par défaut pour atteindre cette cible. Je veux dire que j'essaie d'écraser leur code. –

+0

Voir cette configuration: https://github.com/apache/cxf/blob/master/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/username_actas/cxf-client .xml - la propriété "actAs" fait référence à une classe https://github.com/apache/cxf/blob/master/rt/ws/security/src/main/java/org/apache/cxf/ws/security/ trust/delegation/WSSUsernameCallbackHandler.java - ceci ajoute un élément UsernameToken dans "ActAs" –

+0

Merci pour votre suggestion. Je vais tester ça. –