La sécurité des services Web assure l'intégrité, la confidentialité et l'authentification des messages
OASIS Web Services Security (WS-Security) est une norme souple qui permet de protéger les services Web au niveau du message dans plusieurs modèles de sécurité. Vous pouvez sécuriser les messages SOAP via la signature numérique XML, la confidentialité via le chiffrement XML et la propagation des données d'identification via les jetons de sécurité.
La spécification WS-Security définit les principales fonctions de protection de l'intégrité et de la confidentialité d'un message et fournit des mécanismes pour associer des demandes de sécurité au message. La sécurité de niveau message (ou sécurisation des services au niveau des messages) traite les mêmes exigences de sécurité que dans le cas de la sécurité Web classique. Il s'agit d'exigences de sécurité telles que l'identité, l'authentification, l'autorisation, l'intégrité, la confidentialité, la non répudiation, l'échange de message de base, etc. La sécurité Web classique et la sécurité de niveau message partagent la plupart des mécanismes permettant la gestion de la sécurité, y compris les certificats numériques, le chiffrement et les signatures numériques. Bien que la technologie au niveau du transport HTTPS et SSL (Secure Sockets Layer) puisse être utilisée pour protéger les services Web, certains scénarios de sécurité sont traités de manière plus efficace par la sécurité au niveau du message.
Les mécanismes de sécurité web classiques, tels que HTTPS, peuvent être insuffisants pour la gestion des exigences de sécurité de tous les scénarios de services Web. Par exemple, lorsqu'une application envoie un document à l'aide de JAX-RPC via HTTPS, le message n'est sécurisé que pour la connexion HTTPS, en d'autres termes, lors du transport du document entre le demandeur de service (le client) et le service. Cependant, l'application peut exiger la sécurisation des données du document au-delà de la connexion HTTPS, voire au-delà de la couche transport. En sécurisant les services Web au niveau des messages, la sécurité de niveau message est capable de satisfaire ces exigences étendues.
La sécurité de niveau message s'applique aux documents XML qui sont envoyés en tant que messages SOAP. La sécurité de niveau message permet à la sécurité de faire partie du message proprement dit, en incorporant toutes les informations de sécurité requises dans l'en-tête SOAP du message. En outre, la sécurité de niveau message peut appliquer des mécanismes de sécurité, tels que le chiffrement et la signature numérique, aux données du message proprement dit.
Avec la sécurité de niveau message, le message SOAP proprement dit contient les informations requises pour la sécurisation du message ou des informations relatives à l'emplacement à partir duquel extraire ces informations pour traiter les besoins en sécurité. Le message SOAP contient également des informations relatives aux protocoles et procédures permettant de traiter la sécurité de niveau message spécifiée. Cependant, la sécurité de niveau message n'est liée à aucun mécanisme de transport particulier. Dans la mesure où les informations de sécurité font partie du message, elles sont indépendantes d'un protocole de transport tel que HTTPS.
Le client ajoute à l'en-tête du message SOAP des informations de sécurité applicables à ce message particulier. Lorsque le message est reçu, le noeud final de service Web utilise les informations de sécurité figurant dans l'en-tête pour vérifier le message sécurisé et le valider par rapport à la règle. Par exemple, le noeud final de service peut contrôler la signature du message et vérifier que le message n'a pas été falsifié. Il est possible d'ajouter une signature et des informations de chiffrement dans les en-têtes de message SOAP, ainsi que d'autres informations, telles que des jetons de sécurité pour l'identité (par exemple, un certificat X.509), qui sont liées au contenu de message SOAP.
Pour WebSphere Application Server version 6 ou ultérieure, la sécurité des services Web peut être appliquée sous forme de sécurité de niveau transport et de sécurité de niveau message. Vous pouvez des créer des conceptions client-serveur hautement sécurisées, à l'aide de ces mécanismes de sécurité. La sécurité au niveau transport se rapporte à la sécurisation de la connexion entre une application client et un service Web avec la couche SSL.
Vous pouvez appliquer divers scénarios de sécurité de services Web en fonction des caractéristiques de chaque application de Services Web. Vous pouvez choisir comment protéger vos informations lors de l'utilisation de la sécurité de services Web. Le mécanisme d'authentification, l'intégrité et la confidentialité peuvent être appliqués au niveau des messages et au niveau du transport. Lorsque la sécurité de niveau message est appliquée, vous pouvez protéger le message SOAP à l'aide d'un jeton de sécurité, d'une signature numérique ou du chiffrement.
Sans la sécurité des Services Web, le message SOAP est envoyé en texte clair et les informations personnelles telles que l'ID utilisateur ou le numéro de compte ne sont pas protégées. Si la sécurité des Services Web n'est pas appliquée, l'enveloppe SOAP du message SOAP ne contient qu'un corps SOAP. En appliquant les fonctions de la spécification WS-Security, l'en-tête de sécurité SOAP est inséré sous l'enveloppe SOAP dans le message SOAP, lorsque le corps SOAP est signé et chiffré.
- Le terme confidentialité indique les contraintes de confidentialité appliquées aux messages générés. Il s'agit notamment de déterminer les parties du message généré qui doivent être chiffrées, ainsi que les parties du message auxquelles rattacher des éléments Nonce et d'horodatage chiffrés.
- L'intégrité est fournie via l'application d'une signature numérique à un message SOAP. La confidentialité est appliquée par le chiffrement de message SOAP. Plusieurs signatures et chiffrements sont pris en charge. En outre, la signature et le chiffrement peuvent être appliqués aux mêmes parties, telles que le corps SOAP.
Vous pouvez ajouter un mécanisme d'authentification en insérant divers types de jetons de sécurité, comme le jeton Username (élément <UsernameToken>). Lorsque le jeton Username est reçu par le serveur de services Web, le nom d'utilisateur et le mot de passe sont extraits et vérifiés. Uniquement lorsque la combinaison de nom d'utilisateur et de mot de passe est valide, le message est accepté et traité sur le serveur. L'utilisation du jeton Username n'est qu'une des nombreuses méthodes d'implémentation de l'authentification. Ce mécanisme est également appelé authentification de base.
Outre les signatures numériques, le chiffrement et l'authentification de base, les autres formes d'authentification incluent la vérification d'identité, les jetons LTPA, les jetons Kerberos et les jetons personnalisés. Ces autres formes d'authentification sont également des extensions de WebSphere Application Server. Vous pouvez configurer ces mécanismes d'authentification à l'aide des outils d'assemblage pour implémenter l'authentification.
Grâce aux mises à jour apportées à Web Services Security dans la spécification version 1.1, il est possible d'insérer des fonctionnalités supplémentaires en plus de ces mécanismes de base. Certains mécanismes de la version 1.1 sont des extensions de WebSphere Application Server, telles que la confirmation de signature et l'en-tête chiffré. Les profils de jeton de sécurité pris en charge par WebSphere Application Server incluent le profil de jeton de nom d'utilisateur, le profil de jeton X.509 et le profil Kerberos. Dans ce cas, lorsque le message est reçu, le noeud final de service Web utilise les informations de sécurité figurant dans l'en-tête pour appliquer les mécanismes de sécurité appropriés au message. Par exemple, il est possible que le noeud final de service ajoute une signature et des informations de chiffrement dans les en-têtes de message SOAP, ainsi que d'autres informations, telles que des jetons de sécurité, qui sont liées au contenu de message SOAP. Vous pouvez implémenter ces nouveaux mécanismes à l'aide d'un ensemble de règles.
WS-SecureConversation a été introduit dans WebSphere Application Server version 6.1 avec le Feature Pack for Web Services. Secure Conversation utilise une clé de session pour protéger les messages SOAP de manière plus efficace, en particulier lorsque plusieurs messages SOAP sont transmis dans une session.
- Le jeton Kerberos qui est utilisé pour l'authentification et la protection ultérieure des messages.
- La règle dynamique qui permet au client de récupérer la règle du fournisseur via une demande WSDL ou à l'aide de WS-MEX (Web Services MetadataExhange), pour simplifier le déploiement du client de services Web.