Estoy usando Apache httpd como proxy inverso frente a una aplicación web. La autenticación se lleva a cabo mediante un módulo (mod_auth_mellon), que establece varias variables de entorno de solicitud con detalles sobre el usuario autenticado (nombre de usuario, nombre para mostrar, etc.).
Utilizo mod_headers para eliminar los encabezados de la solicitud entrante y los reemplazo con el valor de las variables de entorno de la solicitud establecidas por mod_auth_mellon.
RequestHeader unset mellon_uid
RequestHeader set mellon_uid "%{mellon_uid}e" env=mellon_uid
Por lo tanto, cualquier encabezado proporcionado por el cliente mellon_uid
se descarta. Si mod_auth_mellon considera que el usuario ha iniciado sesión, mellon_uid
se agrega un nuevo encabezado de solicitud a la solicitud que se envía a la aplicación web.
Hasta ahora he hecho esto manejable usando mod_macro:
Use Attribute uid
Use Attribute display_name
Use Attribute email
... y así sucesivamente, donde Attribute
hay una macro que se expande a las dos RequestHeader
directivas anteriores para el atributo proporcionado.
Sin embargo, algunos detalles del usuario tienen múltiples valores, por lo que mod_auth_mellon establece múltiples variables de entorno de solicitud del formulario:
mellon_foo_0 = first
mellon_foo_1 = second
mellon_foo_2 = third
mellon_foo_N = 3
Dado que la cantidad de valores de un atributo puede variar, no puedo confiar en una lista estática de variables para procesar de esta manera.
Me gustaría evitar el uso MellonMergeEnvVars
, que en su lugar establecería lo siguiente:
mellon_foo = first;second;third
mellon_foo_N = 3
... porque esto significa que la aplicación web ahora tiene que lidiar con la complejidad de analizar correctamente el mellon_foo
encabezado de la solicitud, lidiar con valores que contienen punto y coma, etc. De hecho, no me queda claro que mod_auth_mellon realice algún escape, lo que hace que el análisis sea inequívoco. imposible (si estoy en lo cierto...)
Respuesta1
Creo que mientras solo mires los primeros mellon_foo_N
valores, no debería haber ningún riesgo aquí, porque mod_auth_mellon siempre establecerá esos valores por sí mismo, anulando cualquier valor que el usuario pueda intentar enviar. También debería configurarse siempre mellon_foo_N
, pero siempre puedes desactivarlo inicialmente para estar seguro.