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 map
funció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.map
tendría una lista de claves de autenticación, cada una de las cuales se asigna al backend-auth
backend (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:
- En este ejemplo , la aplicación tendría que enviar el
X-App-Auth
encabezado con cada solicitud. O cámbielo para usar cookies comoreq.cook(APPAUTH)
. - Cuando un usuario inicia o cierra sesión,
/mnt/resource/token.map
su 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 usarhttp-request set-map
yhttp-request del-map
restringir 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. - 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.