2017-08-14 30 views
2

根據文檔, https://docs.spring.io/spring-security/site/docs/3.0.x/reference/technical-overview.html。 我打算使用Spring Security在調用REST的一些我的web服務的web應用程序,是有必要的SessionCreationPloicy設置爲無國籍這個例子中, https://github.com/spring-projects/spring-boot/issues/2755。 Spring Security在請求之間存儲SecurityContext(Session),但我們知道REST是無狀態的,並且不使用HTTP會話。您可以使用Spring安全性與REST服務而不使其成爲無狀態嗎?

使用Spring Security與調用REST webservice而不將其設置爲無狀態的應用程序有什麼問題?

+0

我相信你可以使用Spring Security來保護對REST端點的訪問。與端點的交互仍然是無狀態的,但您需要進行身份驗證 – ochi

+0

HTTP身份驗證爲STATEFUL,JWT身份驗證爲STATELESS –

回答

2

REST服務應該性能/可擴展性設置無狀態的。如果沒有將安全鏈設置爲無狀態,Spring Security和servlet容器可能會創建一個會話。如果客戶端未在下一個請求中使用此會話,則會創建另一個會話。第三次請求第三次會話,依此類推。服務器會跟蹤會話,直到他們超時(約30分鐘)。如果有很多請求,這可能會成爲服務器的負擔。

我所看到的例子沒有設置無狀態的,他們中的低業務工作,或者如果會話被重用,但我會建議明確設定REST服務於無國籍上面提到的原因。

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

相關問題