web services - services - Seguridad para los servicios web de Spring Restful
spring security rest token authentication (2)
Estoy escribiendo un proyecto de servicios web de Spring Restful. Necesito escribir servicios web seguros. Para seguridad, ya estoy usando Spring Security + SSL, pero ahora necesito algo de seguridad para el cifrado y la firma de mensajes . Sé cómo cifrar el mensaje desde el código, sin embargo, estoy buscando un mecanismo para habilitar el cifrado / descifrado automático y la firma de mensajes.
He estado buscando diferentes alternativas de seguridad, incluyendo Spring WSS y otras, pero la mayoría de ellas son para SOAP. Alguien podría sugerirme algún mejor mecanismo de seguridad y un enlace para el mismo.
Básicamente tienes dos patrones para la seguridad REST:
Cifre y firme solicitudes / respuestas en el nivel de la aplicación y ejecute sobre HTTP. Esto implica una cantidad significativa de trabajo, ya que necesita canonizar todos los datos antes de firmar y asegurarse de que el cliente / servidor siga exactamente el mismo proceso. Este enfoque se adoptó en las primeras versiones de los protocolos de servicios web de amazon.
Utilizar SSL (posiblemente con certificados de cliente). Este es el enfoque preferido ya que no hay necesidad de reinventar la rueda. Los aceleradores SSL están disponibles y el rendimiento será significativamente mejor que el manejo del cifrado y el inicio de sesión en su código.
Amazon ahora se ha movido a usar SSL y usted debería hacer lo mismo. Este artículo da una buena comparación de los dos enfoques.
REST vs SOAP
Se refirió a SOAP y WS-Security, que define un protocolo para el cifrado y la firma a nivel de mensaje (en lugar de transporte). La razón por la cual WS-Security define tal protocolo es para proporcionar confidencialidad, integridad y autenticidad de extremo a extremo sobre una arquitectura SOA intermediada. Por ejemplo, puede enviar un mensaje SOAP del Servicio A al Servicio B que se envía a través de CD y E. SSL / TLS funciona a nivel de transporte y, por lo tanto, solo protegerá el mensaje entre A y B. Sin embargo, REST no está diseñado para una arquitectura de intermediario. por lo que este enfoque no es aplicable en su caso.
Existen múltiples formas de asegurar sus servicios web tranquilos, desafortunadamente hay muchos enlaces que brindan información para asegurar los servicios web de jabón, pero a medida que se recupera la popularidad, es de la mayor necesidad encontrar una manera de asegurar y encontrar una manera de administrar las sesiones. de su servicio web de descanso. Por lo tanto, para asegurar mi Spring MVC con un soporte tranquilo, al menos debe considerar tres aspectos.
1) Autenticación. - Para autenticación se puede utilizar Spring Security.
2) Autorización. - Para Autorizar una solicitud se puede utilizar OAuth.
3) Asegurar la comunicación. - SSL puede ser usado para asegurar el canal de comunicación.
4) Cifrado: una vez más, Oauth puede resolver el propósito
5) Firma de mensajes. - Nuevamente Oauth puede resolver el propósito.
Por lo tanto, para garantizar un servicio web tranquilo, se puede utilizar la seguridad + OAuth. Los otros mecanismos de seguridad que se pueden usar son Http Basic Security y Digest Security.
Aquí hay un muy buen ejemplo de cómo asegurar un servicio web tranquilo con seguridad Spring: http://java.dzone.com/articles/securing-restful-web-service
Además, para utilizar Spring Security junto con OAuth, puede seguir este tutorial: