Java中的安全框架通常是指解決Web應用安全問題的框架,如果開發Web應用時沒有使用安全框架,開發者需要自行編寫代碼增加Web應用安全性。自行實現Web應用的安全性并不容易,需要考慮不同的認證和授權機制、網絡關鍵數據傳輸加密等多方面的問題,為此Web應用中通常會選擇使用一些成熟的安全框架,這些安全框架基本都提供了一套Web應用安全性的完整解決方案,以便提升Web應用的安全性。 Java中常用的安全框架有Spring Security和Shiro,這兩個安全框架都提供了強大功能,可以很容易實現Web應用的很多安全防護。下面對這兩個安全框架的特點進行講解。
1.Spring Security
Spring Security是Spring生態系統中重要的一員,是一個基于AOP思想和Servlet過濾器實現的安全框架,它提供了完善的認證機制和方法級的授權功能,是一款非常優秀的權限管理框架。Spring Security伴隨著Spring生態系統不斷修正、升級,使用Spring Security 減少了為企業系統安全控制編寫大量重復代碼的工作,在Spring Boot項目中使用Spring Security十分簡單。
使用Spring Security可以很方便地實現Authentication(認證) 和 Authorization(授權),其中認證是指驗證用戶身份的過程,授權是指驗證用戶是否有權限訪問特定資源的過程。Spring Security在架構上將認證與授權分離,并提供了擴展點。
Spring Security具有以下的特點。
靈活:Spring Security 提供了一系列可擴展的模塊,可以根據具體需求進行選擇和配置。
安全:Spring Security 集成了一系列安全措施,包括 XSS ( Cross-Site Scripting ,跨站腳本)攻擊防范、CSRF 攻擊防范、點擊劫持攻擊防范等。
易用:Spring Security 提供了一系列快捷配置選項,可以使開發人員輕松地實現認證和授權等功能。
社區支持:Spring Security作為Spring 生態系統的一部分,與Spring無縫整合,并且得到了社區廣泛的支持和更新維護。
2.Shiro
Shiro是apache旗下一個開源框架,它將軟件系統的安全認證相關功能抽取出來,實現用戶身份認證,授權、加密、會話管理等功能,組成了一個通用的安全認證框架。
Shiro具有如下特點。
易于理解的 Java Security API。
簡單的身份認證,支持LDAP,JDBC 等多種數據源。
支持對角色的簡單鑒權,也支持細粒度的鑒權。
支持一級緩存,以提升應用程序的性能。
內置的基于 POJO 企業會話管理,適用于Web以及非Web的環境。
不跟任何的框架或者容器捆綁,可以獨立運行。
不管Spring Security還是Shiro,在進行安全管理的過程中都涉及權限管理的兩個重要概念:認證和授權。權限管理是指根據系統設置的安全規則或者安全策略,用戶可以訪問且只能訪問自己被授權的資源。
實現權限管理通常需要三個對象,分別為用戶、角色、權限,這三個對象的說明如下。
用戶:主要包含用戶名、密碼和當前用戶的角色信息,可以實現認證操作。
角色:主要包含角色名稱、角色描述和當前角色擁有的權限信息,可以實現授權操作。
權限:權限也可以稱為菜單,主要包含當前權限名稱、url地址等信息,可以實現動態展示菜單。?