程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Acegi(三):Acegi?Who are you?

Acegi(三):Acegi?Who are you?

編輯:關於JAVA

Acegi是個什麼?

是一個基於Spring的開源框架,用來做安全控制. 基於Spring? 能不能在不用Spring的情況下配置Acegi呢?Acegi官網上有一個鏈接:Use Withou Spring ,看來是可以的,自己還沒有動手做過. 實現安全控制? 原理是什麼? Servlet的Filter和AOP機制: 利用Filter, Acegi實現了基於Web實用的URI保護; 通過AOP,Acegi實現了對象訪問方法的保護;利用ACL,Acegi實現了對prototype類型的Object進行過濾和保護。

Acegi的核心概念是什麼?類似實現又哪些?

Acegi本質上是一種security solution的實現.

而一般而言,security solution都有哪些基本概念呢? 基本概念有兩個:認證(Authentication )與授權(Authorization). 隨便說一下, 我一直認為這兩個詞翻譯的很不直觀, 若光看這兩個字,覺得很是摸不著頭腦. 我們來看下Acegi官方文檔的解釋。 authentication is the process of establishing a principal is who they claim to be. A "principal" generally means a user, device or some other system which can perform an action in your application. 這裡邊有個核心詞principal,通俗的理解是要在咱們所寫系統中操作的東東,這個東東可以是人(當然這是最見的),可以是某一個別的什麼設備(機器人啥的,呵呵),還可以是別的系統。有了這個,authentication的理解就順理成章了: authentication 就是看看要操作咱們系統的東東是不是真的,這在實際應用中大多是通過密碼驗證來實現的,也就是對暗號,如暗號對上了,你就是真的了。 而Authorization呢? "Authorization" refers to the process of deciding whether a principal is allowed to perform an action in your application. 上面我們說到一個principal要操作咱們的系統,假若這個principal是真的, 那接下來很自然的就是看Ta有沒有權限來做Ta想要的操作了. 這也正是Authorization要干的事兒.

有了這兩個根本的概念,接下的所有事理解起來就容易了. 這個接下來的事就是Acegi怎麼設計實現. 要是自己來設計實現那還真是個問題, 不過看別人的還不至於那麼難.

對這兩個最核心的概念說的有點多了, 下面看下Acegi的類似實現,也就是Acegi的兄弟們,以及跟他們相比,Acegi自身又有什麼優勢.

要說Acegi的兄弟, 人們最容易想起來的還是JAAS.大家知道, 這是Java EE裡標准實現, 那是由於JAAS的什麼缺點致使小弟Acegi把風頭給搶了呢? JAAS配置繁瑣、提供的安全訪問機制粒度不夠和JAAS在WAR和EAR層面上沒有移植性這些缺點是江湖流傳很廣的說法,當然本人也沒機會做這方面的詳細比較,姑且就人雲亦雲地接受這種說法吧。

另外一個兄弟我也是這些天剛認識, 一個叫Crowd的框架, 由於一點也沒有接觸過,也就不剛妄下判斷。看一些文章知道這個Crowd可以跟Acegi結合起來用,想必是它彌補了些Acegi的缺點吧。

核心部件都有哪些?

按理解的深度,Acegi有兩個層次上的核心部件。第一層的核心部件是以配置的角度來看的, 也就是說我們要想配置一個Acegi保護的系統都要涉及到哪些. 第二層是實現的核心, 也就是說它們整個Acegi就玩不轉了. 這個第二層跟配置不一樣, 第一層所說的配置僅僅是應用的一方面,Acegi可以有多種實用並加自己的擴展, 而所有所有的這一切都是圍繞第二層的核心部件組建的.

第一層的部件放到下一篇結合實例來說明,這裡重點說下實現層面上的核心部件,它們依次是:SecurityContextHolder , SecurityContext , HttpSessionContextIntegrationFilter(這個雖放到這裡,它在這裡也可以說是代表了它們一個群體) , Authentication , GrantedAuthority , UserDetails , UserDetailsService . 一共七個, 我們在這裡稱之為"七劍". 寫到這裡,腦子裡隱隱約約感覺到老子的道家思想了. 你看, Acegi的核心思想是"保護", 圍繞這個核心思想分出兩個概念Authentication 和Authorization, 具體到怎麼來實現這個兩個概念就有了我們所說的"七劍", 再往下就是針對不同場合應用的支撐,而再往下就是現在千千萬萬項目中用到的Acegi配置及擴展.這一個演變系列是不是有點像"道生一,一生二,二生三,三生萬物"呢?

對這"七劍"的理解很重要, 只有理解了它們,才能達到萬變不離其宗地靈活配置.

這"七劍"在這也先不展開討論, 等在體會了實例及分析了"第一層核心部件"後再回過頭看吧, 那樣理解上更自然些.

絮絮叨叨寫了不少, 回頭總結下,也為下篇寫下開頭: 這篇以靜態的角度了Acegi的核心概念及其核心部件, 下一篇中將動手配置一個小例子,來個真切感受下Web實用中圍繞"七劍"都有哪些部件可用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved