W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
默認(rèn)情況下,RemoteAddr路由謂詞工廠使用傳入請求中的遠(yuǎn)程地址。如果Spring Cloud網(wǎng)關(guān)位于代理層后面,則此地址可能與實(shí)際的客戶端IP地址不匹配。
您可以通過設(shè)置自定義RemoteAddressResolver
來自定義解析遠(yuǎn)程地址的方式。Spring Cloud網(wǎng)關(guān)帶有一個(gè)基于X-Forwarded-For標(biāo)頭 XForwardedRemoteAddressResolver
的非默認(rèn)遠(yuǎn)程地址解析器。
XForwardedRemoteAddressResolver
有兩個(gè)靜態(tài)構(gòu)造方法,它們采用不同的安全性方法:
XForwardedRemoteAddressResolver::trustAll
返回一個(gè)RemoteAddressResolver
,該地址始終使用在X-Forwarded-For
標(biāo)頭中找到的第一個(gè)IP地址。這種方法容易受到欺騙,因?yàn)閻阂饪蛻舳丝赡軙?code class="literal" i="4891">X-Forwarded-For設(shè)置一個(gè)初始值,該初始值將被解析程序接受。
XForwardedRemoteAddressResolver::maxTrustedIndex
獲取一個(gè)索引,該索引與在Spring Cloud網(wǎng)關(guān)前面運(yùn)行的受信任基礎(chǔ)結(jié)構(gòu)的數(shù)量相關(guān)。例如,如果Spring Cloud網(wǎng)關(guān)只能通過HAProxy訪問,則應(yīng)使用值1。如果在訪問Spring Cloud網(wǎng)關(guān)之前需要兩跳可信基礎(chǔ)結(jié)構(gòu),則應(yīng)使用值2。
給定以下標(biāo)頭值:
X-Forwarded-For: 0.0.0.1, 0.0.0.2, 0.0.0.3
下面的maxTrustedIndex
值將產(chǎn)生以下遠(yuǎn)程地址。
maxTrustedIndex | 結(jié)果 |
---|---|
[ | (invalid, |
1 | 0.0.0.3 |
2 | 0.0.0.2 |
3 | 0.0.0.1 |
[4, | 0.0.0.1 |
GatewayConfig.java
RemoteAddressResolver resolver = XForwardedRemoteAddressResolver .maxTrustedIndex(1); ... .route("direct-route", r -> r.remoteAddr("10.1.1.1", "10.10.1.1/24") .uri("https://downstream1") .route("proxied-route", r -> r.remoteAddr(resolver, "10.10.1.1", "10.10.1.1/24") .uri("https://downstream2") )
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: