簡體   English   中英

您可以在不使其成為無狀態的情況下將Spring Security與REST服務一起使用嗎?

[英]Can you use Spring Security with REST service without making it stateless?

根據文檔, https://docs.spring.io/spring-security/site/docs/3.0.x/reference/technical-overview.html 我打算在調用某些REST Web服務的Web應用程序中使用Spring Security,是否有必要將SessionCreationPloicy設置為STATELESS,例如本例https://github.com/spring-projects/spring-boot/issues/2755 Spring Security在請求之間存儲SecurityContext(Session),但是我們知道REST是無狀態的,並且不使用HTTP會話。

將Spring Security與調用REST Web服務而不將其設置為Stateless的應用程序一起使用會遇到什么問題?

REST服務應設置為無狀態以提高性能/可伸縮性 如果沒有將安全鏈設置為無狀態,Spring Security和servlet容器可能會創建一個會話。 如果客戶端在下一個請求中不使用該會話,則將創建另一個會話。 第三個請求第三個會話,依此類推。 服務器將跟蹤會話,直到會話超時(〜30分鍾)。 如果有很多請求,這可能/將成為服務器的負擔。

我見過一些示例,它們沒有設置無狀態,它們工作於低流量或會話被重用,但是由於上述原因,我建議將REST服務顯式設置為無狀態。

另一個問題是,通常對於REST禁用CSRF保護。 通過允許會話創建,系統可能容易受到CSRF攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM