2010-03-23 15 views
5

Tenemos una aplicación REST que se utiliza principalmente para aplicaciones que no necesitan mantener su estado, por lo que hasta la fecha hemos estado en silencio "RESTFUL" sin mantener un estado. Utilizamos el Private/Public (similar a Amazon) para la autenticación. Actualmente el cliente pasa las credenciales para cada solicitudForma de mantener una sesión en una aplicación REST

Ahora tenemos un nuevo requisito donde tenemos que mantener el estado (o conversación). El cliente puede ser un Aplicación enriquecida o un dispositivo de mano. Estoy tratando de encontrar la mejor manera de implementar el estado. ¿Deberíamos pasar una identificación de sesión y mantener esa identificación? ¿Es esa la mejor y la única solución?

+2

¿Por qué la RIA o la computadora de mano no pueden mantener una sesión y obtener recursos de su servidor REST? ¿Por qué romper las reglas básicas de REST? ¿Por qué no presionar la sesión con estado donde pertenece, en la interfaz humana? –

+0

Buena pregunta, ¿está de acuerdo con las credenciales que se envían en cada solicitud seguida de la autenticación ... que parece ser el factor decisivo para algunos de mis muchachos en el equipo – romanianGeek

+0

La autenticación puede almacenarse fácilmente en el servidor e infligir casi cero penalizaciones de rendimiento. – Gandalf

Respuesta

3

Pasar una ID de sesión no es la única manera y no es la mejor manera de mantener el estado conversacional. La mejor manera, si tiene un RIA es mantener el estado en el propio cliente, donde pertenece, como sugieren algunos de los comentarios. Esto significa que aún se envían las credenciales a cada solicitud.

Re-autenticación en cada solicitud es la única manera, y si siente que hay un rendimiento en el servidor, el servidor puede (como se sugiere) almacenar en caché el resultado de una solicitud de autenticación por un período de tiempo. Digest authentication podría ayudar a evitar las respuestas de almacenamiento en caché mediante la firma criptográfica de los tokens que pasan por el cable.

Si eso no es suficiente, podría usar algo similar a Google ClientLogin, y darle al cliente un token cifrado que se puede verificar sin necesidad de pedir una autorización, y sin pasar las credenciales reales del usuario por el cable. Google ellos mismos haciendo el inicio de sesión a través de https, y luego utilizando los tokens generados a través de http. Está abierto para ataques de repetición durante el tiempo de vida del token.

+0

+1 Para el enlace a Autenticación implícita. – Triztian

Cuestiones relacionadas