2012-03-29 28 views
6

estoy trabajando en un servidor web usando play framework 2.0, donde el inicio de sesión se ejecuta mediante un software de dispositivo Android que también estamos creando. Y la principal preocupación es que no podemos encontrar ningún soporte para HTTPS en Play 2.0. Siento que este es un proyecto de la escuela que no podemos aprobar nubes ni otro proxy para resolver el HTTPS para nosotros.play-framework [2.0] HTTPS

Nuestro principal problema es la contraseña y el correo electrónico a simple vista en el cuerpo de la solicitud, cifrar y descifrar en el dispositivo móvil y en el servidor parece costoso en cuanto a rendimiento y sentido. HTTPS se encarga de esto, queríamos evitarlo. ¿Hay alguna forma de que podamos usar HTTPS para proteger los datos de inicio de sesión de los usuarios o cualquier otra sugerencia?

Si no es posible que tengamos que migrar, todas son aplicaciones en otro marco, ya que no se verán buenos datos confidenciales importantes que pasan por Internet sin cifrado.

Respuesta

4

Históricamente, he visto a la mayoría de las personas ejecutar el servidor de aplicaciones Java/Scala detrás de un proxy inverso de algún tipo. La configuración de HTTPS en apache no es muy difícil, y luego simplemente use ModProxy para enviar solicitudes internamente a su aplicación Play.

Cualquiera de los sistemas de proxy inverso puede hacer esto, nginx también es popular y generalmente tiene una configuración más sencilla que apache, pero nunca lo he usado con HTTPS.

La razón número uno para hacer esto normalmente es la seguridad. No puede iniciar un programa Java como usuario no privilegiado en el puerto 80. Si inicia su programa Java como raíz ejecutándose en el puerto 80, ¡cualquier agujero en su aplicación tiene privilegios de administrador! Como resultado, al iniciar la aplicación Java en otro puerto, se invierte el proxy de un servidor web que puede ejecutarse como un usuario sin privilegios en el puerto 80.

(*) Esto es un poco simplificado, pero una discusión de esta rareza está más allá del alcance de esto, creo.

+0

Puede iniciar un usuario sin privilegios en el puerto 80 con ** ** authbind y/o ** ** jsvc que será comience como root, enlace el puerto y luego descállelo antes de inicializar su programa java. –

+0

Puede usar iptables para reenviar tráfico desde el puerto 80 a su aplicación no-raíz escuchando en un puerto más alto - google para "iptables forward port 80 to 8080", por ejemplo. – KajMagnus

2

Ahora es posible utilizar Play y https directamente. Esto se añadió en Juego 2.1

Basta con iniciar el servidor con:

JAVA_OPTS=-Dhttps.port=9001 play start 
Cuestiones relacionadas