2010-09-09 18 views
6

Quiero implementar un sistema de autenticación de usuario personalizado en mi aplicación appengine. No quiero usar sesiones Soy un novato en esta área, así que tengo dos preguntas básicas:Autenticación segura con GWT y GAE en https?

1: ¿Es seguro enviar simplemente un nombre de usuario y contraseña con cada RPC único sobre https? ¿Qué debo hacer para mantener ese nombre de usuario y contraseña seguros en el extremo del cliente?

2: ¿Cómo le digo a GWT que use https cuando realiza sus solicitudes?

No sé mucho sobre seguridad, así que por favor no me perdone ningún detalle "obvio".

Gracias!

+0

http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ parece responder a la pregunta 1 con "sí" y "cookies". Aún frustrantemente escurridizo es la respuesta a la pregunta 2. –

+0

¿Cómo funcionó su implementación? ¿Tuvo algún problema con tener que enviar las credenciales de inicio de sesión para cada solicitud? –

+0

¡Ha funcionado muy bien durante tres meses! –

Respuesta

5

Al observar el proceso con Firebug, se muestra que todas las RPC ocurren con el mismo protocolo con el que se solicitó la página de host. Esto parece ser necesario para las reglas del mismo de origen sitio, así que voy a asumir que mis respuestas son

1: Sí, pero es más lento

2: GWT utiliza automáticamente https cuando la página anfitrión era pedido w/https

1

En GAE también puede utilizar la API de servicios de usuario de Google http://code.google.com/appengine/docs/java/users/overview.html. Es muy intuitivo y no necesitará conocer los detalles de seguridad.

+0

Gracias, pero necesito más control del que proporciona API (quiero crear mis propios usuarios, no confiar en un método de autenticación externo). –

2
  1. El envío de nombre de usuario y contraseña a través de HTTPS es seguro, pero nadie hace esto para cada solicitud, porque es posible que algún día olvide/necesite enviar una solicitud a través de HTTP. Además, mantener la contraseña en la memoria atraerá a los hackers de XSS. Una vulnerabilidad XSS inadvertida expondrá las contraseñas. Por lo general, los desarrolladores guardan ya sea session-id o XSRF-token en la memoria y lo envían con cada solicitud.
  2. Mire en http://code.google.com/appengine/docs/java/config/webxml.html#Secure_URLs
  3. No se olvide de la protección XSRF, debe implementarla para las solicitudes que cambian algo (no solo de lectura).
Cuestiones relacionadas