public class XForwardedRemoteAddressResolver extends Object implements RemoteAddressResolver
RemoteAddressResolver and
ServerHttpRequest.getRemoteAddress(). Use the static constructor methods which
meets your security requirements.| Modifier and Type | Field and Description |
|---|---|
static String |
X_FORWARDED_FOR |
| Modifier and Type | Method and Description |
|---|---|
static XForwardedRemoteAddressResolver |
maxTrustedIndex(int maxTrustedIndex) |
InetSocketAddress |
resolve(org.springframework.web.server.ServerWebExchange exchange)
The X-Forwarded-For header contains a comma separated list of IP addresses.
|
static XForwardedRemoteAddressResolver |
trustAll() |
public static final String X_FORWARDED_FOR
public static XForwardedRemoteAddressResolver trustAll()
XForwardedRemoteAddressResolver which always extracts the first
IP address found in the X-Forwarded-For header (when present). Equivalent to
calling maxTrustedIndex(int) with a
maxTrustedIndex of Integer.MAX_VALUE. This configuration is
vulnerable to spoofing via manually setting the X-Forwarded-For header. If the
resulting IP address is used for security purposes, use
maxTrustedIndex(int) instead.public static XForwardedRemoteAddressResolver maxTrustedIndex(int maxTrustedIndex)
maxTrustedIndex - correlates to the number of trusted proxies expected in
front of Spring Cloud Gateway (index starts at 1).XForwardedRemoteAddressResolver which extracts the last
trusted IP address found in the X-Forwarded-For header (when present).
This configuration exists to prevent a malicious actor from spoofing the value of
the X-Forwarded-For header. If you know that your gateway application is only
accessible from a a trusted load balancer, then you can trust that the load
balancer will append a valid client IP address to the X-Forwarded-For header, and
should use a value of `1` for the `maxTrustedIndex`.
Given the X-Forwarded-For value of [0.0.0.1, 0.0.0.2, 0.0.0.3]:
maxTrustedIndex -> result [MIN_VALUE,0] -> IllegalArgumentException 1 -> 0.0.0.3 2 -> 0.0.0.2 3 -> 0.0.0.1 [4, MAX_VALUE] -> 0.0.0.1
public InetSocketAddress resolve(org.springframework.web.server.ServerWebExchange exchange)
resolve in interface RemoteAddressResolverCopyright © 2019 Pivotal Software, Inc.. All rights reserved.