2016-11-25 61 views
0

我們有一個不老泉(〜3.0)的應用程序,我們已經增加了一些IP地址與類似於Web安全過濾表達背後:的Spring Security(網絡安全表達式) - 過濾IP上時,負載平衡器

<http use-expressions="true">  
    <intercept-url pattern="/login" filters="none" access="hasIpAddress('192.168.1.50')"/> 
</http> 

這工作正常,但後面的負載平衡器,每個人都從/login不允許的,因爲我們要過濾的實際地址是在x-forwarded-host頭了。

有沒有一種方法(通過配置),我可以讓Spring Security的瞭解x-forwarded-*頭?還是有不同的網絡安全表達式我可以用於這種情況?

PS。我lied..it年代x-forwarded-for頭我真的想在過濾

回答

0

您可以配置碼頭使用起源IP,而不是代理服務器的IP,看到Jetty Documentation

X轉發,對於配置

X-Forwarded-for頭和相關聯的標頭是一個事實上的標準,其中中介添加到它們轉發到描述始發連接的每個請求的HTTP標頭。這些頭可以通過的ForwardedRequestCustomizer一個實例,其可以被添加到一個HttpConfiguration解釋如下:

<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> 
    <Set name="outputBufferSize">32768</Set> 
    <Set name="requestHeaderSize">8192</Set> 
    <Set name="responseHeaderSize">8192</Set> 

    <Call name="addCustomizer"> 
     <Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg> 
    </Call> 
</New> 

ForwardedRequestCustomizer

定製請求代理轉發。

此自定義程序查看HTTP請求的標頭,表明它已被一個或多個代理轉發。具體處理是

  • Forwarded,如通過定義rfc7239
  • X-Forwarded-Host
  • X-Forwarded-Server
  • X-Forwarded-For
  • X-Forwarded-Proto
  • X-Proxied-Https

如果這些標頭存在,則會更新Request對象,以便代理不會被視爲請求出現的連接的另一端點

還可以定義標頭,以便轉發的SSL會話標識和密碼套件可以被定製

+0

這絕對是正確的方式,但經過一些裂縫,我似乎無法通過[spring jetty模塊]初始化ForwardedRequestCustomizer(http://www.eclipse.org/jetty/文檔/電流/ frameworks.html#_jetty_spring_module) – Vince