Soy nuevo en los servicios web RESTful y RESTlet. Solo tenemos experiencia en la creación de aplicaciones web basadas en servlets (Servlet/JSP en JBoss/Apache). Ahora, estamos construyendo una aplicación basada en RESTlet en la que la API del lado del servidor sería utilizada por dos tipos de clientes: la web que usa el navegador y la basada en el swing a través del escritorio.¿Cómo imponer 'sesiones' en servicios web RESTful utilizando RESTlet?
Lo que entiendo es que a medida por RESTO conceptos a) del servidor no puede mantener sesiones para mejorar la escalabilidad y algunas otras razones b) cada solicitud de cliente debe ser auto-contenida
Ahora, estoy realmente confundido cómo lograr esto. Supongamos que tomamos una simple aplicación de carrito de compras.
Paso 1) El cliente envía la solicitud de autenticación, el servidor se autentica y el servidor responde OK.
Paso 2) El cliente envía una solicitud para agregar un artículo al carrito de la compra. El servidor responde OK.
Paso 3) El cliente envía otra solicitud para agregar el segundo elemento a la tarjeta de compra. El servidor responde OK.
Normalmente, en una aplicación web normal, se crea una sesión en el Paso 1 en el servidor y desde ese momento todas las solicitudes relacionadas con ese cliente se asocian automáticamente con la misma sesión y almacenamos el estado de la sesión (Carrito de compra en este caso) en el objeto de sesión y recuperarlo/actualizarlo con las solicitudes posteriores del cliente.
Ahora, en el escenario anterior:
1) ¿cómo autenticar y autorizar cliente en el paso 2 y 3 si no hay una sesión mantenida en el servidor?
2) ¿El cliente necesita enviar información adicional con cada solicitud?
3) ¿Cómo recuperamos el Carrito de compras específico del cliente en el Paso 3?
4) ¿El cliente necesita enviar su Carrito de Compras que fue creado/devuelto por el servidor en el Paso 2 nuevamente en el Paso 3?
Obviamente, este es el caso de uso más simple, por lo que cada uno que desarrolle servicios web RESTful debe diseñar su aplicación para manejar esto. ¿Cuál es la mejor y más común forma de manejar la gestión de sesiones, la autenticación y la autorización en servicios web RESTful utilizando RESTLet? Si tenemos que mantener el caché en el lado del servidor con los datos del cliente, ¿cómo es esto diferente del servidor que mantiene las sesiones en nuestro nombre?
Gracias de antemano, profundo
pero ¿por qué es malo si el servidor recuerda quién es usted (y solo eso). Si no se adhiere a la especificación REST de forma dogmática, puede comprometerse y evitar la presentación de la autenticación en cada solicitud. – amphibient
¿Puede su diseño sobrevivir a un reinicio? Además, siempre hay algún control para asegurarse de que sea la misma persona y no una sesión robada. – PhD