2011-02-01 11 views
7

Estoy creando una aplicación RESTful. Planeo usar OpenID para la autenticación del usuario. Actualmente, estoy usando LightOpenID para la autenticación OpenID y puedo autenticar a mis usuarios.Administrar la sesión en la aplicación REST después de la autenticación con OpenID

Mi pregunta es ¿qué sigue? después de la autenticación!

  1. Dado que, es una aplicación REST, tendré que usar cookies para la gestión de sesiones ... ¿no?
  2. ¿Qué valores almaceno en las cookies?
  3. ¿Cómo valido la sesión y el usuario se desconecta?

Hice la búsqueda de ejemplos con respecto a la implementación, pero todos los ejemplos se detienen en la autenticación y no hablan sobre la administración de la sesión. Me gustaría saber cómo administra las sesiones en sus aplicaciones y, si es posible, las mejores prácticas y preocupaciones para implementar un enfoque.

Si conoce alguna implementación de referencia, proporcione el enlace.

Respuesta

14

Importante:

Primero algunos consejos de seguridad importantes que usted debe tener en cuenta:

Sus preguntas:

Desde, es una aplicación REST, que se tener que utilizar cookies para la gestión de sesiones .. ¿verdad?

usando sesiones sería la más segura (mejor), pero por supuesto hay muchas más solutions to session management. Pero si solo utiliza cookies (sin php $_SESSION), entonces debe cifrar su cookie. Pero te aconsejaría que simplemente usaras $ _SESSION.

¿Qué valores almacena en Galletas?

No almacena nada en las cookies. $_SESSION crea la cookie (automáticamente => no tiene que pensar en ello) para usted, que es única. Todo lo que ingresa en $_SESSION se almacena en el servidor para que el usuario no pueda leerlo. Puede almacenar la información que quiera almacenar en la sesión, pero tenga en cuenta que es mejor que NUNCA almacene datos confidenciales (números de PIN, tarjeta de crédito, contraseñas, etc.) en su aplicación. Ya mencioné que su $ _SESSION se almacena en el servidor, pero la cookie que tiene un identificador único para que coincida con la sesión almacenada en el disco (o base de datos) podría ser guessed(spoofed).

¿Cómo puedo validar la sesión?

Valida la sesión inspeccionando la información almacenada en la sesión. Supongo que almacena al menos $_SESSION['id'] = $openid->identity; dentro de su sesión. Tenga en cuenta que después de que el usuario inicie sesión en su sitio web usando openid, debe regenerate your session(id) para evitar session fixation.

¿Cómo cierro la sesión de un usuario?

simplemente llame al session_destroy y se borrarán todos los datos almacenados en la sesión.


Espero que haya explicado todas sus preguntas.

PS:

A session in the cookie jar le da una introducción básica a las sesiones (aunque no veo que mencionar la fijación de sesión: $).

+0

gracias por dar esta explicación revelador sobre gestión de sesiones. +5 para los enlaces de información adicional que proporcionó! –

+0

@Abdel son bienvenidos: P. – Alfred

Cuestiones relacionadas