BrowserID y HTTPS conflict?

1

Mi flask-webapp estaba utilizando BrowserId . Cuando intenté extender mi aplicación más allá, redireccioné todas las solicitudes entrantes a HTTPS . El redireccionamiento HTTPS funcionó bien, pero ahora la función de inicio de sesión da como resultado un:

  

error de inicio de sesión: error

¿Qué está causando este problema? ¿Qué podría hacer para arreglarlo? En caso de que importe aquí está mi aplicación web. . Estoy desplegando en heroku usando Gunicorn como el servidor. Aquí están los registros de heroku para un inicio de sesión fallido

    
pregunta Drew Verlee 08.01.2013 - 20:46
fuente

2 respuestas

1

No estoy familiarizado con Flask, pero sospecho que esto puede deberse a un problema al redireccionar una solicitud POST . En particular, el POST solicita que el el front-end envía al backend para verificar la aserción.

Una cosa que podrías probar (para probar la teoría anterior) es que tu aplicación no escuche en el puerto 80 y solo en el 443. De esa manera no habrá una mezcla de HTTP y HTTPS y flask-sslify no tendrá para redirigir cualquier cosa.

    
respondido por el Francois Marier 08.01.2013 - 23:15
fuente
0

Una cosa que puedes intentar es intentar modificar el cliente, para POST directamente a HTTPS.

Parece que lo que podría estar sucediendo ahora mismo es que el cliente se está enviando a una URL HTTP; luego flask-sslify recibe la solicitud HTTP, responde al cliente con una redirección y activa al cliente para que vuelva a enviar la solicitud POST a una URL de HTTPS.

Debería poder comprobar si este es lo que está sucediendo con, por ejemplo, Firebug o Wireshark o cualquier otra herramienta que le permita ver las solicitudes que realiza el cliente.

Si esto es lo que está sucediendo, una cosa que podría intentar es cambiar el cliente para que se publique directamente mediante HTTPS. En otras palabras, intente cambiar el cliente para que la solicitud POST inicial se envíe a través de HTTPS, para que nunca pase por HTTP y nunca desencadene una redirección. Sugeriría intentar esto, para ver si hace que el problema desaparezca. Si hace que el problema desaparezca, da una idea de dónde podría estar el problema (tal vez el cliente no maneje los redireccionamientos para POST de la manera que usted quisiera, o tal vez haya un problema en flask-sslify; caso, es una pista gigante que debería ayudar a depurar el problema).

Puede verificar si tuvo éxito en asegurarse de que el cliente envíe el POST inicialmente a través de HTTPS en primer lugar, utilizando las mismas herramientas de depuración (por ejemplo, Firebug o Wireshark).

En términos generales, hacer que el cliente use HTTPS directamente (si es posible) es mejor que confiar en las redirecciones iniciadas por el servidor para redirigir al cliente de HTTP a HTTPS. Simplificará las cosas, y también es más seguro. (Si el cliente envía su solicitud inicial a través de HTTP, y usted confía en un redireccionamiento iniciado por el servidor, seguirá siendo vulnerable a los ataques de intermediarios. Si la solicitud inicial del cliente es más de HTTPS, entonces no es vulnerable a los ataques del hombre en el medio.) Es posible que simplificar cosas como esta pueda hacer que el error desaparezca, y no debería ser demasiado difícil verificar si ese es realmente el caso.

Por otra parte, si su cliente ya está ya ENVIANDO directamente a HTTPS (si su cliente nunca envía ninguna solicitud HTTP en primer lugar, y no hay redirección del servidor), entonces no No tengo la menor idea de lo que está pasando.

    
respondido por el D.W. 09.01.2013 - 21:43
fuente

Lea otras preguntas en las etiquetas