權限管理框架
屬於系統安全的范疇,權限管理實現對用戶訪問系統的控制,按照安全規則或者安全策略控制用戶可以訪問而且只能訪問自己被授權的資源
包括用戶身份認證和授權兩部分,簡稱認證授權
1.身份認證
判斷一個用戶是否為合法用戶的處理過程;
最常用的簡單身份認證方式是系統通過核對用戶輸入的用戶名和口令,看其是否與系統中存儲的該用戶的用戶名和口令一致,來判斷用戶身份是否正確

2.授權管理
即訪問控制,控制誰能訪問哪些資源;
體進行身份認證后需要分配權限方可訪問系統的資源,對於某些資源沒有權限是無法訪問的

3.權限控制
1)基於角色
RBAC基於角色的訪問控制(Role-Based Access Control)是以角色為中心進行訪問控制,比如:主體的角色為總經理可以查詢企業運營報表,查詢員工工資信息等,訪問控制流程如下:

2)基於資源
RBAC基於資源的訪問控制(Resource-Based Access Control)是以資源為中心進行訪問控制,比如:主體必須具有查詢工資權限才可以查詢員工工資信息等,訪問控制流程如下:
上圖中的判斷邏輯代碼可以理解為:
if(主體.hasPermission("查詢工資權限標識")){
查詢工資
}
3)基於url攔截
企業中常用的權限管理方法,實現思路是:將系統操作的每個url配置在權限表中,將權限對應到角色,將角色分配給用戶,用戶訪問系統功能通過Filter進行過慮,過慮器獲取到用戶訪問的url,只要訪問的url是用戶分配角色中的url則放行繼續訪問

4.常見的權限框架
1)Shiro 框架
Java的一個安全框架;
對比Spring Security,可能沒有Spring Security做的功能強大
特點:
- 易於理解的 Java Security API;
- 簡單的身份認證(登錄),支持多種數據源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
- 對角色的簡單的簽權(訪問控制),支持細粒度的簽權;
- 支持一級緩存,以提升應用程序的性能;
- 內置的基於 POJO 企業會話管理,適用於 Web 以及非 Web 的環境;
- 異構客戶端會話訪問;
- 非常簡單的加密 API;
- 不跟任何的框架或者容器捆綁,可以獨立運行。
2)Spring Security
一個輕量級的安全框架,它確保基於Spring的應用程序提供身份驗證和授權支持
基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架;
提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重復代碼的工作;
“認證”是為用戶建立一個其聲明的角色的過程,這個角色可以一個用戶、一個設備或者一個系統;
“驗證”指的是一個用戶在你的應用中能夠執行某個操作,在到達授權判斷之前,角色已經在身份認證過程中建立了
3.Shiro和Spring Security比較
- Shiro比Spring更容易使用,實現和最重要的理解
- Spring Security更加知名的唯一原因是因為品牌名稱
- “Spring”以簡單而聞名,但諷刺的是很多人發現安裝Spring Security很難
- Spring Security卻有更好的社區支持
- Apache Shiro在Spring Security處理密碼學方面有一個額外的模塊
- Spring-security 對spring 結合較好,如果項目用的springmvc ,使用起來很方便。但是如果項目中沒有用到spring,那就不要考慮它了。
- Shiro 功能強大、且 簡單、靈活。是Apache 下的項目比較可靠,且不跟任何的框架或者容器綁定,可以獨立運行
