WS-Security (WSS)

En relación con el anterior artículo de cloud, a continuación se presenta el protocolo WSS. El WS-Security (WSS) es una extensión del protocolo SOAP que define mecanismos para proteger la integridad y confidencialidad en los mensajes mediante el uso de SAML, Kerberos, tokens o los certificados X.509, además de la encriptación y las signaturas XML. En primer lugar, tenemos que tener en cuenta que WS-Security no es un nuevo tipo de servicios web ni de seguridad. WS-Security define cómo utilizar mecanismos existentes para proporcionar autenticación, confidencialidad e integridad a los Servicios Web. De este modo, en lugar de definir un estándar desde cero, resuelve el problema de la autenticación mediante el uso de Kerberos y certificados X.509, se cifra con el XML Encryption y se firma con la XML Signature tras preparar los datos mediante el XML Canonicalization. Una de las características del WS-Security es que es un framework que integra los anteriores estándares en el mensaje de tipo SOAP de modo que se puede aplicar tanto a trozos del documento como a su totalidad e independientemente de los protocolos de transporte. WS-Security define una cabecera de SOAP para almacenar la información de seguridad de tal modo que si se implementa una signatura digital, esta cabecera incluirá la información necesaria asociada como, por ejemplo, el resultado de la misma. En la siguiente figura se muestra un ejemplo de flujo de mensajes utilizando el WS-Security. El Security Token Service es el servicio de validación empleado, es decir, Kerberos, certificados X.509 o un sistema consistente en user/password. El procedimiento consiste en un cliente que solicita los tokens necesarios para dar seguridad a la transmisión y, a partir de aquí, los añade convenientemente al mensaje y los manda al servidor. Éste es capaz de validar la integridad, confidencialidad y no repudio del mensaje y, a continuación, puede responder al cliente. AUTENTICACIÓN
- UsernameToken: se utiliza un nombre de usuario junto con una contraseña para validar al cliente. En este caso, el cliente debe signar el mensaje y el servidor puede comprobar la veracidad calculando la firma del mensaje recibido y comparándola con el valor recibido.
- En el caso de utilizar certificados X.509, el mensaje puede ser firmado utilizando una clave privada. Entonces, el mensaje debe contener el certificado en un BinarySecurityToken. Se recomienda firmar también el certificado con la clave privada.
ENCRIPTACIÓN Dado que WS-Security no define nuevos estándares sino que se basa en los ya existentes, para la encriptación se puede usar criptografía de clave pública o privada, simétrica o asimétrica. Normalmente, se realiza a través del ya antes mencionado XML Encription, que permite cifrar tanto partes de un documento como su totalidad y que se caracteriza por cifrar contenido, por lo que se puede mantener la estructura de XML FIRMA Para firmar los documentos se pueden utilizar los tres métodos de autenticación mencionados anteriormente. Sin embargo, también se ofrece la posibilidad de aplicar la XML Signature, la cual define la sintaxis adecuada para las signaturas digitales que se pueden implementar. Además, también se incluye el modo de comprobar su veracidad, así como el modo de generarlas. Se distingue de otras opciones (com el PGP) por soportar la firma de sólo una parte del árbol XML (también se ofrece la posibilidad de que dos mensaje que difieran por ejemplo en un espacio, tengan la misma firma).