Configuration des jetons de sécurité du destinataire à l'aide de l'API WSS

Vous pouvez sécuriser les messages SOAP sans recourir à des ensembles de règles, en utilisant les API Web Services Security. Pour configurer le jeton côté destinataire, utilisez les API Web Services Security (API WSS). Les jetons de sécurité du destinataire se trouvent dans le package de l'interface com.ibm.websphere.wssecurity.wssapi.token.

Avant de commencer

L'infrastructure du jeton connectable dans WebSphere Application Server a été recréée pour pouvoir être réutilisable à partir de l'API WSS. La même implémentation de création et de validation du jeton de sécurité peut être utilisée pour l'exécution de la sécurité des services Web et pour le code d'application de l'API WSS. La nouvelle structure simplifie également le modèle de programmation de la SPI, ainsi que l'ajout de types de jeton de sécurité.

Vous pouvez utiliser l'API WSS ou configurer les jetons à l'aide de la console d'administration. Pour configurer des jetons, vous devez avoir effectué la configuration de jetons de générateur, si besoin est.

Pourquoi et quand exécuter cette tâche

Côté générateur, le gestionnaire d'appel et le module de connexion JAAS sont chargés de créer le jeton de sécurité. Le jeton est créé à l'aide du module de connexion et du gestionnaire d'appel JAAS pour transmettre les données d'authentification. Ensuite, le module de connexion JAAS crée l'objet securityToken, tel que UsernameToken, et le transmet au module d'exécution WSS.

Côté destinataire, le format XML est transmis au module de connexion pour validation ou authentification. Ensuite, le gestionnaire d'appel permet de transmettre les données d'authentification du module d'exécution WSS au module de connexion. Une fois le jeton authentifié et un objet de jeton de sécurité créé, le premier est transmis au module d'exécution WSS.

Lorsque vous utilisez l'API WSS pour valider le jeton du destinataire, certains comportements par défaut se produisent. La façon la plus simple d'utiliser l'API WSS est d'employer le module de connexion et le gestionnaire d'appel JAAS par défaut. L'exemple utilise les valeurs par défaut et n'indique donc pas le nom du module de connexion JAAS.

La façon la plus simple d'utiliser l'API WSS est d'appliquer le comportement par défaut (voir l'exemple de code). L'API WSS fournit des valeurs par défaut pour le type de jeton, sa valeur et le nom de configuration JAAS. Les comportements par défaut des jetons sont les suivants :

Tableau 1. Comportements par défaut des jetons. Certaines caractéristiques des jetons sont configurées par défaut.
Choix relatifs aux jetons du destinataire Comportement par défaut
Type de jeton à utiliser

Il s'agit du type de jeton à utiliser pour signer et valider des messages. Le jeton X.509 est le type par défaut.

WebSphere Application Server fournit les types de jeton de destinataire préconfigurés suivants :

  • Jeton de contexte de sécurité
  • Jeton de clé dérivée
  • Jetons X509

Vous pouvez aussi créer des types de jeton personnalisés, si besoin est.

Nom de configuration de connexion JAAS à indiquer

Il s'agit du nom de configuration de connexion JAAS à utiliser.

Type de configuration à utiliser Type de configuration du module de connexion JAAS. Seuls les types de configuration de destinataire préconfigurés peuvent être employés pour les types de jeton du destinataire.

La classe SecurityToken (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) est la classe de jeton générique et représente le jeton de sécurité doté de méthodes pour obtenir l'identité, le format XML et des clés de chiffrement. A l'aide de cette classe, vous pouvez réaliser une signature et un chiffrement dans le message SOAP. Pour appliquer les deux opérations en revanche, vous devez disposer de deux objets SecurityToken : l'un pour la signature, l'autre pour le chiffrement, respectivement.

Les types de jeton suivants sont des sous-classes de la classe de jeton de sécurité générique :

Tableau 2. Sous-classes de SecurityToken. Utilisez les sous-classes pour représenter le jeton de sécurité.
Type de jeton Nom de configuration de connexion JAAS
Jeton de contexte de sécurité system.wss.consume.sct
Jeton de clé dérivée system.wss.consume.dkt

Les types de jeton suivants sont des sous-classes de la classe de jeton de sécurité binaire :

Tableau 3. Sous-classes de BinarySecurityToken. Utilisez les sous-classes pour représenter le jeton de sécurité binaire.
Type de jeton Nom de configuration de connexion JAAS
Jeton X.509 system.wss.consume.x509
X.509 PKI Path token system.wss.consume.pkiPath
Jeton X.509 PKCS7 system.wss.consume.pkcs7
Remarque :
  • Pour chaque nom de configuration du destinataire de jeton de connexion JAAS, il existe un nom de configuration du générateur de jetons correspondant. Par exemple, pour X509Token, le nom de configuration du générateur de jetons est system.wss.generate.x509.
  • Les jetons de propagation sont uniquement disponibles pour un demandeur exécutant un client basé serveur. La LTPA et les jetons de propagation LTPA ne sont pas compatibles avec le client d'application Java™ SE 6 ou Java EE.

Pour valider X509Token dans le message SOAP côté destinataire, l'élément <X509Token> doit se trouver dans celui <wsse:Security>.

Procédure

  1. Pour valider le package securityToken, com.ibm.websphere.wssecurity.wssapi.token, vérifiez d'abord que le serveur d'application est installé.
  2. Si vous employez les valeurs par défaut, il configure les jetons pour le processus du destinataire de jeton de la sécurité des services Web. Pour chaque type de jeton, la procédure de l'API est similaire à celle du destinataire de jeton suivant :
    1. Utilise WSSFactory.getInstance() pour obteni l'instance d'implémentation d'API WSS.
    2. Création de l'instance WSSConsumingContext à partir de l'instance WSSFactory. Rappelez-vous que WSSConsumingContext doit toujours être appelé dans une application client JAX-WS.
    3. Elle crée un gestionnaire d'appel JAAS avec les informations obligatoires pour valider le jeton de sécurité. Consultez les informations de la classe de jeton pour savoir quels paramètres sont obligatoires ou facultatifs. Par exemple, pour un jeton X.509, vous pouvez configurer ce qui suit :
      Tableau 4. Options de jeton X.509. Utilisez les options de configuration X.509 pour commander le comportement du jeton.
      Informations sur le jeton Description
      keyStoreRef Indique le nom de référence du fichier de clés stocké dans la carte cryptographique. Il peut être indiqué lorsque la carte est associée au matériel.
      keyStorePath Indique le chemin d'accès au fichier de clés. Il est inutile d'indiquer keyStorePath si keyStoreRef est défini.
      keyStorePassword Indique le mot de passe du fichier de clés.
      keyStoreType Indique le type de fichier de clés.
      alias Indique l'alias de la clé.
      keyPassword Indique le mot de passe de la clé.
      keyName Indique le nom du sujet de la clé.
    4. Elle définit le gestionnaire d'appel dans WSSDecryption, WSSVerification ou WSSConsumingContext.
    5. Si le gestionnaire d'appel est défini dans WSSDecryption ou WSSVerification, elle ajoute l'un des deux dans WSSConsumingContext.
    6. Elle appelle WSSConsumingContext.process().
  3. Si vous n'utilisez pas les valeurs par défaut, elle configure les jetons pour le processus du destinataire de jeton de la sécurité des services Web. Pour chaque type de jeton, la procédure de l'API est similaire à celle du destinataire de jeton suivant :
    1. Si vous n'utilisez pas le module de connexion et le gestionnaire d'appel JAAS par défaut, vous devez en créer des personnalisés et enregistrer à l'avance le nom de la configuration de connexion JAAS à l'aide de la console d'administration.
    2. Utilise WSSFactory.getInstance() pour obteni l'instance d'implémentation d'API WSS.
    3. Création de l'instance WSSConsumingContext à partir de l'instance WSSFactory. Rappelez-vous que WSSConsumingContext doit toujours être appelé dans une application client JAX-WS.
    4. Elle crée un gestionnaire d'appel avec les informations obligatoires pour valider le jeton de sécurité. Consultez les informations de la classe de jeton pour savoir quels paramètres sont obligatoires ou facultatifs. Par exemple, pour un jeton X.509, vous pouvez configurer ce qui suit :
      Tableau 5. Options de jeton X.509. Utilisez les options de configuration X.509 pour commander le comportement du jeton.
      Informations sur le jeton Description
      keyStoreRef Indique le nom de référence du fichier de clés stocké dans la carte cryptographique. Il peut être indiqué lorsque la carte est associée au matériel.
      keyStorePath Indique le chemin d'accès au fichier de clés. Il est inutile d'indiquer keyStorePath si keyStoreRef est défini.
      keyStorePassword Indique le mot de passe du fichier de clés.
      keyStoreType Indique le type de fichier de clés.
      alias Indique l'alias de la clé.
      keyPassword Indique le mot de passe de la clé.
      keyName Indique le nom du sujet de la clé.
    5. Elle définit le nom de configuration et le gestionnaire d'appel dans WSSDecryption, WSSVerification ou WSSConsumingContext.
    6. Si le nom de configuration et le gestionnaire d'appel sont définis dans WSSDecryption ou WSSVerification, elle ajoute l'un des deux dans WSSConsumingContext.
    7. Elle appelle WSSConsumingContext.process().

Résultats

S'il existe une condition d'erreur, une WSSException est fournie. Si l'opération aboutit, la méthode WSSConsumingContext.process() est appelée et le jeton de sécurité côté destinataire est validé (authentifié).

Exemple

L'exemple de code suivant illustre le code de l'API WSS pour le déchiffrement à l'aide du module de connexion et du gestionnaire d'appel JAAS par défaut :

// 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 WSSConsumingContext (étape : b)
   WSSConsumingContext gencont = factory.newWSSConsumingContext();

// Générer le gestionnaire d'appel (étape : c)
   X509ConsumeCallbackHandler callbackHandler = new 
        X509ConsumeCallbackHandler(
                                   "",
                                   "enc-sender.jceks",
                                   "jceks", 
                                   "storepass".toCharArray(), 
                                   "alice", 
                                   "keypass".toCharArray(), 
                                   "CN=Alice, O=IBM, C=US");

// Générer l'instance WSSDecryption (étape : d)
   WSSDecryption dec = factory.newWSSDecryption(X509Token.class, 
                                                callbackHandler);


// Ajouter WSSDecryption à WSSConsumingContext (étape : e)
   concont.add(dec);

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

Que faire ensuite

Pour chaque type de jeton, configurez le jeton à l'aide des API WSS ou de la console d'administration. Indiquez ensuite les jetons similaires de générateur si ce n'est pas déjà fait.

Si les jetons du générateur et du destinataire sont configurés, continuez à sécuriser les messages SOAP sur le destinataire de la réponse avec les API WSS ou configurez les jetons à l'aide de la console d'administration.

Si les jetons du générateur et du destinataire sont configurés, continuez à sécuriser les messages SOAP en vérifiant la signature ou en déchiffrant le message, selon les besoins. Vous pouvez utiliser les API WSS ou la console d'administration pour sécuriser les messages SOAP.


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_confwssconsumertoken
Nom du fichier : twbs_confwssconsumertoken.html