Demande de jetons holder-of-key SAML avec une clé symétrique à partir du service de jeton de sécurité externe à l'aide des API WSS

Vous pouvez demander à un service STS (Security Token Service) externe d'émettre des jetons SAML avec la méthode de confirmation de sujet holder-of-key avec la clé symétrique chiffrée pour un service cible. Utilisez le modèle de programmation Java™ API for XML-Based Web Services (JAX-WS) et les API Web Services Security (API WSS) pour effectuer cette tâche.

Avant de commencer

On considère ici que vous connaissez le modèle de programmation JAX-WS, les API WSS, les concepts de SAML et l'utilisation des ensembles de règles pour configurer et administrer les paramètres des services Web. Procédez comme suit avant de commencer cette tâche :
  • Consultez la documentation sur la propagation des jetons holder-of-key SAML auto-générés avec une clé symétrique à l'aide des API WSS.
  • Découvrez l'utilisation des matériaux clés imbriqués dans les jetons SAML pour la protection de message en utilisant les API WSS. Votre scénario d'utilisation requiert la demande de jetons SAML à partir d'un STS externe d'utilisation de jetons SAML auto-générés.
  • Consultez la documentation sur la demande de jetons SAML sender-vouches à partir d'un STS externe à propager à l'aide des API WSS avec la protection au niveau des messages
  • Consultez la documentation sur la demande de jetons SAML sender-vouches à partir d'un STS externe à propager à l'aide des API WSS avec la protection au niveau du transport
  • Consultez la documentation sur la demande de jetons porteurs SAML à partir d'un STS externe à propager à l'aide des API WSS avec la protection au niveau du transport
  • Découvrez l'accès à un STS externe à l'aide des API WSS.

Pourquoi et quand exécuter cette tâche

Cette tâche montre un exemple de code pour demander des jetons SAML à partir d'un STS externe, avec la méthode de confirmation de sujet holder-of-key et la clé symétrique imbriquée chiffrée pour le service cible en utilisant les API WSS. Cette tâche se concentre sur l'envoi d'un message de demande WS-Trust à un STS externe pour demander des jetons holder-of-key SAML avec des clés symétriques.

Procédure

  1. Spécifiez un STS à partir duquel demander un jeton de sécurité SAML qui contient une méthode de confirmation de sujet holder-of-key, par exemple :
    com.ibm.websphere.wssecurity.wssapi.WSSFactory factory =
        com.ibm.websphere.wssecurity.wssapi.WSSFactory.getInstance();
    WSSGenerationContext gencont1 = factory.newWSSGenerationContext();
    WSSConsumingContext concont1 = factory.newWSSConsumingContext();
    HashMap<Object, Object> cbackMap1 = new HashMap<Object, Object>();
    cbackMap1.put(SamlConstants.STS_ADDRESS, "https://www.example.com/sts");  //STS URL
    cbackMap1.put(SamlConstants.SAML_APPLIES_TO, "http://myhost:9080/myService");  //Target Service
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_SOAP_VERSION, "1.1");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_WSTRUST_NAMESPACE,
                      "http://docs.oasis-open.org/ws-sx/ws-trust/200512"); 
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_COLLECTION_REQUEST,
                  "true");   //RST or RSTC
    cbackMap1.put(SamlConstants.TOKEN_TYPE, 
                  "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0");
    cbackMap1.put(SamlConstants.CONFIRMATION_METHOD, "holder-of-key");

    Pour demander un jeton de sécurité SAML holder-of-key à partir du STS, vous devez spécifier s'il faut imbriquer une clé symétrique ou une clé publique via l'élément KeyType dans une demande de confiance. Cet exemple requiert une clé symétrique, comme dans l'exemple de l'étape suivante.

  2. Spécifiez la clé symétrique à imbriquer dans les jetons de sécurité SAML, par exemple :
    cbackMap1.put(SamlConstants.KEY_TYPE,
                 "http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey");
    
    SAMLGenerateCallbackHandler cbHandler1 = new SAMLGenerateCallbackHandler(cbackMap1);
    cbHandler1.setWSSConsumingContextForTrustClient(concont1);
    cbHandler1.setWSSGenerationContextForTrustClient(gencont1);
    
    SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, cbHandler1, "system.wss.generate.saml");
    Le jeton SAML demandé contient une clé symétrique chiffrée pour le service cible. Le STS renvoie également la clé symétrique non chiffrée via l'élément WS-Trust RequestedProofToken. Voir l'exemple suivant.
    <wst:RequestedProofToken>
        <wst:BinarySecret
          xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
          wsu:Id="_27325D34CE4BCC83141288966548620">n68rFQba+XTZLNBfEc4prg==</wst:BinarySecret>
    </wst:RequestedProofToken>

    L'élément RequestedProofToken est montré ici pour votre information. Le traitement détaillé n'est pas exposé aux utilisateurs des API WSS. L'élément RequestedProofToken et la clé symétrique sont gérés par l'environnement d'exécution de sécurité des services Web, ou plus précisément par le SAMLGenerateLoginModule spécifié dans la configuration de connexion JAAS system.wss.geenrate.saml.

Résultats

Vous avez appris aux blocs de création de clé à demander des jetons SAML avec une méthode de confirmation de sujet holder-of-key et une clé asymétrique à partir d'un STS externe à l'aide des API WSS. Pour que le jeton SAML signe les messages de demande, voyez l'exemple de code de la rubrique concernant la propagation des jetons holder-of-key SAML auto-générés avec une clé symétrique en utilisant les API WSS.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configsamlhok_symmetric_sts_client
Nom du fichier : twbs_configsamlhok_symmetric_sts_client.html