隨筆 - 10, 文章 - 0, 評論 - 7, 引用 - 0
          數據加載中……

          Acegi工作流程

          任何一個安全系統都包括authentication和authorization兩部分,Acegi相同。

          第一部分:authentication

          1、acegi通過AuthenticationProcessingFilter攔截login請求獲取Principal和Credential信息(通俗一點就是用戶名和密碼);

          2、驗證用戶名密碼,由這個Filter調用認證管理器AuthenticatiomManager進行驗證。

          AuthenticatiomManager本身并不具備驗證的功能,它相當與是一個驗證控制器,由它來管理驗證的過程及方式。AuthenticatiomManager是通過調用provider來進行驗證的,一個manager中可以具有多個provider,但只要有一個provider驗證通過,manager就認為驗證成功。

          這部分要明白三點:一,provider是可以配置進去的,因為acegi是基于spring的;二是AuthenticatiomManager是可以被重寫的,你可以將manager改成你自己希望的控制器;三,好好利用event,這是標準的observer模式。acegi中的設計模式研究將在以后的貼子中討論。

          3、provider進行驗證。

          provider是真正的驗證模塊,并且決定了驗證的模式。provider目前acegi提供了dao、jaas,cas,x509,ldap等幾種驗證方式,這些驗證方式的具體內容可以查閱acegi的文檔。provider驗證通過后將Authentication對象返回。

          4、AuthenticationProcessingFilter將對象保存到ContextHolder中。Authentication部分結束。

          第二部分:authorization

          1、用戶提交請求,攔截器FilterSecurityInterceptor攔截請求,攔截器是一個Filter.

          2 、鑒權,攔截器調用AccessDecisionManager進行鑒權。

          AccessDecisionManager是通過投票的方式來決定是否有權限訪問資源。所謂投票就要包括投票的參與者和投票的策略。

          投票的參與者decisionVoters,這是AccessDecisionManager的一個屬性。decisionVoter能從某一個角度決定用戶是否能訪問資源,例如RoleVoter來判斷用戶的角色是否有權限訪問資源,MaxuserVoter來決定某個資源的訪問用戶數是否已經達到了最大值等。

          投票策略。投票的策略是通過不同的AccessDecisionManager來實現的,例如acegi提供的AffirmativeBased對象,這個對象的策略就是只要有一個投票通過就全體通過。UnanimousBased對象的策略是必須全體投票通過才能通過。但在大多數情況下acegi提供的AccessDecisionManager不能滿足我們的要求,這就需要我們去實現AccessDecisionManager接口,去定制適合自己項目的策略。

          3、投票。投票對象必須實現AccessDecisionVoter接口。投票對象關注的是某一方面的決定權,如果投票通過則Vote方法來完成的。vote方法必須返回一個int型的數據代表投票結果,它們是AccessDecisionVoter的三個靜態成員屬性:ACCESS_ABSTAIN,,ACCESS_DENIED和ACCESS_GRANTED,它們分別是棄權,否決和贊成。
           

          安全攔截器

            攔截器如何工作
            MethodInvocation攔截器
            FilterInvocation攔截器

          認證

            認證請求
            認證管理器
            Authentication Provider

          授權

            Access Decision Manager
            Voting Decision Manager
            授權管理推薦

          ContextHolder的用戶接口

            用戶接口目標
            HTTP會話認證
            HTTP Basic認證

          posted on 2007-05-20 12:44 LiuTing 閱讀(650) 評論(1)  編輯  收藏 所屬分類: 身份認證管理

          評論

          # re: Acegi工作流程  回復  更多評論   

          不懂,還是以用戶登錄寫個吧
          2008-06-13 13:08 | xx

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鄢陵县| 始兴县| 广灵县| 翼城县| 吐鲁番市| 泽州县| 汤阴县| 扎囊县| 沙田区| 静海县| 延寿县| 英超| 察雅县| 荔波县| 榕江县| 新津县| 石首市| 泗阳县| 临夏县| 龙陵县| 鄱阳县| 大洼县| 留坝县| 嵊泗县| 文化| 商城县| 迭部县| 龙海市| 元谋县| 苍南县| 布尔津县| 平南县| 龙陵县| 兴海县| 监利县| 安化县| 洪湖市| 麻城市| 顺昌县| 临沭县| 上虞市|