posts - 431,  comments - 344,  trackbacks - 0
          公告
           Don't Repeat Yourself
          座右銘:you can lose your money, you can spent all of it, and if you work hard you get it all back. But if you waste your time, you're never gonna get it back.
          公告本博客在此聲明部分文章為轉(zhuǎn)摘,只做資料收集使用。


          微信: szhourui
          QQ:109450684
          Email
          lsi.zhourui@gmail.com
          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          留言簿(15)

          隨筆分類(1019)

          文章分類(3)

          文章檔案(21)

          收藏夾

          Link

          好友博客

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 863169
          • 排名 - 44

          最新評(píng)論

          閱讀排行榜

          Acegi工作流程

          任何一個(gè)安全系統(tǒng)都包括authentication和authorization兩部分,Acegi相同。

          第一部分:authentication

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

          2、驗(yàn)證用戶名密碼,由這個(gè)Filter調(diào)用認(rèn)證管理器AuthenticatiomManager進(jìn)行驗(yàn)證。

          AuthenticatiomManager本身并不具備驗(yàn)證的功能,它相當(dāng)與是一個(gè)驗(yàn)證控制器,由它來管理驗(yàn)證的過程及方式。AuthenticatiomManager是通過調(diào)用provider來進(jìn)行驗(yàn)證的,一個(gè)manager中可以具有多個(gè)provider,但只要有一個(gè)provider驗(yàn)證通過,manager就認(rèn)為驗(yàn)證成功。

          這部分要明白三點(diǎn):一,provider是可以配置進(jìn)去的,因?yàn)閍cegi是基于spring的;二是AuthenticatiomManager是可以被重寫的,你可以將manager改成你自己希望的控制器;三,好好利用event,這是標(biāo)準(zhǔn)的observer模式。acegi中的設(shè)計(jì)模式研究將在以后的貼子中討論。

          3、provider進(jìn)行驗(yàn)證。

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

          4、AuthenticationProcessingFilter將對(duì)象保存到ContextHolder中。Authentication部分結(jié)束。

          第二部分:authorization

          1、用戶提交請(qǐng)求,攔截器FilterSecurityInterceptor攔截請(qǐng)求,攔截器是一個(gè)Filter.

          2 、鑒權(quán),攔截器調(diào)用AccessDecisionManager進(jìn)行鑒權(quán)。

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

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

          投票策略。投票的策略是通過不同的AccessDecisionManager來實(shí)現(xiàn)的,例如acegi提供的AffirmativeBased對(duì)象,這個(gè)對(duì)象的策略就是只要有一個(gè)投票通過就全體通過。UnanimousBased對(duì)象的策略是必須全體投票通過才能通過。但在大多數(shù)情況下acegi提供的AccessDecisionManager不能滿足我們的要求,這就需要我們?nèi)?shí)現(xiàn)AccessDecisionManager接口,去定制適合自己項(xiàng)目的策略。

          3、投票。投票對(duì)象必須實(shí)現(xiàn)AccessDecisionVoter接口。投票對(duì)象關(guān)注的是某一方面的決定權(quán),如果投票通過則Vote方法來完成的。vote方法必須返回一個(gè)int型的數(shù)據(jù)代表投票結(jié)果,它們是AccessDecisionVoter的三個(gè)靜態(tài)成員屬性:ACCESS_ABSTAIN,,ACCESS_DENIED和ACCESS_GRANTED,它們分別是棄權(quán),否決和贊成。
           

          安全攔截器

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

          認(rèn)證

            認(rèn)證請(qǐng)求
            認(rèn)證管理器
            Authentication Provider

          授權(quán)

            Access Decision Manager
            Voting Decision Manager
            授權(quán)管理推薦

          ContextHolder的用戶接口

            用戶接口目標(biāo)
            HTTP會(huì)話認(rèn)證
            HTTP Basic認(rèn)證
          posted on 2006-12-20 12:51 周銳 閱讀(271) 評(píng)論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 宝清县| 蓬溪县| 临夏市| 鸡泽县| 海伦市| 遵义县| 德清县| 颍上县| 黄冈市| 旺苍县| 凌云县| 镇康县| 万盛区| 姚安县| 凯里市| 县级市| 昭觉县| 监利县| 绥化市| 台北县| 墨脱县| 乐业县| 宁晋县| 西贡区| 石首市| 彰化县| 寿宁县| 富民县| 台前县| 乌鲁木齐县| 大关县| 中阳县| 增城市| 鲁甸县| 榆中县| 贵德县| 安西县| 敦煌市| 峨边| 新源县| 轮台县|