2013-11-20 44 views
2

我有一個提供REST API的Grails後端。我的移動應用程序訪問此REST Api以從服務器獲取數據。認證,登錄和註銷應該使用Spring Security完成。使用REST API的Spring Security身份驗證?

這對於桌面用戶非常適用,因爲我服務的是構建在服務器上的頁面。

如何爲我的REST控制器使用Spring Security來獲得身份驗證,登錄和註銷的工作?

回答

4

如果您提供的是REST API,則可能不需要實現登錄和註銷。在認證方面,通常最簡單的方法就是使用HTTP Basic。 Spring Security支持開箱即用的基本功能,因此這對您來說應該不成問題。

這是Erwin Vervaet關於setting up Grails to use HTTP Basic authentication的博客的一個很好的閱讀。

+0

爲什麼我不需要實現登錄等? – confile

+2

因爲使用HTTP Basic,用戶名和密碼會傳遞給應用程序以執行每個請求,從而使身份驗證機制無狀態。當你有一個無國籍的應用程序時,確實沒有登錄或註銷的概念。服務器可能會選擇緩存實際的身份驗證(例如在內部使用會話),但緩存與狀態不同。 –

+2

好吧,這似乎很簡單。如果我在每個請求上發送密碼,這不是一個安全問題嗎?密碼是否應該傳送或加密? – confile

3

請參閱How does Spring Security sessions work? 使春季安全會議有意義。您的移動應用不會像桌面上的瀏覽器那樣爲您提供Cookie。因此,您可以考慮在首次登錄後在每個移動請求中包含jsessionid,這是爲了充分利用spring安全性的完全授權和身份驗證支持,而不是基本身份驗證可以做到的。

+0

你有這樣的例子嗎? – confile