Configuration des informations de signature à l'aide d'API WSS

Vous pouvez configurer des informations de signature pour les liaisons du générateur (émetteur) côté client. Ces informations servent à signer et à valider des parties d'un message, dont le corps SOAP, les informations d'horodatage et le jeton Username. Lors de la configuration du client pour la signature des demandes, indiquez les parties à signer numériquement dans un message.

Avant de commencer

WebSphere Application Server utilise la signature XML numérique avec des algorithmes existants, tels que RSA, HMAC et SHA1. La signature XML définit un grand nombre de méthodes de description des informations clé et active la définition d'une nouvelle méthode. Avant de suivre cette procédure, familiarisez-vous avec la signature numérique XML permettant de signer et de vérifier des signatures numériques pour des contenus numériques.

Pourquoi et quand exécuter cette tâche

Avec l'ajout d'une signature XML dans les messages SOAP, les opérations ci-dessous sont effectuées. intégrité des messages et authentification L'intégrité désigne la signature numérique, alors que la confidentialité fait référence au chiffrement. L'intégrité limite le risque d'altération des données lors de leur transmission sur Internet. WebSphere Application Server utilise les informations de signature du générateur par défaut pour signer les parties du message, comme le corps, l'horodatage et le jeton Username.

Pour les informations de signature, vous devez indiquer ce qui suit :
  • les parties du message à signer,
  • les informations relatives aux clés référencées par celles pour les clés de signature,
  • les algorithmes de signature.

WebSphere Application Server fournit les valeurs par défaut des liaisons. Toutefois, un administrateur doit modifier les valeurs par défaut pour le cas d'un environnement de production.

L'API WSSSignature configure les portions suivantes comme portions signées :

Tableau 1. Portions signées préconfigurées. Utilisation des informations de signature pour valider les portions d'un message.
Partie Description
Objet de jeton de sécurité Cet objet authentifie le client. Si cette option est indiquée, le message est signé. Si vous avez sélectionné une méthode d'authentification pour la configuration de connexion, vous pouvez associer une signature numérique au message en utilisant un jeton de sécurité.
Objet WSSTimestamp Cet objet ajoute un horodatage au message. L'élément timestamp (horodatage) détermine si le message est valide en fonction de l'heure à laquelle il a été envoyé et reçu.
Objet de la portion WSSSignature Cet objet ajoute les portions signées à un message.
En-tête SOAP et QName comme cible Cette portion signée ajoute l'en-tête, indiqué par QName, comme portion à vérifier.

Les API WSS permettent d'employer des mots clés ou une expression XPath pour indiquer les portions signées du message. WebSphere Application Server prend en charge l'utilisation des mots clés suivants :

Tableau 2. Mots clés pris en charge pour les portions signées. Les mots clés servent à définir quelles portions d'un message sont signées.
Mot clé Références
ADDRESSING_HEADERS En-têtes Web Services Addressing (WS-Addressing).
BODY Corps du message SOAP. Portion du message contenant les données utilisateur.
TIMESTAMP Informations sur l'horodatage de création et d'expiration.

Les API Web Services Security API (API WSS) servent à configurer les informations de signature pour la section du générateur de demandes (côté client) du fichier de liaison. Pour configurer les informations de signature côté client, utilisez les API WSS ou configurez des ensembles de règles pour la signature à l'aide de la console d'administration.

Si vous effectuez la configuration à l'aide des API WSS, les API WSSSignature et WSSSignPart réalisent les tâches suivantes pour indiquer les portions du message à signer de façon numérique lors de la configuration du client pour la signature du générateur de demandes :

Procédure

  1. L'API WSSSignature ajoute les portions requises du message SOAP à signer de façon numérique. Vous pouvez utiliser un mot clé ou une expression XPath pour indiquer les portions chiffrées obligatoire.
  2. L'API WSSSignature définit l'algorithme de signature. L'algorithme de signature par défaut est RSA_SHA1. WebSphere Application Server prend en charge les algorithmes préconfigurés suivants :

    WebSphere Application Server ne prend pas en charge l'algorithme suivant pour DSA-SHA1: http://www.w3.org/2000/09/xmldsig#dsa-sha1. Vous ne pouvez pas utiliser l'algorithme DSA-SHA1 si vous voulez respecter le profil de sécurité de base (BSP).

    Tout élément ds :SignatureMethod/@Algorithm dans une signature repose sur une clé symétrique et doit avoir la valeur RSA-SHA1 ou HMAC-SHA1.

    L'algorithme indiqué pour la configuration du générateur de la demande doit correspondre à celui pour la configuration du destinataire de la demande.

  3. L'API WSSSignature définit la méthode de canonisation. La méthode de signature par défaut est EXC_C14N. WebSphere Application Server prend en charge les algorithmes préconfigurés suivants :
    • URI de l'algorithme de canonisation exclusive EXC_C14N : http://www.w3.org/2001/10/xml-exc-c14n#.
    • URI de l'algorithme de canonisation inclusive C14N : http://www.w3.org/2001/10/xml-c14n#.

    L'algorithme de canonisation spécifié pour le générateur doit correspondre à celui défini pour le destinataire.

  4. L'API WSSSignature ajoute un jeton de sécurité. L'API ajoute des informations sur le jeton de sécurité à utiliser pour la signature, comme :
    • la classe pour le jeton de sécurité,
    • le gestionnaire d'appel,
    • le nom de la configuration de connexion JAAS.
  5. L'API WSSSignature définit le type de jeton de sécurité et celui de référence de jeton. WebSphere Application Server prend en charge les références de jeton préconfigurées suivantes :
    • SecurityToken.REF_STR

      Représente la référence de jeton de sécurité comme type de référence de jeton.

    • SecurityToken.REF_KEYID

      Représente la référence d'identificateur de clé comme type de référence de jeton.

    • SecurityToken.REF_EMBEDDED

      Représente la référence imbriquée comme type de référence de jeton.

    • SecurityToken.REF_THUMBPRINT

      Représente la référence d'empreinte digitale comme type de référence de jeton.

  6. Si SecurityToken.REF_KEYID est défini comme le type de référence de jeton, l'API WSSSignature définit le type de signature des informations de clé et configure les informations de clé référencées par les références correspondantes. WebSphere Application Server prend en charge les éléments suivants :
    • indication que l'élément KeyInfo n'est pas signé,
    • indication que l'élément <KeyInfo> entier est signé,
    • indication que les éléments enfants <Keyinfochildelements> de l'élément <KeyInfo> sont signés.

    Si vous n'indiquez pas l'un des types de signature précédents, WebSphere Application Server précise que l'élément <KeyInfo> entier est signé par défaut.

    Si vous sélectionnez Keyinfo ou Keyinfochildelements, puis http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform comme algorithme de transformation dans une étape ultérieure, WebSphere Application Server signe également le jeton référencé.

    Le type de signature des informations de clé du gestionnaire doit correspondre au type de signature du destinataire.

  7. L'API WSSSignature indique si la confirmation de signature doit être demandée. La spécification OASIS Web Services Security (WS-Security) version 1.1 détermine l'utilisation de la confirmation de signature. Si vous utilisez WS-Security version 1.0, cette fonction n'est pas disponible.

    La valeur de confirmation de la signature est stockée pour valider cette confirmation une fois le message de réception retourné. Cette méthode est appelée si le message de réponse doit associer la confirmation de signature au message SOAP.

  8. L'API WSSSignPart indique la référence de la partie. La référence de partie indique les parties du message à signer numériquement.

    La référence de partie désigne la partie du message signée numériquement. L'attribut de la partie fait référence au nom de l'élément <Integrity> lorsque l'élément <PartReference> est indiqué pour la signature. Vous pouvez spécifier plusieurs éléments <PartReference> dans l'élément <SigningInfo>. L'élément <PartReference> possède deux éléments quand il est indiqué pour la vérification de la signature : <DigestTransform> et <Transform>.

  9. L'API WSSSignPart indique l'algorithme de la méthode de synthèse (digest). L'algorithme de méthode digest spécifié dans l'élément <DigestMethod> est utilisé dans l'élément <SigningInfo>.
    WebSphere Application Server prend en charge les algorithmes de synthèse (digest) préconfigurés suivants :
    • http://www.w3.org/2000/09/xmldsig#sha1
    • http://www.w3.org/2001/04/xmlenc#sha256
    • http://www.w3.org/2001/04/xmlenc#sha512
  10. L'API WSSSignPart indique l'algorithme de transformation. L'algorithme de transformation correspond à celui défini dans l'élément <Transform> et il indique l'algorithme de transformation utilisé pour la signature. WebSphere Application Server prend en charge les algorithmes de transformation préconfigurés suivants :
    • http://www.w3.org/2001/10/xml-exc-c14n#
    • http://www.w3.org/TR/1999/REC-xpath-19991116

      N'utilisez pas cet algorithme de transformation si vous voulez respecter le profil de sécurité de base (BSP). A la place, utilisez http://www.w3.org/2002/06/xmldsig-filter2 pour assurer la compatibilité.

    • http://www.w3.org/2002/06/xmldsig-filter2
    • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
    • http://www.w3.org/2002/07/decrypt#XML
    • http://www.w3.org/2000/09/xmldsig#enveloped-signature
    L'algorithme de transformation sélectionné pour le générateur doit correspondre à celui qui est défini pour le destinataire.
    Important : Si les deux conditions suivantes sont vraies, WebSphere Application Server signe le jeton référencé :
    • Vous devez d'abord sélectionné l'option Keyinfo ou Keyinfochildelements.
    • Vous sélectionnez http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform comme algorithme de transformation.
  11. Si vous configurez correctement les informations de signature du client et du serveur mais que vous recevez une erreur Soap body not signed lors de l'exécution du client, il peut être nécessaire de configurer l'acteur. Configurez des ensembles de règles à l'aide de la console d'administration pour configurer les mêmes chaînes d'acteurs pour le service Web sur le serveur, qui traite la demande et renvoie la réponse.

    Les informations indiquées pour l'acteur sur le client et le serveur doivent faire référence à la même chaîne. Lorsque les zones de l'acteur du client et du serveur sont identiques, la demande ou la réponse est traitée au lieu d'être réacheminée en aval. L'acteur peut être différent lorsque vous disposez de services Web assurant la fonction de passerelle pour d'autres services Web. Toutefois, dans tous les autres cas, assurez-vous que les informations de l'acteur sont identiques sur le client et le serveur. Lorsque les services web assurent la fonction de passerelle et qu'un acteur différent est configuré lors de la transmission de la requête sur la passerelle, les services Web ne traitent pas le message d'un client. A la place, les services Web envoient la requête en aval. Le processus en aval qui contient la chaîne d'acteurs correcte traite la demande. La même procédure est exécutée pour la réponse. Il est donc indispensable de vérifier que les zones de l'acteur définies sur le client et le serveur sont synchronisées.

Résultats

Une fois que les API WSSSignature et WSSSignPart ont suivi ces étapes, les informations de signature sont configurées pour les sections du générateur des fichiers de liaison.

Exemple

L'exemple suivant illustre un exemple de code de l'API WSS pour configurer la signature, générer le gestionnaire d'appel et indiquer le type de jeton X.509 comme jeton de sécurité :

WSSFactory factory = WSSFactory.getInstance();
// Instancier un contexte de génération
WSSGenerationContext gencont = factory.newWSSGenerationContext();

// Générer le gestionnaire d'appel et indiquer le jeton X.509
   X509GenerateCallbackHandler callbackhandler = generateCallbackHandler();
   SecurityToken token = factory.newSecurityToken(X509Token.class, 
                                                  callbackHandler);

// Définir les informations de signature
WSSSignature sig = factory.newWSSSignature(token);
// Ajouter l'en-tête avec QName
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "To"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "MessageID"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "Action"));
/  Appliquer la signature
   gencont.add(sig); 

// Sécuriser le message 
gencont.process(msgctx);

Que faire ensuite

Vous devez configurer des informations de signature similaires pour les liaisons du destinataire (récepteur) de demandes côté client en effectuant les tâches de vérification ci-après :
  • Vérifiez la signature.
  • Choisissez les méthodes d'algorithme de signature.
  • Changez ou ajoutez des parties signées, si besoin est.

Si la vérification de la signature est déjà configurée, configurez les informations de chiffrement et de déchiffrement ou configurez les jetons de destinataire et de générateur.


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_configsigninfogenjaxws
Nom du fichier : twbs_configsigninfogenjaxws.html