Configuration des méthodes de vérification de signature des réponses pour le client

Utilisez les API WSSVerification et WSSVerifyPart pour choisir les méthodes de signature. Les méthodes de vérification de signature des demandes incluent les méthodes d'algorithme de synthèse (digest) et de transport.

Avant de commencer

Pour configurer les informations de vérification de la signature afin de sécuriser les messages SOAP, vous devez réaliser les tâches d'algorithme suivantes :
  • Utilisez l'API WSSVerification pour configurer les méthodes de canonisation et de signature.
  • Utilisez l'API WSSVerifyPart pour configurer les méthodes de synthèse (digest) et de transformation.
pour configurer les méthodes d'algorithme à utiliser lors de la configuration du client pour la signature des demandes.

Pourquoi et quand exécuter cette tâche

Le tableau ci-après indique la finalité de ces informations. Certaines de ces définitions reposent sur la spécification Signature XML disponible sur le site web http://www.w3.org/TR/xmldsig-core.

Tableau 1. Méthodes de vérification de signature. Utilisation des informations de vérification de la signature pour la sécurisation des messages.
Nom de la méthode Objectif
Algorithme de synthèse (digest) S'applique aux données après les opérations de conversion éventuelles pour générer l'élément <DigestValue>. La signature de l'élément <DigestValue> lie le contenu de la ressource à la clé du signataire. L'algorithme sélectionné pour la configuration de l'émetteur de la demande client doit correspondre à celui dans la configuration du destinataire de cette demande.
Algorithme de transformation S'applique à l'élément <Transform>.
Algorithme de signature Indique l'URI (Uniform Resource Identifier) de la méthode de vérification de la signature.
Algorithme de canonisation Indique l'URI (Uniform Resource Identifier) de la méthode de canonisation.

Une fois le client configuré pour la signature numérique du message, vous devez le configurer pour vérifier cette signature. Vous pouvez utiliser les API WSS ou configurer des ensembles de règles à l'aide de la console d'administration pour vérifier la signature numérique et choisir les algorithmes de vérification et des portions vérifiées. Si vous utilisez les API WSS pour la configuration, servez-vous de WSSVerification et de WSSVerifyPart pour préciser les portions du message signées de façon numérique qui doivent être vérifiées, ainsi que les méthodes d'algorithme à employer lors de la configuration du client pour la signature des demandes.

Les API WSSVerification et WSSVerifyPart suivent les étapes ci-après pour configurer les méthodes d'algorithme de vérification de la signature et des portions vérifiées :

Procédure

  1. Pour la liaison de destinataire, l'API WSSVerification indique les méthodes de signature permettant la vérification de celle-ci. WebSphere Application Server prend en charge les méthodes de signature préconfigurées suivantes :
    • WSSVerification.RSA_SHA1 (la valeur par défaut) : http://www.w3.org/2000/09/xmldsig#rsa-sha1
    • WSSVerification.HMAC_SHA1 : http://www.w3.org/2000/09/xmldsig#hmac-sha1
    La méthode de signature numérique DSA-SHA1 (http://www.w3.org/2000/09/xmldsig#dsa-sha1) n'est pas prise en charge.
  2. Pour la liaison de destinataire, l'API WSSVerification indique la méthode de canonisation permettant la vérification de la signature. WebSphere Application Server prend en charge par défaut les méthodes de canonisation préconfigurées suivantes :
    • WSSVerification.EXC_C14N (la valeur par défaut) : http://www.w3.org/2001/10/xml-exc-c14n#
    • WSSVerification.C14N : http://www.w3.org/2001/10/xml-c14n#
  3. Pour la liaison de destinataire, l'API WSSVerifyPart indique la méthode de synthèse (digest) si besoin est. WebSphere Application Server prend en charge les algorithmes de méthode de synthèse (digest) suivants pour la vérification des portions signées :
    • WSSVerifyPart.SHA1 (la valeur par défaut) : http://www.w3.org/2000/09/xmldsig#sha1
    • WSSVerifyPart.SHA256 : http://www.w3.org/2001/04/xmlenc#sha256
    • WSSVerifyPart.SHA512 : http://www.w3.org/2001/04/xmlenc#sha512
  4. Pour la liaison de destinataire, l'API WSSVerifyPart indique la méthode de transformation. WebSphere Application Server prend en charge les algorithmes de transformation suivants pour la vérification de portions :
    • WSSVerifyPart.TRANSFORM_EXC_C14N (la valeur par défaut) : http://www.w3.org/2001/10/xml-exc-c14n#
    • WSSVerifyPart.TRANSFORM_XPATH2_FILTER : http://www.w3.org/2002/06/xmldsig-filter2
    • WSSVerifyPart.TRANSFORM_STRT10 : http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
    • WSSVerifyPart.TRANSFORM_ENVELOPED_SIGNATURE : http://www.w3.org/2000/09/xmldsig#enveloped-signature

    Pour les API WSS, WebSphere Application Server ne prend pas en charge ces algorithmes :

    • http://www.w3.org/2002/07/decrypt#XML
    • http://www.w3.org/TR/1999/REC-xpath-19991116

Résultats

Vous avez indiqué la méthode à utiliser lors de la vérification d'une signature numérique lorsque le client envoie un message.

Exemple

L'exemple de code d'API WSS suivant indique les informations de vérification, le corps comme portion à vérifier, HMAC_SHA1 comme méthode de signature, C14N et EXC_C14N comme candidats des méthodes de canonisation, TRANSFORM_STRT10 comme méthode de transformation et SHA256 comme méthode de synthèse (digest).

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

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

// Générer l'instance WSSConsumingContext
   WSSConsumingContext concont = factory.newWSSConsumingContext();

// Générer la liste de certificats
   String certpath = "intca2.cer";
// Emplacement du fichier de certificat X509
      X509Certificate x509cert = null;
      try {
            InputStream is = new FileInputStream(certpath);
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
	          x509cert = (X509Certificate)cf.generateCertificate(is);
      } catch(FileNotFoundException e1){
	         throw new WSSException(e1);
      } catch (CertificateException e2) {
	         throw new WSSException(e2);
      }

      Set<Object> eeCerts = new HashSet<Object>();
      eeCerts.add(x509cert);  
// Créer certStore
   java.util.List<CertStore> certList = new 
        java.util.ArrayList<CertStore>();
   CollectionCertStoreParameters certparam = new 
        CollectionCertStoreParameters(eeCerts);
   CertStore cert = null;
      try {
	           cert = CertStore.getInstance("Collection", 
                                           certparam, 
                                          "IBMCertPath");
      } catch (NoSuchProviderException e1) {
	          throw new WSSException(e1);
      } catch (InvalidAlgorithmParameterException e2) {
	          throw new WSSException(e2);
      } catch (NoSuchAlgorithmException e3) {
	          throw new WSSException (e3);
      }
      if(certList != null ){
	           certList.add(cert);
      }

// Générer le gestionnaire d'appel
   X509ConsumeCallbackHandler callbackHandler = new 
      X509ConsumeCallbackHandler(
                                 "dsig-receiver.ks", 
                                 "jks",
                                 "server".toCharArray(), 
                                 certList, 
                                 java.security.Security.getProvider(
                                       "IBMCertPath")
                                 );

// Générer l'instance WSSVerification
   WSSVerification ver = factory.newWSSVerification(X509Token.class, 
                                                    callbackHandler);

// Définir un ou plusieurs candidats de la méthode de signature utilisée pour 
//    la vérification (étape 1)
// DEFAULT : WSSVerification.RSA_SHA1
      ver.addAllowedSignatureMethod(WSSVerification.HMAC_SHA1);

// Définir un ou plusieurs candidats de la méthode de canonisation utilisée pour 
//    la vérification (étape 2)
// DEFAULT : WSSVerification.EXC_C14N 
      ver.addAllowedCanonicalizationMethod(WSSVerification.C14N);
      ver.addAllowedCanonicalizationMethod(WSSVerification.EXC_C14N);

// Définir la portion que WSSVerifyPart doit indiquer
   WSSVerifyPart verPart = factory.newWSSVerifyPart();

// Définir la portion que le mot clé doit indiquer
      verPart.setRequiredVerifyPart(WSSVerification.BODY);

// Définir les candidats des méthodes de synthèse (digest) à utiliser pour la vérification (étape 3)
// PAR DEFAUT : WSSVerifypart.TRANSFORM_EXC_C14N : String
      verPart.addAllowedTransform(WSSVerifyPart.TRANSFORM_STRT10);

// Définir les candidats des méthodes de synthèse (digest) à utiliser pour la vérification (étape 4)
// DEFAULT : WSSVerifyPart.SHA1
      verPart.addAllowedDigestMethod(WSSVerifyPart.SHA256);

// Définir WSSVerifyPart à WSSVerification
      ver.addRequiredVerifyPart(verPart);

// Ajouter WSSVerification à WSSConsumingContext
   concont.add(ver);

// Valider l'en-tête WS-Security
concont.process(msgcontext);

Que faire ensuite

Vous avez fini de configurer les algorithmes de vérification de la signature. Configurez ensuite les algorithmes de chiffrement et de déchiffrement si ce n'est pas déjà fait. Sinon, configurez si besoin est les informations de jeton de sécurité.


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_confwssverifyalgorithms
Nom du fichier : twbs_confwssverifyalgorithms.html