2015-02-10 40 views
0

我已經使用Spring Security成功設置了一個應用程序。當用戶請求安全頁面時,Spring會自動將這些用戶重定向到HTTPS頁面。使用Spring Security配置HTTP頁面和HTTPS頁面

<http auto-config="true" use-expressions="true" once-per-request="true" > 
    <intercept-url pattern="/login" access="permitAll" requires-channel="https"/> 
    <intercept-url pattern="/my-account" access="isAuthenticated()" requires-channel="https"/> 

    <logout /> 
    <form-login login-page="/login" /> 
    <port-mappings> 
     <port-mapping http="8080" https="8443"/> 
     <port-mapping http="80" https="443"/> 
    </port-mappings> 
</http> 

但是,當用戶瀏覽時,下一個沒有敏感信息的其他頁面仍在使用HTTPS。我希望只使用HTTP訪問這些普通頁面。

有沒有什麼聰明的方法來做到這一點?我沒有配置爲HTTPS頻道的所有其他頁面都希望僅使用HTTP進行訪問。我試圖使用一些通配符,但沒有成功。

額外的細節: HTTPS使用更多的服務器CPU。我在一些頁面上有很多請求,我想避免這些額外的費用。

+0

爲什麼不在整個站點使用HTTPS?看到FireSheep – 2015-02-10 18:21:14

+0

我讀到它使用更多的服務器CPU。我在一些頁面上有很多請求,我想避免這些額外的費用。 – 2015-02-10 18:22:53

回答

1

使您的整個網站HTTPS。這些日子性能變化很小,你不會通過HTTP暴露他們的會話cookie來搞砸你的用戶。

https://istlsfastyet.com/

+0

感謝尼爾,非常有啓發性。 – 2015-02-10 18:38:22

0

在Spring的安全,你可以做到這一點的方式 -

<http auto-config="true" use-expressions="true" once-per-request="true" > 
<intercept-url pattern="/login" access="permitAll" requires-channel="https"/> 
<intercept-url pattern="/my-account" access="isAuthenticated()" requires-channel="https"/> 
<intercept-url pattern="/**" access="permitAll" requires-channel="http"/> 

所有其他網址的除了 「/登錄」 和 「/我的賬戶」,將通過HTTP。

除此之外,您必須爲設置Cookie的安全標誌。 通過設置安全標誌,瀏覽器將阻止通過未加密通道傳輸cookie。 https://www.owasp.org/index.php/SecureFlag

+0

最後一行不覆蓋所有其他配置? – 2015-02-11 11:13:28

+0

最後一行不會覆蓋以前的攔截URL配置。 Spring Security從上到下進行攔截URL模式匹配,找到第一個匹配,它應用配置的「requires-channel」。因此,對於上面的行,所有的url模式(除了「/ login」和「/ my-account」),頻道將是HTTP。 – 2015-02-11 16:50:02

相關問題