1. 程式人生 > >安全框架Shiro和Spring Security比較

安全框架Shiro和Spring Security比較

Shiro

首先Shiro較之 Spring Security,Shiro在保持強大功能的同時,還在簡單性和靈活性方面擁有巨大優勢。

Shiro是一個強大而靈活的開源安全框架,能夠非常清晰的處理認證、授權、管理會話以及密碼加密。如下是它所具有的特點:

  1. 易於理解的 Java Security API;
  2. 簡單的身份認證(登入),支援多種資料來源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
  3. 對角色的簡單的籤權(訪問控制),支援細粒度的籤權;
  4. 支援一級快取,以提升應用程式的效能;
  5. 內建的基於 POJO 企業會話管理,適用於 Web 以及非 Web 的環境;
  6. 異構客戶端會話訪問;
  7. 非常簡單的加密 API;
  8. 不跟任何的框架或者容器捆綁,可以獨立執行。

Spring Security

除了不能脫離Spring,shiro的功能它都有。而且Spring Security對Oauth、OpenID也有支援,Shiro則需要自己手動實現。Spring Security的許可權細粒度更高(筆者還未發現高在哪裡)。

注:

OAuth在"客戶端"與"服務提供商"之間,設定了一個授權層(authorization layer)。"客戶端"不能直接登入"服務提供商",只能登入授權層,以此將使用者與客戶端區分開來。"客戶端"登入授權層所用的令牌(token),與使用者的密碼不同。使用者可以在登入的時候,指定授權層令牌的許可權範圍和有效期。

"客戶端"登入授權層以後,"服務提供商"根據令牌的許可權範圍和有效期,向"客戶端"開放使用者儲存的資料。

OpenID 系統的第一部分是身份驗證,即如何通過 URI 來認證使用者身份。目前的網站都是依靠使用者名稱和密碼來登入認證,這就意味著大家在每個網站都需要註冊使用者名稱和密碼,即便你使用的是同樣的密碼。如果使用 OpenID ,你的網站地址(URI)就是你的使用者名稱,而你的密碼安全的儲存在一個 OpenID 服務網站上(你可以自己建立一個 OpenID 服務網站,也可以選擇一個可信任的 OpenID 服務網站來完成註冊)。

與OpenID同屬性的身份識別服務商還有ⅥeID,ClaimID,CardSpace,Rapleaf,Trufina ID Card等,其中ⅥeID通用賬戶的應用最為廣泛。

綜述

個人認為現階段需求,許可權的操作粒度能控制在路徑及按鈕上,資料粒度通過sql實現。Shrio簡單夠用。

至於OAuth,OpenID 站點間統一登入功能,現租戶與各個產品間單點登入已經通過cookies實現,所以Spring Security的這兩個功能可以不考慮。

SpringSide網站的許可權也是用Shrio做的。