Autenticación con gestión de roles a través del proxy inverso apache2

Autenticación con gestión de roles a través del proxy inverso apache2

Inicialmentepublicado en SO,pero supongo que pertenece más aquí. ¡Sugerencias, comentarios e idealmente soluciones serán bienvenidos! (Por cierto, eliminaré SO Thread si estaba en el lugar equivocado)

Necesito configurar un proxy inverso para proporcionar acceso restringido desde el exterior a un servidor interno. Estos son los principales requisitos:

  • Redirigir solicitudes dehttps://www.ejemplo.comhaciahttp://servidor interno(hecho)
  • Confíe en un mecanismo de autenticación simple pero probado. (actualmente trabajando)
  • Administre los roles de los usuarios agregando algunos parámetros GET a la URL. (pero cómo ?)
  • El servidor aloja una aplicación java. Todavía no tengo acceso a él y el código de la aplicación no se puede cambiar. Esto no debería importar.

Lo instalé y configurémod_proxyy la redirección funciona bien.
La autenticación está usando apache2autenticación básica, lo que debería ser suficiente en términos de seguridad.

Ahora, mi problema es la gestión de roles. Necesito modificar las solicitudes para que el usuario foo tenga privilegios de administrador, mientras que la barra de usuarios no. Debería ser tan simple como configurar un parámetro GET como "&role=admin", pero no sé cómo hacerlo al enviar solicitudes.

Actualmente, los roles se almacenan en una base de datos MySQL dedicada, por lo que obtener los privilegios solo necesita una solicitud, que se realiza fácilmente en PHP. Mi problema es que no sé cómo mantener el comportamiento del proxy si llamo a una página php. Quiero que a cada solicitud se le agreguen los parámetros de función, pero necesito mantener el resto de la solicitud sin modificaciones.

Mi proxy actual hace todo con la configuración de virtualhost (alias .htaccess), pero no tengo idea de qué enfoque podría funcionar. No puedo realizar solicitudes de MySQL en VHost y redirigir a una página PHP sería:Por lo que yo sé- "romper" el concepto de proxy, ya que redirigiría, pero probablemente perdería "otros parámetros de solicitud", lo cual no me queda muy claro, ya que nunca usé proxies.

libapache2-mod-auth-mysqlPodría haber sido una solución, pero el mod parece descontinuado, así que ni siquiera pude probarlo . ¿Podría mod_authn_dbd ser una solución? Hasta ahora, no logré iniciar sesión usándolo, pero de todos modos no estoy seguro de que pueda resolver mi necesidad de agregar un parámetro de obtención.

Me estoy quedando sin ideas.
¿Cómo podría implementar lo que necesito? Estoy bastante seguro de que existe una solución sencilla para una necesidad tan común.

Respuesta1

Lo único que se me ocurre es escribir su propio proxy simple, por ejemplo en php/curl. Apache servirá como un servidor web habilitado para php, y php/curl representará las solicitudes y modificará los parámetros GET, de acuerdo con el nombre de usuario proporcionado. Incluso podría realizar una autenticación habilitada para cookies, no solo HTTP.

También puede intentar lo mismo usando nginx, autenticación HTTP y el módulo nginx lua, pero esto es básicamente lo mismo, menos la necesidad de escribir proxy en lua: lua solo decidirá si el usuario vale la función de administrador o no, y nginx actuará como proxy. solicitudes y modificar argumentos GET.

información relacionada