haproxy fuerza una redirección para iniciar sesión y redirigir nuevamente

haproxy fuerza una redirección para iniciar sesión y redirigir nuevamente

tengo un sitio webhttp://blahblah.com Quiero agregar una página de inicio de sesión antes de cualquier cosa.http://blahblah.com. He escrito un código de inicio de sesión simple en php. El problema es que no puedo modificar el código en blahblah, es un microservicio escrito en óxido y otros idiomas.

En login.php, puedo redirigir a blahblah.com según sea necesario. Sé que puedo obligar a haproxy a redirigir a my-login.com si la gente visita blahblah.com, y luego en my-login.com podría redirigir a blahblah.com pero esto podría terminar en círculos.

¿Alguien puede ayudarme o darme consejos sobre cómo debería ser la configuración de haproxy para que esto funcione?

Respuesta1

Puede que HAProxy no sea la mejor herramienta para esto, pero es difícil decirlo sin comprender mejor su arquitectura y uso. De todos modos, una de las formas es utilizar una mapfunción para elegir el backend correcto.

Verhttps://www.haproxy.com/blog/introduction-to-haproxy-maps/, pero aproximadamente harías algo como

frontend frontend-blahblah
 bind *:443
 use_backend %[req.hdr(x-app-auth),map(/mnt/resource/token.map,backend-unauth)]

El archivo de mapa /mnt/resource/token.maptendría una lista de claves de autenticación, cada una de las cuales se asigna al backend-authbackend (es decir, blahblah.com). Cualquiera que no tenga una clave de autenticación será enviado a backend-unauth(es decir, su servidor de inicio de sesión).

Además, deberá hacer lo siguiente:

  1. En este ejemplo , la aplicación tendría que enviar el X-App-Authencabezado con cada solicitud. O cámbielo para usar cookies como req.cook(APPAUTH).
  2. Cuando un usuario inicia o cierra sesión, /mnt/resource/token.mapsu servidor de inicio de sesión deberá actualizar el archivo de mapa ingresado. Consulte el artículo mencionado anteriormente para conocer varias formas de hacer esto. Quizás lo más fácil sea usar http-request set-mapy http-request del-maprestringir el acceso a la IP de su servidor de inicio de sesión, por ejemplo, hacer que HAProxy escuche en un 'puerto de administración' separado y rechazar solicitudes de otras IP además de cualquier otra seguridad. Por ejemplo, su servidor de inicio de sesión podría realizar una llamada ahttps://blahblah.com:8443/add-token/123456789... para agregar una clave de autenticación.
  3. El servidor de inicio de sesión deberá encargarse de configurar la cookie/devolver la clave de autenticación al cliente. Probablemente haya algunos problemas entre sitios, lo que significa que es posible que sea necesario realizar algún ajuste en el encabezado HAProxy; es posible que ya los haya considerado y resuelto.

Todo esto es un instrumento contundente: un usuario inicia sesión y tiene permiso para acceder al sitio o no. No hay mucha granularidad que diferencie a los usuarios; Si desea eso, sería mejor que coloque su servidor de inicio de sesión frente al otro sitio como proxy.

información relacionada