El servicio de redirección de OpenShift a HTTPS pierde la dirección IP de los usuarios
-
21-12-2019 - |
Pregunta
Hola, IAM redirigiendo todo mi tráfico a HTTPS, como se sugiere en la Base de Conocimiento: https://openshift.redhat.com/community/kb/kb-e1044-how-to-redirect-traffic-to-https
Sin embargo, después de hacer esto, no puede obtener la dirección IP de los usuarios y, en su lugar, obtener la dirección IP del servidor que se redirige:
A continuación se muestra un ejemplo de una implementación específica de Java Spring MVC.El DRENTVEEDIP se convierte en los servidores que se redirigieron a HTTPs en lugar de los usuarios IP.
@RequestMapping(value = "/payment/", method = RequestMethod.GET)
public String newBracqet(Model model, HttpServletRequest request) {
String currentViewedIP = request.getRemoteAddr();
}
Solución
Si el usuario está detrás de un servidor proxy o accede a su servidor web a través de un equilibrador de carga (por ejemplo, en el alojamiento de la nube), el código anterior obtendrá la dirección IP del servidor proxy o el servidor de equilibrador de carga, no la dirección IP originalde un cliente.
Para resolverlo, debe obtener la dirección IP del encabezado HTTP de la solicitud "X-Forwards-for (XFF)".
//is client behind something?
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}