我將在我的Javascript前端+ Spring MVC項目(用戶管理管理Web應用程序)中使用Spring安全性我試圖弄清楚是否有任何安全方面的好處將這些前端html代碼特別放在jsp文件與我的後端代碼在同一臺服務器上,所以我可以利用某些jsp標記。或者我可以完美地使它成爲一個Ajax應用程序,服務於不同服務器的前端。仍然完全使用彈簧安全?沒有jsp的Spring安全性
回答
在這裏,我假設:
- 一個javascript前端
- 主要服務JSON
上的安全角度來看,一個Spring MVC的支架應用,春季安全只能保護揹你應該記住,前端安全(在瀏覽器視圖中隱藏鏈接或命令)只是一種幻想,因爲用戶總是可以僞造一個請求,甚至是一個Ajax請求。
從用戶體驗的角度來看,很明顯,你永遠不應該向用戶展示可能性,並且當他使用它時,告訴他他是不被允許的。所以你的前端必須知道授予用戶什麼特權。 Spring安全帶有一些JSP頁面中可用的服務器端標籤,但對於Javascript前端,您可以(應該)實現一個特殊的URL服務器端,它返回當前用戶的能力,只要用戶在這裏發送請求驗證並將結果緩存在客戶端會話中(Windows.sessionStorage
)。這樣你的JavaScript代碼就知道應該向特定用戶顯示什麼。
您可以使用spring security來確保在您的控制器中提供AJAX JSON調用級別的請求URL,這就是我的建議。
無論您在JS前端如何顯示/隱藏功能,數據等,重要的是確保提供功能和數據的JSON調用。這樣,即使最終用戶試圖破解您的前端(他們可能會因爲這很容易),但請確保它們由於缺乏訪問而在執行REST調用時失敗。
關於「你能」使用這個安全與使用JSP標籤的問題有點關係嗎?絕對 - 確保您在通話級別的所有安全性按上述方式正確處理,並且您將被設置。您應該像獨立的應用程序一樣構建您的REST/JSON服務,這可以用於任何類型的前端。
你可以使用Spring Security來保護你的服務器端,這意味着你的問題的簡短之處是:「我可以完美地使它成爲ajax應用程序[..]嗎?」是。
對於Ajax應用程序,我的建議是讓服務器端成爲一個RESTful API,所以我會認爲是這樣。
有兩個元素有助於「安全」:認證和授權。
認證意味着客戶端提供了一些憑據(例如密鑰,OAuth令牌,用戶/密碼組合),這使您確信他或她確實是他們自稱的用戶(即用戶ID 12345)。該認證將作爲會話的一部分由您的應用程序保留。由於Http是無狀態的,因此對服務器的每個後續請求都需要發送所述會話的標識,以便服務器可以查找它。你可以找到here所有你需要知道的有關Spring Security認證的知識。不知道你的用戶如何計劃認證,我不能更具體。
授權更直接:用戶標識12345可能無法訪問所有內容。他可能有權訪問/widgets/gidgets
,但不能訪問/widgets/fidgets
。要做到這一點,最簡單的方法是通過@PreAuthorize
註釋。瞭解更多關於它here。一個例子是這樣的:
@RestController
@RequestMapping("/widgets")
public class WidgetController{
@RequestMapping("/gidgets")
@PreAuthorize("hasRole('GIDGET_MANAGER')")
List<Gidget> getGidgets(){
return gidgetService.getGidgets();
}
@RequestMapping("/fidgets")
@PreAuthorize("hasRole('FIDGET_MANAGER')")
List<Fidget> getFidgets(){
return fidgetService.getFidgets();
}
}
這個做什麼,在幕後,就是它攔截請求,基於路徑上,它驗證如果當前被驗證用戶名爲您指定的角色,允許該方法在肯定情況下執行。否則,它會完全跳過方法執行並向客戶端返回401 UNAUTHORIZED響應。
- 1. 沒有安全性的WCF
- 2. suPHP有沒有安全性?
- 3. Spring安全性能
- 4. Spring安全性userdetails:org.springframework.security.authentication.DisabledException
- 5. Spring安全性,jdbcAuthentication
- 6. JSP中的Spring安全性 - 單擊不允許的操作
- 7. 如何使用spring安全性訪問JSP中的角色?
- 8. Spring和Thread的安全性
- 9. 使用spring安全確定JSP中的安全url
- 10. 將Spring安全屬性加載到JSP變量中
- 11. JSP和ASP.Net的安全性比較
- 12. playframework - 安全指南沒有提到GET方法的安全性?
- 13. Spring MVC的 - jsp中沒有渲染
- 14. Spring Security有多安全?
- 15. 配置Spring Boot的安全性
- 16. Spring安全性中的會話固定
- 17. Spring STOMP基於令牌的安全性
- 18. 使用EJB的Spring安全性
- 19. Spring Boot安全性:訪問新的PDF
- 20. Spring Boot中的ACL安全性
- 21. Spring Restful Web Services的安全性
- 22. 瞭解AppKey安全性(沒有祕密)
- 23. hasPermission spring安全
- 24. SPRING MVC 3.2.2 + SPRING安全性3.1.3不兼容性java.lang.IncompatibleClassChangeError
- 25. Spring安全方法級別安全性註解不起作用
- 26. 使用spring安全性授權對象?
- 27. App Engine&Spring安全性:併發會話
- 28. 配置Spring HTTP安全性在運行
- 29. Spring + Angular設置和安全性
- 30. Spring安全性:loadUserByUsername()未被調用
有沒有辦法讓當前用戶可用的URL? – Sumit