最近看到項目中使用到了shrio和spring security,這兩者都是對權限的控制與管理,為了了解兩者的區別,查閱了相關資料,進行了一個整理:
Apache shrio是Java的一個安全框架,但是shrio框架的一大特點強大而靈活並且簡單,容易使用,相比spring security框架沒有那么晦澀難懂,它能清晰的處理認證,授權,管理會話以及密碼加密。但是相比於spring security,可能沒有spring security做的相關功能強大,所以具體使用哪個框架主要看你本身的項目是都需要那些復雜功能一些相關的東西。但因為我項目中運用到了spring security,所以后面的博文可能會對spring security做一下詳細的了解以及介紹總結。
以下是shrio所具有的一些特點:
- 易於理解的 Java Security API;
- 簡單的身份認證(登錄),支持多種數據源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
- 對角色的簡單的簽權(訪問控制),支持細粒度的簽權;
- 支持一級緩存,以提升應用程序的性能;
- 內置的基於 POJO 企業會話管理,適用於 Web 以及非 Web 的環境;
- 異構客戶端會話訪問;
- 非常簡單的加密 API;
- 不跟任何的框架或者容器捆綁,可以獨立運行
spring security
spring security對於spring的結合較好,如果項目用的是springmvc使用起來挺方便,如果項目沒有使用spring,先暫時不考慮了,shrio因為是Apache下的一個項目,不跟任何容器和框架綁定,可以獨立運行,所以相對來說簡便靈活。但對於shiro所具有的一系列功能,spring security都有,包括認證,驗證,授權等等,目前spring security較好的解決了功能級權限管理的問題,並且spring security對Oauth、OpenID也有支持,Shiro則需要自己手動實現,作者自己還整理了一些資料,說spring security的權限細粒度更高,當然,關於這里,作者還沒有深入去了解,這里主要是對shrio和spring security做一個大概總結,並且對spring security有一個大概的認識。
轉載: 以下是對Oauth以及OpenId的一些認知:
Oauth:在"客戶端"與"服務提供商"之間,設置了一個授權層(authorization layer)。"客戶端"不能直接登錄"服務提供商",只能登錄授權層,以此將用戶與客戶端區分開來。"客戶端"登錄授權層所用的令牌(token),與用戶的密碼不同。用戶可以在登錄的時候,指定授權層令牌的權限范圍和有效期。
"客戶端"登錄授權層以后,"服務提供商"根據令牌的權限范圍和有效期,向"客戶端"開放用戶儲存的資料。
OpenId: 系統的第一部分是身份驗證,即如何通過 URI 來認證用戶身份。目前的網站都是依靠用戶名和密碼來登錄認證,這就意味着大家在每個網站都需要注冊用戶名和密碼,即便你使用的是同樣的密碼。如果使用 OpenID ,你的網站地址(URI)就是你的用戶名,而你的密碼安全的存儲在一個 OpenID 服務網站上(你可以自己建立一個 OpenID 服務網站,也可以選擇一個可信任的 OpenID 服務網站來完成注冊)。
與OpenID同屬性的身份識別服務商還有ⅥeID,ClaimID,CardSpace,Rapleaf,Trufina ID Card等,其中ⅥeID通用賬戶的應用最為廣泛。