Ajout de portions signées à l'aide de l'API WSSSignPart

Vous pouvez sécuriser les messages SOAP, sans utiliser d'ensemble de règles de configuration, en utilisant les API Web Services Security (WSS API). Pour configurer des portions signées pour les liaisons du générateur de la demande (côté client), utilisez l'API WSSSignPart afin de conserver l'intégrité des messages et de configurer les algorithmes de synthèse (digest) et de transformation. L'API WSSSignPart se trouve dans le package com.ibm.websphere.wssecurity.wssapi.signature.

Avant de commencer

Vous pouvez utiliser l'API WSS ou configurer des ensembles de règles à l'aide de la console d'administration pour configurer les informations de signature. Pour sécuriser des messages SOAP à l'aide des informations de signature, vous devez exécuter l'une des tâches suivantes :

  • Configurer les informations de signature.
  • Configurer les portions signées, si besoin est.

Pourquoi et quand exécuter cette tâche

WebSphere Application Server utilise les informations de signature du générateur par défaut pour signer les portions de message et utilise la signature numérique XML avec les algorithmes de synthèse (digest) et de transformation existants (par exemple, SHA1 ou TRANSFORM_EXC_C14N).

Les informations de signature définissent les contraintes d'intégrité appliquées aux messages générés. Les portions signées sont utilisées pour protéger l'intégrité des messages. Vous pouvez définir les portions signées à ajouter pour la protection de l'intégrité des messages.

Le tableau suivant montre les portions signées obligatoires lorsque la contrainte de sécurité de signature numérique (intégrité) est définie :

Tableau 1. Informations sur les portions signées. Utilisation des portions signées pour la sécurisation des messages.
Portions signées Description
keyword Ajoute, à l'aide de mots clé, les portions signées. Pour les portions signées, WebSphere Application Server prend en charge les mots clés suivants :
  • BODY
  • ADDRESSING_HEADERS
  • TIMESTAMP
Les en-têtes WS-Addressing ne sont pas chiffrés mais peuvent être signés.
xpath Ajoute les portions signées obligatoires à l'aide d'une expression XPath.
header Ajoute l'en-tête, indiqué par QName, comme portion signée.
timestamp Ajoute un objet WSSTimestamp comme portion signée. Lorsqu'elles sont fournies, les informations sur l'horodatage indiquent à quel moment le message est généré et expire.

Il est possible d'indiquer diverses parties du message dans la protection de celui-ci pour la demande côté générateur. WSSSignPart permet d'ajouter un algorithme de transformation, de définir une méthode de synthèse (digest), de définir des objets comme cibles et d'indiquer les portions signées (comme le corps SOAP, l'en-tête WS-Addressing et des informations sur l'horodatage).

Certains comportements par défaut s'appliquent aux informations de signature. La façon la plus simple d'utiliser l'API WSSSignPart est d'appliquer le comportement par défaut (voir l'exemple de code). Le comportement par défaut des portions signées inclut :

Tableau 2. Comportement par défaut des portions signées. Certaines caractéristiques des portions signées sont configurées par défaut.
Choix de signature Comportement par défaut
Parties de message SOAP à signer

WebSphere Application Server prend en charge les parties du message SOAP suivantes en vue de les faire signer et de les utiliser pour la protection du message :

  • WSSSignature.BODY
  • WSSSignature.ADDRESSING_HEADERS
  • WSSSignature.TIMESTAMP
Méthode de synthèse (digest) à utiliser

Définit la méthode d'algorithme de synthèse. L'algorithme de la méthode de synthèse (digest) indiqué dans l'élément <DigestMethod> est utilisé dans l'élément <SigningInfo>t.

WebSphere Application Server prend en charge les méthodes de synthèse (digest) préconfigurées suivantes :
  • WSSSignPart.SHA1 (la valeur par défaut) : http://www.w3.org/2000/09/xmldsig#sha1
  • WSSSignPart.SHA256 : http://www.w3.org/2001/04/xmlenc#sha256
  • WSSSignPart.SHA512 : http://www.w3.org/2001/04/xmlenc#sha512
Algorithmes de transformation à utiliser Ajoute la méthode de transformation. L'algorithme de transformation est précisé dans l'élément <Transform> et indique celui utilisé pour la signature.

WebSphere Application Server prend en charge les algorithmes de transformation préconfigurés suivants :

  • WSSSignPart.TRANSFORM_EXC_C14N (la valeur par défaut) : http://www.w3.org/2001/10/xml-exc-c14n#
  • WSSSignPart.TRANSFORM_XPATH2_FILTER : http://www.w3.org/2002/06/xmldsig-filter2

    Utilisez cette méthode de transformation pour vérifier la conformité avec le profil de sécurité de base (BSP).

  • WSSSignPart.TRANSFORM_STRT10 : http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
  • WSSSignPart.TRANSFORM_ENVELOPED_SIGNATURE : http://www.w3.org/2000/09/xmldsig#enveloped-signature

Procédure

  1. Pour activer la sécurité des services Web à l'aide de l'API WSS (WSSSignPart), assurez-vous d'abord que le serveur d'applications est installé.
  2. Utilisez l'API WSSSignPart pour signer les parties du message et pour indiquer les algorithmes dans un message SOAP. L'API WSS pour les parties signées suit la procédure ci-après :
    1. Utilise WSSFactory.getInstance() pour obtenir l'instance d'implémentation d'API WSS.
    2. Crée l'instance WSSGenerationContext à partir de l'instance WSSFactory.
    3. Création de l'objet SecurityToken à partir de WSSFactory pour configurer la clé pour la signature.
    4. Création de WSSSignature à partir de l'instance WSSFactory à l'aide de SecurityToken.
    5. Crée WSSSignPart à partir de l'instance WSSFactory.
    6. Définition de la partie à signer et la méthode de synthèse (digest) ou de transformation indiquée à l'étape g ou h si celle par défaut n'est pas appropriée.
    7. Définition de la méthode de synthèse (digest) si celle par défaut n'est pas appropriée.
    8. Définition de la méthode de transformation si celle par défaut n'est pas appropriée.
    9. Ajout de WSSSignPart à WSSSignature. Une fois WSSSignPart défini à WSSSignature, les portions par défaut à signer indiquées dans WSSSignature sont ignorées.
    10. Ajout de WSSSignature à WSSGenerationContext.
    11. Appelle WSSGenerationContext.process() avec le contexte SOAPMessageContext.

Résultats

Vous avez terminé la procédure de configuration des portions signées pour la section de générateur des fichiers de liaison. S'il existe une condition d'erreur, une WSSException est fournie. Si l'opération aboutit, la méthode WSSGenerationContext.process() est appelée et la sécurité des services Web est appliquée au message SOAP.

Exemple

L'exemple suivant fournit l'exemple de code utilisant toutes les méthodes définies dans l'API WSSSignPart :

// Obtenir le contexte de message
   Object msgcontext = getMessageContext();

// Générer l'instance WSSFactory (étape : a)
   WSSFactory factory = WSSFactory.getInstance();		

// Générer l'instance WSSGenerationContext (étape : b)
   WSSGenerationContext gencont = factory.newWSSGenerationContext();
		
// Générer le gestionnaire d'appel
   X509GenerateCallbackHandler callbackHandler = new 
      X509GenerateCallbackHandler
      "",
      "dsig-sender.ks",
      "jks", 
      "client".toCharArray(), 
      "soaprequester", 
      "client".toCharArray(), 
      "CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP", null);

// Générer le jeton de sécurité utilisé dans la signature (étape : c)
   SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);

// Générer l'instance WSSSignature (étape : d)
   WSSSignature sig = factory.newWSSSignature(token);

// Définir la partie indiquée par WSSSignPart (étape : e)
   WSSSignPart sigPart = factory.newWSSSignPart();

// Définir la partie indiquée par WSSSignPart (étape : f)
   sigPart.setSignPart(WSSSignature.BODY);

// Définir la méthode de synthèse (digest) indiquée par WSSSignPart (étape : g)
   sigPart.setDigestMethod(WSSSignPart.SHA256);

// Définir la méthode de transformation indiquée par WSSSignPart (étape : h)
   sigPart.setTransformMethod(WSSSignPart.TRANSFORM_STRT10);

// Ajouter la partie indiquée par WSSSignPart (étape : i)
   sig.addSignPart(sigPart);

// Ajouter WSSSignature ç WSSGenerationContext (étape : j)
   gencont.add(sig);
		
// Générer l'en-tête WS-Security (étape : k)
gencont.process(msgcontext);
Remarque : X509GenerationCallbackHandler a besoin du mot de passe de clé car la clé privée est utilisée pour la signature.

Que faire ensuite

Utilisez l'API WSSVerifyPart ou configurez des ensembles de règles à l'aide de la console d'administration pour vérifier les portions signées côté destinataire.


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_confsignaturepartgen
Nom du fichier : twbs_confsignaturepartgen.html