Améliorations de la sécurité des services Web
WebSphere Application Server inclut plusieurs améliorations en matière de sécurisation des services Web. Par exemple, des ensembles de règles sont pris en charge dans le Feature Pack for Web Services de WebSphere Application Server et Version 6.1 et versions suivantes pour simplifier la configuration de la sécurité des services Web.
Création de vos applications
L'implémentation de l'exécution de la sécurité des Services Web utilisée par WebSphere Application Server Version 8 est basée sur le modèle de programmation JAX-WS (Java™ API for XML Web Services). L'environnement d'exécution JAX-WS se base sur Apache Open Source Axis2 et le modèle de données est AXIOM. A la place de liaisons et de descripteurs de déploiement, un ensemble de règles est utilisé pour la configuration. Vous pouvez utiliser la console d'administration de WebSphere Application Server pour éditer les fichiers de liaison associés aux ensembles de règles. L'exécution de JAX-WS est pris en charge pour le Feature Pack for Web Services de WebSphere Application Server V6.1 et des versions suivantes.
Le modèle de programmation JAX-RPC qui utilise des descripteurs et des liaisons de déploiement est toujours pris en charge. Pour plus d'informations, consultez la rubrique Sécurisation des services Web JAX-RPC à l'aide de la sécurité au niveau des messages.
Utilisation des ensembles de règles
Utilisez des ensembles de règles pour simplifier la configuration de la qualité de service de votre service Web.
Les ensembles de règles combinent les paramètres de configuration, y compris ceux de la configuration au niveau du transport et des messages, par exemple, Web Services Addressing (WS-Addressing), Web Services Reliable Messaging (WS-ReliableMessaging) et Web Services Security (WS-Security) qui inclut Web Services Secure Conversation (WS-SecureConversation).
Gestion des règles sécurisées
WS-Trust (Web Services Security Trust) permet à un noeud final d'émettre un jeton de contexte de sécurité pour Web Services Secure Conversation (WS-SecureConversation). Le support d'émission de jeton est limité au jeton de contexte de sécurité. La gestion des règles sécurisées définit une règle pour chacune des opérations de service d'accréditation, telles que l'émission, l'annulation, la validation et le renouvellement d'un jeton. Les règles d'amorce d'un client doivent correspondre aux règles de service d'accréditation WebSphere Application Server.
Sécurisation des messages basés sur la session
Web Services Secure Conversation fournit une session sécurisée pour les échanges de messages de longue durée et tire parti de l'algorithme de cryptographie symétrique. WS-SecureConversation fournit la sécurité de base permettant de sécuriser des modèles d'échange de messages basés sur la session, tels que Web Services Reliable Messaging (WS-ReliableMessaging).
Mise à jour de la sécurité de niveau message
- Confirmation par signature
- En-têtes chiffrés
La confirmation des signatures améliore la protection de la sécurité des signatures numériques XML. L'élément <SignatureConfirmation> indique que le répondeur a traité la signature dans la demande et la confirmation de signature garantit que cette signature est bien traitée par le destinataire prévu. Pour traiter correctement la confirmation par signature, l'initiateur doit conserver les signatures pendant le processus de génération de demande et doit ultérieurement extraire les signatures pour les contrôles de confirmation, même avec la nature sans état du service web et les modèles d'échange de messages différents. Pour activer la confirmation par signature, configurez la règle.
L'élément d'en-tête chiffré fournit une méthode standard permettant le chiffrement des en-têtes SOAP, ce qui aide à l'interopérabilité. Comme défini dans la spécification de sécurité des messages SOAP, l'élément <EncryptedHeader> indique qu'un en-tête SOAP spécifique (ou un ensemble d'en-têtes) doit être protégé. Le chiffrement de parties et d'en-têtes SOAP aide à fournir une meilleure sécurité au niveau des messages. L'élément EncryptedHeader garantit le respect des directives de traitement SOAP mustUnderstand et empêche la divulgation des informations contenues dans les attributs d'un bloc d'en-têtes SOAP.
Utilisation de la vérification d'identité
- un jeton de nom d'utilisateur sans mot de passe,
- un jeton X.509 pour un certificat X.509.
Pour plus d'informations sur la vérification d'identité, lisez la rubrique relative aux évaluateurs d'ID dignes de confiance.
Signature ou chiffrement des données avec un jeton personnalisé
Pour le modèle de programmation JAX-RPC, le releveur de coordonnées de clé ou l'interface Java com.ibm.wsspi.wssecurity.keyinfo.KeyLocator est amélioré pour prendre en charge la flexibilité de la spécification. Le releveur de coordonnées de clé est responsable de la recherche de la clé. Le sujet JAAS local est transmis à la méthode KeyLocator.getKey() dans le contexte. L'implémentation du releveur de coordonnées de clé peut dériver la clé à partir du jeton créé par le générateur de jetons ou le destinataire du jeton pour signer un message, vérifier la signature figurant dans un message, chiffrer ou déchiffrer un message. L'interface Java com.ibm.wsspi.wssecurity.keyinfo.KeyLocator est différente de celle de WebSphere Application Server Version 5.x. L'interface com.ibm.wsspi.wssecurity.config.KeyLocator de la version 5.x est obsolète. Il n'y a pas de migration automatique du releveur de coordonnées de clé version 5.x vers la version 6 ou ultérieure. Vous devez faire migrer le code source de l'implémentation du releveur de coordonnées de clé de la version 5.x vers le modèle de programmation du releveur de coordonnées de clé version 6 ou ultérieure.
- Le gestionnaire d'appel JAAS (CallbackHandler) et le module de connexion JAAS créent les jetons de sécurité sur le côté générateur et valident ou authentifient les jetons de sécurité sur le côté client.
- L'interface de jeton de sécurité com.ibm.websphere.wssecurity.wssapi.token.SecurityToken représente le jeton de sécurité qui possède des méthodes pour obtenir l'identité, au format XML et les clés cryptographiques.
- Générateur de jetons (com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent)
- Destinataire du jeton (com.ibm.wsspi.wssecurity.token.TokenConsumerComponent)
- Releveur de coordonnées de clé (com.ibm.wsspi.wssecurity.keyinfo.KeyLocator)
Signature ou chiffrement d'un élément XML
Une expression XPath est utilisée pour sélectionner l'élément XML à signer ou à chiffrer. Toutefois, une signature d'enveloppe est utilisée lorsque vous signez l'enveloppe SOAP, l'en-tête SOAP ou l'en-tête de sécurité des Services Web. Dans les services Web JAX-RPC, l'expression XPath est spécifiée dans le descripteur de déploiement d'application. Dans les services Web JAX-WS, l'expression XPath est spécifiée dans la règle WS-Security de l'ensemble de règles.
Le modèle de programmation JAX-WS utilise des ensembles de règles pour indiquer les parties de message sur lesquelles la sécurité doit être appliquée. Par exemple, la vérification <Body> est utilisée pour indiquer que le corps du message SOAP est signé ou chiffré. Un autre exemple est la vérification <Header> dans laquelle le QName de l'en-tête SOAP à signer ou à chiffrer est spécifié.
Signature ou chiffrement d'en-têtes SOAP
Le support OASIS Web Services Security (WS-Security) Version 1.1 fournit une méthode standard pour le chiffrement et la signature des en-têtes SOAP. Pour signer ou chiffrer des messages SOAP, indiquez le nom QName afin de sélectionner des éléments d'en-tête dans l'en-tête SOAP du message SOAP.
Vous pouvez configurer des ensembles de règles pour la signature ou ou le chiffrement à l'aide de la console d'administration ou d'API WSS (Web Services Security). Pour plus de détails, voir la rubrique relative à la sécurisation de parties des messages à l'aide de la console d'administration.
- Nom
- Cet attribut facultatif indique le nom local de l'en-tête SOAP dont l'intégrité doit être protégée. Si cet attribut n'est pas défini, tous les en-têtes SOAP dont l'espace de nom correspond à l'attribut Namespace doivent être protégés.
- Espace de nom
- Cet attribut obligatoire indique l'espace de nom des en-têtes SOAP dont l'intégrité doit être protégée.
- Nom
- Cet attribut facultatif indique le nom local de l'en-tête SOAP à protéger au niveau de la confidentialité. Si cet attribut n'est pas défini, tous les en-têtes SOAP dont l'espace de nom correspond à l'attribut Namespace doivent être protégés.
- Espace de nom
- Cet attribut obligatoire indique l'espace de nom de l'en-tête ou des en-têtes SOAP à protéger au niveau de la confidentialité.
Pour le comportement de Web Services Security Version 1.0, spécifiez la valeur true pour la propriété com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 dans EncryptionInfo dans les liaisons. L'indication de cette propriété génère un élément <EncryptedData>.
Pour un comportement de Web Services Security version 1.1 équivalent à WebSphere Application Server versions antérieures à la version 7.0, attribuez la valeur true à la propriété com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 sur l'élément <encryptionInfo> dans la liaison. Lorsque cette propriété est spécifiée, l'élément <EncryptedHeader> inclut un paramètre wsu:Id et l'élément <EncryptedData> omet le paramètre ID. Cette propriété ne doit être utilisée que si la compatibilité avec Basic Security Profile 1.1 n'est pas requise et qu'il est nécessaire d'envoyer des éléments <EncryptedHeader> à un client ou un serveur qui utilise WebSphere Application Server Version 5.1 Feature Pack for Web Services.
Prise en charge de LTPA
LTPA (Lightweight Third Party Authentication) est pris en charge sous la forme d'un jeton de sécurité binaire dans la sécurité des Services Web. La sécurité des services Web prend en charge les jetons LTPA version 1 et version 2. Le jeton LTPA version qui est plus sécurisé que la version 1, est pris en charge dans WebSphere Application Server 7.0 et les versions suivantes.
Extension de la prise en charge des horodatages
Vous pouvez insérer un horodatage dans d'autres éléments lors du processus de signature, en plus de l'en-tête de sécurité des Services Web. Cet horodatage fournit un mécanisme permettant l'ajout d'un délai à un élément. Ce support est une extension pour WebSphere Application Server. Il se peut que d'autres implémentations de fournisseurs ne puissent pas recevoir les messages comportant un horodatage supplémentaire.
Extension de la prise en charge de la valeur nonce
Vous pouvez insérer une valeur nonce, valeur générée de façon aléatoire, dans différents éléments, en plus du jeton de nom d'utilisateur. Elle permet de réduire le nombre d'attaque de réexécution (replay). Ce support est une extension pour WebSphere Application Server. Il se peut que d'autres implémentations de fournisseurs ne puissent pas recevoir les messages contenant une valeur nonce dans des éléments autres que le jeton de nom d'utilisateur.
Prise en charge de la mise en cache de la valeur nonce distribuée
La mise en cache de la valeur nonce répartie est une nouvelle fonction des services Web dans WebSphere Application Server Versions 6 et les versions suivantes qui permet de répliquer les données nonce entre les serveurs d'un cluster. Par exemple, le cluster C peut comporter le serveur d'applications A et le serveur d'applications B. Si le serveur d'applications A accepte une valeur nonce dont la valeur est X, le serveur d'applications B crée une exception SoapSecurityException s'il reçoit une valeur nonce dont la valeur est identique dans un délai précis.
Mise en cache du certificat X.509
WebSphere Application Server met en cache les certificats X.509 qu'il reçoit pour éviter la validation du chemin d'accès aux certificats et améliorer ses performances. Toutefois, ce changement peut entraîner des risques pour la sécurité. Vous pouvez désactiver la mise en cache des certificats X.509 en effectuant les opérations ci-après.
- Cliquez sur Sécurité > Services Web.
- Dans Propriétés supplémentaires, cliquez sur Propriétés > Nouveau.
- dans la zone de nom de la propriété, entrez com.ibm.ws.wssecurity.config.token.certificate.useCache,
- dans la zone de valeur de la propriété, entrez false.
- Sélectionnez Serveurs > Serveurs d'applications > nom_serveur.
- Dans la section Sécurité, cliquez sur Services Web : Liaisons par défaut pour la sécurité des services Web.
- Dans Propriétés supplémentaires, cliquez sur Propriétés > Nouveau.
- dans la zone de nom de la propriété, entrez com.ibm.ws.wssecurity.config.token.certificate.useCache,
- dans la zone de valeur de la propriété, entrez false.