Association du jeton de générateur à l'aide d'API WSS pour protéger l'authenticité des messages

Lorsque vous indiquez le générateur de jetons, les informations sont utilisées côté générateur pour générer le jeton de sécurité.

Avant de commencer

L'architecture de jetons connectables et de traitement de jeton dans l'environnement d'exécution de la sécurité des services Web réutilise la même interface de jeton de sécurité et le même module de connexion JAAS (Java™ Authentication and Authorization Service) des API de sécurité des services Web (WSS API). La même implémentation de création et validation de jeton peut être utilisée dans les interfaces WSS API et WSS SPI de l'environnement d'exécution de la sécurité des services Web.

Restriction : L'interface com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent n'est pas utilisée avec les services Web JAX-WS. Si vous utilisez les services Web JAX-RPC, cette interface est encore valide.

Notez que l'élément du nom de clé (KeyName) n'est pas pris en charge dans le serveur d'applications car il n'existe pas d'assertion de stratégie de nom de clé définie dans le projet de spécification Web Services Security d'OASIS en cours.

Pourquoi et quand exécuter cette tâche

Le gestionnaire d'appel JAAS (CallbackHandler) et le module de connexion JAAS (LoginModule) sont responsables de la création du jeton de sécurité côté générateur et de la validation (authentification) de ce jeton côté destinataire.

Par exemple, côté générateur, le jeton Username est créé à l'aide du module de connexion JAAS, puis le gestionnaire d'appel JAAS sert à transmettre les données d'authentification. Le module de connexion JAAS crée l'objet Username SecurityToken et le transmet au module d'exécution de sécurité des services Web.

Ensuite, côté destinataire, le format XML du jeton Username est transmis au module de connexion JAAS pour validation ou authentification et le gestionnaire d'appel JAAS permet d'envoyer les données d'authentification de l'environnement de sécurité des Services Web au module de connexion. Une fois le jeton authentifié, l'objet Username SecurityToken est créé et transmis à l'environnement d'exécution de la sécurité des services Web.

Remarque : WebSphere Application Server ne prend pas en charge un module de connexion empilable avec l'implémentation de son module de connexion par défaut, c'est-à-dire l'ajout du module de connexion avant ou après l'implémentation du module de connexion de WebSphere Application Server. Si vous voulez empiler des implémentations de module de connexion, vous devez développer les modules obligatoires, sachant qu'il n'existe pas d'implémentation par défaut.
Le package com.ibm.websphere.wssecurity.wssapi.token fourni par WebSphere Application Server comprend les prises en charge des classes suivantes :
  • Jeton de sécurité (SecurityTokenImpl)
  • Jeton de sécurité binaire (BinarySecurityTokenImpl)
En outre, WebSphere Application Server fournit les sous-interfaces préconfigurées pour les jetons de sécurité suivantes :
  • Jeton de clé dérivée
  • Jeton de contexte de sécurité (SCT)
  • Jeton de nom d'utilisateur
  • Propagation de jeton LTPA
  • Jeton LTPA
  • Jeton X509PKCS7
  • Jeton X509PKIPath
  • Jeton X509v3
  • Jeton Kerberos v5

Le jeton Username, les jetons X.509 et les jetons LTPA sont utilisés par défaut pour l'authenticité des messages. Le jeton de clé dérivée et les jetons X.509 sont utilisés par défaut pour la signature et le chiffrement.

L'API WSS et la SPI WSS sont uniquement prises en charge sur le client. Pour indiquer le type de jeton de sécurité côté générateur, vous pouvez aussi configurer des ensembles de règles à l'aide de la console d'administration. Vous pouvez également utiliser les API WSS ou des ensembles de règles pour faire correspondre des jetons de sécurité du destinataire.

Les implémentations par défaut de module de connexion et de rappel sont conçues pour être utilisées ensemble, à savoir avec une partie générateur et une autre destinataire. Pour utiliser les implémentations par défaut, sélectionnez le jeton de sécurité de générateur et de destinataire approprié dans une paire. Par exemple, sélectionnez system.wss.generate.x509 dans le générateur de jetons et system.wss.consume.x509 dans le destinataire de jeton lorsque le jeton X.509 est obligatoire.

Pour configurer le jeton de sécurité côté générateur, servez-vous de l'interface du générateur de jeton préconfigurée à partir des API WSS afin de suivre la procédure de configuration ci-dessous :

Procédure

  1. Générez l'instance wssFactory.
  2. Générez l'instance wssGenerationContext.

    L'interface WSSGenerationContext stocke les composants pour générer Web Services Security (WS-Security), comme les informations de signature et de chiffrement, le jeton de sécurité et l'horodatage. Lorsque la méthode generate() est appelée, tous ces composants sont générés.

  3. Créez les composants côté générateur, tels que les objets WSSSignature et WSSEncryption.
  4. Spécifiez une configuration JAAS en indiquant le nom de la configuration de connexion JAAS. La configuration du service JAAS (Java Authentication and Authorization Service) spécifie le nom de la configuration JAAS. La configuration JAAS indique comment le jeton se connecte côté destinataire. Ne supprimez pas les configurations de connexion système et d'application prédéfinies. Vous pouvez toutefois les modifier en y ajoutant des noms de classe de module et en précisant l'ordre dans lequel WebSphere Application Server doit charger chaque module.
  5. Spécifiez un nom de classe de générateur de jetons. Ce nom indique les informations obligatoires pour générer le jeton de sécurité. Le jeton Username, les jetons X.509 et les jetons LTPA sont utilisés par défaut pour l'authenticité des messages.
  6. Spécifiez les paramètres pour le gestionnaire d'appel en précisant le nom d'une classe de ce gestionnaire et ses clés. Ce nom de classe correspond à celui de la classe d'implémentation du gestionnaire d'appel servant à la connexion au canevas du jeton de sécurité.

    L'implémentation du gestionnaire d'appel obtient le jeton de sécurité requis et le transmet au générateur de jetons. Ce dernier insère le jeton de sécurité dans l'en-tête de sécurité des services Web du message SOAP. Le générateur de jetons représente également un point de connexion pour la structure de jeton de sécurité intégrable. Les fournisseurs de services peuvent proposer leur propre implémentation, mais celle-ci doit utiliser l'interface WSSGenerationContext.

    WebSphere Application Server fournit les implémentations de gestionnaire d'appel par défaut suivantes côté générateur :
    com.ibm.websphere.wssecurity.callbackhandler.PropertyCallback
    Cette classe est un rappel pour gérer la paire nom-valeur dans des éléments des fichiers XMI de configuration de la sécurité des services Web (WS-Security).
    com.ibm.websphere.wssecurity.callbackhandler.UNTGUIPromptCallbackHandler
    Cette classe désigne un gestionnaire d'appel pour le jeton Username avec l'invite d'interface graphique côté générateur. Cette instance permet de définir l'objet WSSGenerationContext afin de générer le jeton Username.
    com.ibm.websphere.wssecurity.callbackhandler.UNTGenerateCallbackHandler
    Cette classe désigne un gestionnaire d'appel pour le jeton Username côté générateur. Cette instance permet de définir l'objet WSSGenerationContext à associer à un jeton Username. Utilisez cette implémentation pour un client d'application Java EE (Java Platform, Enterprise Edition) uniquement.
    com.ibm.websphere.wssecurity.callbackhandler.X509GenerateCallbackHandler
    Cette classe désigne un gestionnaire d'appel servant à générer le certificat X.509 inséré dans l'en-tête de sécurité des services Web dans le message SOAP en tant que jeton de sécurité binaire côté générateur. Cette instance est utilisée pour générer les objets WSSSignature et WSSEncryption, ainsi que définir des objets dans l'objet WSSGenerationContext pour générer les jetons de sécurité binaires X.509. Un fichier de clés et une définition de clé sont obligatoires pour ce gestionnaire d'appel. Si vous utilisez cette implémentation, vous devez fournir un mot de passe, un chemin et un type pour le fichier de clés côté générateur.
    com.ibm.websphere.wssecurity.callbackhandler.LTPAGenerateCallbackHandler
    Cette classe désigne un gestionnaire d'appel pour les jetons LTPA (Lightweight Third Party Authentication) côté générateur. Cette instance sert à générer les objets WSSSignature et WSSEncryption afin de générer un jeton LTPA.

    Ce gestionnaire d'appel sert à valider le jeton de sécurité LTPA inséré dans l'en-tête de sécurité des services Web à l'intérieur du message SOAP en tant que jeton de sécurité binaire. Cependant, si le nom d'utilisateur et le mot de passe sont précisés, WebSphere Application Server authentifie ces éléments pour obtenir le jeton de sécurité LTPA au lieu de passer par le sujet Run As. Utilisez ce gestionnaire d'appel uniquement lorsque le service Web assure la fonction de client sur le serveur d'applications. Il est déconseillé d'utiliser ce gestionnaire d'appel sur un client d'application Java EE. Si vous utilisez cette implémentation, vous devez fournir un ID utilisateur et un mot de passe d'authentification de base côté générateur.

    com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler
    Cette classe est un gestionnaire d'appel pour le jeton Kerberos v5 côté générateur. Cette instance permet de définir l'objet WSSGenerationContext afin de générer Kerberos v5 AP-REQ en tant que jeton de sécurité binaire. L'instance est également utilisée pour la génération des objets WSSSignature et WSSEncryption pour utiliser la clé de session Kerberos ou la clé dérivée dans la signature et le chiffrement des messages SOAP.
  7. Si un jeton X.509 est indiqué, d'autres informations sont aussi précisées.
    Tableau 1. Informations relatives au jeton X.509. Utilisation du jeton X.509 pour la signature et le chiffrement.
    Informations sur le jeton Description
    storeRef Nom de référence du fichier de clés.
    storePath Chemin d'accès du fichier de clés à partir duquel a lieu le chargement, si besoin est. Il est conseillé d'utiliser ${USER_INSTALL_ROOT} dans le nom du chemin d'accès étant donné que cette variable précède le chemin WebSphere Application Server sur votre machine. Ce chemin est obligatoire lorsque vous utilisez les implémentations du gestionnaire d'appel pour les jetons X.509.
    storePassword Mot de passe utilisé pour vérifier l'intégrité du fichier de clés ou mot de passe du fichier de clés servant à le déverrouiller et à y accéder. Le fichier de clés et sa configuration sont utilisés pour certaines implémentations du gestionnaire d'appel par défaut fournies par WebSphere Application Server.
    storeType Type du fichier de clés utilisé pour le localisateur de clé. Cette sélection indique le format employé par le fichier de clés. Les valeurs suivantes sont disponibles :
    JKS
    Utilisez cette option si le fichier de clés a le format JKS (Java Keystore).
    JCEKS
    Utilisez cette option si Java Cryptography Extension est configuré dans le kit SDK (Software Development Kit). L'extension IBM® JCE est configurée dans WebSphere Application Server. Cette option offre une protection plus efficace pour les clés privées mémorisées en faisant appel au chiffrement Triple DES.
    JCERACFKS
    Utilisez JCERACFKS si les certificats sont stockés dans un fichier de clés SAF (z/OS uniquement).
    PKCS11KS (PKCS11)
    Utilisez cette option si votre fichier de clés utilise le format de fichier PKCS#11. Les fichiers de clés utilisant ce format peuvent contenir des clés RSA stockées sur du matériel de chiffrement, ou bien ils peuvent chiffrer des clés qui utilisent du matériel de ce type pour assurer la protection.
    PKCS12KS (PKCS12)
    Utilisez cette option si votre fichier de clés utilise le format de fichier PKCS#12.
    alias Nom d'alias de la clé. L'alias de clé est utilisé par le localisateur de clé pour rechercher la clé dans le fichier de clés.
    keyPassword Mot de passe de la clé utilisé pour la récupérer. Ce mot de passe est nécessaire pour accéder à l'objet clé dans le fichier de clés.
    keyName Nom de la clé. Pour les signatures numériques, le nom de la clé est utilisé par le générateur de demande ou le destinataire de réponse signant les informations afin d'identifier la clé employée pour signer le message de façon numérique. Pour le chiffrement, le nom de clé est utilisé pour déterminer quelle clé utiliser. Le nom de la clé doit être un nom distinctif qualifié complet. Par exemple, CN=Bob,O=IBM,C=US.
    certStores Liste des magasins de certificats. Un magasin de certificats de collection inclut une liste des certificats non sécurisés et intermédiaires et les listes de retrait de certificat (CRL). Cette étape configure un magasin de certificats de collection et des listes de retrait de certificat pour les liaisons de générateur.
    identityAssertion Indique si la vérification d'identité est utilisée. Sélectionnez cette option si la vérification d'identité est définie. Cette option indique que seule l'identité de l'émetteur initial est requise et insérée dans l'en-tête de sécurité des services Web du message SOAP. Pour un générateur de jeton X.509, le serveur d'applications envoie uniquement la certification du signataire d'origine.
    requestorCertificate Indique si le certificat du demandeur est utilisé.

    Vous pouvez indiquer ce qui suit pour un jeton X.509 :

    1. Sans fichier de clés.
    2. Avec un ancrage sécurisé. Un ancrage sécurisé désigne la liste des configurations de fichier de clés contenant des certificats racine sécurisés. Ces configurations permettent de valider le chemin d'accès aux certificats des jetons de sécurité X.509 entrants. Par exemple, lorsque vous sélectionnez l'ancrage sécurisé ou le magasin de certificats d'un certificat sécurisé, vous devez configurer l'ancrage sécurisé et le magasin de certificats avant de définir le chemin du certificat.
    3. Avec un fichier de clés utilisé pour le localisateur de clé.

      Vous devez avoir créé le fichier de clés, à l'aide d'un utilitaire par exemple. Le fichier de clés permet d'extraire le certificat X.509. Cette entrée indique le mot de passe employé pour accéder au fichier de clés. Au sein d'un point d'ancrage digne de confiance, les objets du fichier de clés contiennent les certificats racine dignes de confiance utilisés par l'API CertPath pour valider la fiabilité d'une chaîne de certificats.

    4. Avec un fichier de clés utilisé pour le localisateur de clé et l'ancrage sécurisé.
    5. Avec une mappe incluant des paires clé-valeur. Par exemple, vous pouvez indiquer le nom du type de valeur et sont URI (Uniform Resource Identifier). Le type de valeur indique l'URI espace de nom pour le jeton généré et représente le type de jeton de cette classe :
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3
      Désigne un jeton de certificat X.509.
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
      Désigne des certificats X.509 dans un chemin d'infrastructure PKI (public key infrastructure). Ce gestionnaire d'appel permet de créer des certificats X.509 au format PkiPath. Le certificat est inséré dans l'en-tête de sécurité des services Web du message SOAP en tant que jeton de sécurité binaire. Un fichier de clés est requis pour ce gestionnaire d'appel. La liste CRL n'est pas prise en charge par ce gestionnaire d'appel ; le magasin de certificats de collection n'est donc pas requis ni utilisé. Si vous utilisez cette implémentation, vous devez fournir un mot de passe, chemin et type de fichier de clés dans ce panneau.
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7
      Indique la liste des certificats X.509 et des listes de retrait de certificat au format PKCS#7. Ce gestionnaire d'appel permet de créer des certificats X.509 au format PKCS#7. Le certificat est inséré dans l'en-tête de sécurité des services Web du message SOAP en tant que jeton de sécurité binaire. Un fichier de clés est requis pour ce gestionnaire d'appel. Vous pouvez spécifier une liste de retrait de certificat (CRL) dans le magasin de certificats de collection. La liste CRL est chiffrée avec le certificat X.509 au format PKCS#7. Si vous utilisez cette implémentation, vous devez fournir un mot de passe, un chemin et un type pour le fichier de clés.

      Pour certains jetons, WebSphere Application Server fournit un nom local prédéfini pour le type de valeur. Lorsque vous indiquez le nom local suivant, il est inutile de préciser un URI de type de valeur :

      ValueType: http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      Pour un jeton LTPA, vous pouvez prendre LTPA comme nom local du type de valeur. Avec ce nom local, http://www.ibm.com/websphere/appserver/tokentype/5.0.2 est indiqué comme URI (Uniform Resource Identifier) du type de valeur.
      ValueType: http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      Pour la propagation de jetons LTPA, vous pouvez prendre LTPA_PROPAGATION comme nom local du type de valeur. Avec ce nom local, http://www.ibm.com/websphere/appserver/tokentype est indiqué comme URI (Uniform Resource Identifier) du type de valeur.
  8. Si le jeton Username est indiqué comme nom de classe du générateur de jetons, les informations suivantes peuvent être précisées :
    1. Si l'option IdentityAssertion doit être utilisée. Cette option est sélectionnée si la vérification d'identité est définie. Cette option indique que seule l'identité de l'émetteur initial est requise et insérée dans l'en-tête de sécurité des services Web du message SOAP. Par exemple, WebSphere Application Server envoie uniquement le nom d'utilisateur de l'appelant d'origine pour un générateur de jetons Username.
    2. Si l'option d'identité RunAsSubject doit être utilisée. Cette option est utilisée si une vérification d'identité est définie et que vous voulez employer l'identité Run As à la place de celle de l'appelant initial pour la vérification d'identité dans un appel en aval. Cette option est uniquement valide si vous avez configuré le jeton Username comme générateur de jetons.
    3. S'il faut utiliser sendRealm.
    4. Si le nonce doit être indiqué.

      Cette option indique si un nonce est inclus pour le générateur de jetons. Un nonce est un numéro unique de chiffrement intégré à un message pour arrêter les attaques à répétition et non autorisées de jetons Username. Un nonce est uniquement valide lorsque le type de jeton généré est un jeton Username et seulement disponible pour la liaison de générateur de demande.

    5. Indique le mot clé de l'horodatage. Cette option indique si un horodatage doit être vérifié dans le jeton Username. L'horodatage est uniquement valide lorsque le type de jeton incorporé est un jeton Username.
    6. Indique une mappe comportant des paires clé-valeur. Par exemple, vous pouvez indiquer le nom du type de valeur et sont URI (Uniform Resource Identifier). Le type de valeur indique l'URI espace de nom pour le jeton généré et représente le type de jeton de cette classe :
      URI de type de valeur : http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken
      Désigne un jeton Username.
  9. Si le jeton Kerberos v5 est indiqué comme nom de classe de génération de jeton, les informations suivantes peuvent être précisées :
    Informations sur le jeton Description Valeur par défaut
    name Nom du principal client Kerberos  
    mot_passe Mot de passe du client Kerberos  
    Domaine Super domaine Kerberos associé au client Kerberos Nom de domaine par défaut dans le fichier de configuration Kerberos.

    Spécifiez null pour utiliser la valeur par défaut.

    targetService Nom du service Kerberos associé aux services Web cible.  
    targetHost Nom du super domaine Kerberos associé au nom du service Kerberos.  
    tokenValueType Type de valeur de jeton Kerberos dans QName défini par la spécification Oasis Kerberos Token Profile v1.1. http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ
    targetRealm Nom du super domaine Kerberos associé au nom du service Kerberos. Nom de domaine par défaut dans le fichier de configuration Kerberos.
    prompt Valeur booléenne permettant d'activer l'invite de connexion. false
    supportTokenRequireSHA1 Valeur booléenne servant à requérir une clé SHA1 utilisée pour les messages de demande ultérieurs lorsque le jeton Kerberos est utilisé comme jeton de prise en charge. false

    La clé SHA1 n'est consommée que si le jeton Kerberos de prise en charge est protégé. Si la valeur de ce paramètre est true, la clé SHA1 est toujours consommée.

    alwaysAPREQ Valeur booléenne permettant d'indiquer que le client doit toujours envoyer le jeton Kerberos AP_REQ dans les messages de demande. false

    La clé SHA1 est utilisée à la place dans les messages suivants. Si la valeur de ce paramètre est true, la clé Kerberos AP_REQ est toujours utilisée.

    requireDKT Valeur booléenne servant à requérir une clé dérivée pour la protection des messages. false
    clabel Libellé client de la clé dérivée. WS-SecureConversation

    Spécifiez null pour utiliser la valeur par défaut.

    slabel Libellé service de la clé dérivée. WS-SecureConversation

    Spécifiez null pour utiliser la valeur par défaut.

    keylen Longueur de la clé dérivée. 16

    Spécifiez zéro pour utiliser la valeur par défaut.

    noncelen Longueur de la valeur nonce. 16

    Spécifiez zéro pour utiliser la valeur par défaut.

    encComponent Instance de WSSEncryption. Attribuez la valeur null à encComponent et sigComponent pour l'initialiser d'abord pour le composant de chiffrement ou de vérification. Ensuite, utilisez le composant initialisé uniquement dans le constructeur du gestionnaire d'appel pour le second composant.
    sigComponent Instance de WSSSignature. Attribuez la valeur null à encComponent et sigComponent pour l'initialiser d'abord pour le composant de chiffrement ou de vérification. Ensuite, utilisez le composant initialisé uniquement dans le constructeur du gestionnaire d'appel pour le second composant.
    Les types de valeur de jeton supplémentaires sont définis dans la spécification OASIS Kerberos Token Profile v1.1. Spécifiez le type de valeur de jeton comme nom local. Il est inutile de spécifier l'URI du type de valeur pour le jeton Kerberos v5.
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ4120
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ4120
  10. Si la conversation sécurisée est utilisée pour la protection des messages, les informations suivantes doivent être spécifiées :
    Information Description
    bootstrapWSSGenerationContext Configuration d'amorce utilisée pour sécuriser le jeton RequestSecurityToken (RST).
    bootstrapWSSConmingContext Configuration d'amorce utilisée pour la consommation d'une réponse RequestSecurityTokenResponse (RSTR) sécurisée.
    ENDPOINT_URL URL de noeud final de service.
    EncryptionAlgorithm Détermine la taille de la clé.
    cLabel Libellé client utilisé lors de la création de la clé dérivée.
    sLabel Libellé serveur utilisé lors de la création de la clé dérivée.
  11. Définissez les composants dans l'objet wssGenerationContext.
  12. Appelez la méthode wssGenerationContext.process().

Résultats

Avec les API Web Services Security (API WSS), vous avez configuré le générateur de jetons.

Que faire ensuite

Vous devez ensuite spécifier une configuration de destinataire de jeton similaire.

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_configtokengenjaxws
Nom du fichier : twbs_configtokengenjaxws.html