From 8f6c765898f444fe0c452a41e6eff4549e445274 Mon Sep 17 00:00:00 2001
From: markt
Date: Wed, 14 Apr 2010 23:17:26 +0000
Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49024
Enhance the RemoteIpFilter docs Patch provided by Cyrille Le Clerc
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@934239 13f79535-47bb-0310-9956-ffa450edef68
---
webapps/docs/config/filter.xml | 290 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 290 insertions(+)
diff --git a/webapps/docs/config/filter.xml b/webapps/docs/config/filter.xml
index 99b85b9de..3555167f7 100644
--- a/webapps/docs/config/filter.xml
+++ b/webapps/docs/config/filter.xml
@@ -226,6 +226,296 @@
+
+
+ The filter will process the x-forwarded-for http header.
+
+
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>RemoteIpFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>REQUEST</dispatcher>
+ </filter-mapping>
+
+
+
+
+
+
+ The filter will process x-forwarded-for and
+ x-forwarded-proto http headers. Expected value for the
+ x-forwarded-proto header in case of SSL connections is
+ https (case insensitive).
+
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>protocolHeader</param-name>
+ <param-value>x-forwarded-proto</param-value>
+ </init-param>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>RemoteIpFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>REQUEST</dispatcher>
+ </filter-mapping>
+
+
+
+
+ RemoteIpFilter configuration:
+
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10, 192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>protocolHeader</param-name>
+ <param-value>x-forwarded-proto</param-value>
+ </init-param>
+ </filter>
+
+ Request values:
+
+
+ Property
+ Value Before RemoteIpFilter
+ Value After RemoteIpFilter
+
+
+ request.remoteAddr
+ 192.168.0.10
+ 140.211.11.130
+
+
+ request.header[ 'x-forwarded-for']
+ 140.211.11.130, 192.168.0.10
+ null
+
+
+ request.header[ 'x-forwarded-by']
+ null
+ null
+
+
+ request.header[ 'x-forwarded-proto']
+ https
+ https
+
+
+ request.scheme
+ http
+ https
+
+
+ request.secure
+ false
+ true
+
+
+ request.serverPort
+ 80
+ 443
+
+
+
+
+ Note : x-forwarded-by header is null because only
+ internal proxies has been traversed by the request.
+ x-forwarded-for is null because all the proxies are
+ trusted or internal.
+
+
+
+
+
+ RemoteIpFilter configuration:
+
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10, 192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>trustedProxies</param-name>
+ <param-value>proxy1, proxy2</param-value>
+ </init-param>
+ </filter>
+
+ Request values:
+
+ Property
+ Value Before RemoteIpFilter
+ Value After RemoteIpFilter
+
+
+ request.remoteAddr
+ 192.168.0.10
+ 140.211.11.130
+
+
+ request.header[ 'x-forwarded-for']
+ 140.211.11.130, proxy1, proxy2
+ null
+
+
+ request.header[ 'x-forwarded-by']
+ null
+ proxy1, proxy2
+
+
+
+
+ Note : proxy1 and proxy2 are both trusted proxies that
+ come in x-forwarded-for header, they both are migrated in
+ x-forwarded-by header. x-forwarded-for is null
+ because all the proxies are trusted or internal.
+
+
+
+
+ RemoteIpFilter configuration:
+
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10, 192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>trustedProxies</param-name>
+ <param-value>proxy1, proxy2</param-value>
+ </init-param>
+ </filter>
+
+ Request values:
+
+ Property
+ Value Before RemoteIpFilter
+ Value After RemoteIpFilter
+
+
+ request.remoteAddr
+ 192.168.0.10
+ 140.211.11.130
+
+
+ request.header[ 'x-forwarded-for']
+ 140.211.11.130, proxy1, proxy2, 192.168.0.10
+ null
+
+
+ request.header[ 'x-forwarded-by']
+ null
+ proxy1, proxy2
+
+
+
+
+ Note : proxy1 and proxy2 are both trusted proxies that
+ come in x-forwarded-for header, they both are migrated in
+ x-forwarded-by header. As 192.168.0.10 is an internal
+ proxy, it does not appear in x-forwarded-by .
+ x-forwarded-for is null because all the proxies are
+ trusted or internal.
+
+
+
+
+
+ RemoteIpFilter configuration:
+
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10, 192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIPProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>trustedProxies</param-name>
+ <param-value>proxy1, proxy2</param-value>
+ </init-param>
+ </filter>
+
+ Request values:
+
+ Property
+ Value Before RemoteIpFilter
+ Value After RemoteIpFilter
+
+
+ request.remoteAddr
+ 192.168.0.10
+ untrusted-proxy
+
+
+ request.header[ 'x-forwarded-for']
+ 140.211.11.130, untrusted-proxy, proxy1
+ 140.211.11.130
+
+
+ request.header[ 'x-forwarded-by']
+ null
+ proxy1
+
+
+
+
+ Note : x-forwarded-by holds the trusted proxy proxy1 .
+ x-forwarded-by holds 140.211.11.130 because
+ untrusted-proxy is not trusted and thus, we can not trust that
+ untrusted-proxy is the actual remote ip.
+ request.remoteAddr is untrusted-proxy that is an IP
+ verified by proxy1 .
+
+
+
The Remote IP Filter supports the
--
2.11.0