<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    xyz20003

    www.mossle.com
    隨筆 - 34, 文章 - 0, 評論 - 124, 引用 - 0
    數據加載中……

    圖解Spring Security默認使用的過濾器

    第 9 章 圖解過濾器

    auto-config='true'時的過濾器列表

    圖 9.1. auto-config='true'時的過濾器列表


    9.1. HttpSessionContextIntegrationFilter

    org.springframework.security.context.HttpSessionContextIntegrationFilter

    圖 9.2. org.springframework.security.context.HttpSessionContextIntegrationFilter


    位于過濾器頂端,第一個起作用的過濾器。

    用 途一,在執行其他過濾器之前,率先判斷用戶的session中是否已經存在一個SecurityContext了。如果存在,就把 SecurityContext拿出來,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就創建一個SecurityContext出來,還是放到SecurityContextHolder中, 供Spring Security的其他部分使用。

    用途二,在所有過濾器執行完畢后,清空SecurityContextHolder,因為SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,會受到服務器的線程池機制的影響。

    9.2. LogoutFilter

    org.springframework.security.ui.logout.LogoutFilter

    圖 9.3. org.springframework.security.ui.logout.LogoutFilter


    只處理注銷請求,默認為/j_spring_security_logout。

    用途是在用戶發送注銷請求時,銷毀用戶session,清空SecurityContextHolder,然后重定向到注銷成功頁面。可以與rememberMe之類的機制結合,在注銷的同時清空用戶cookie。

    9.3. AuthenticationProcessingFilter

    org.springframework.security.ui.webapp.AuthenticationProcessingFilter

    圖 9.4. org.springframework.security.ui.webapp.AuthenticationProcessingFilter


    處理form登陸的過濾器,與form登陸有關的所有操作都是在此進行的。

    默認情況下只處理/j_spring_security_check請求,這個請求應該是用戶使用form登陸后的提交地址,form所需的其他參數可以參考:???

    此過濾器執行的基本操作時,通過用戶名和密碼判斷用戶是否有效,如果登錄成功就跳轉到成功頁面(可能是登陸之前訪問的受保護頁面,也可能是默認的成功頁面),如果登錄失敗,就跳轉到失敗頁面。

    9.4. DefaultLoginPageGeneratingFilter

    org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter

    圖 9.5. org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter


    此過濾器用來生成一個默認的登錄頁面,默認的訪問地址為/spring_security_login,這個默認的登錄頁面雖然支持用戶輸入用戶名,密碼,也支持rememberMe功能,但是因為太難看了,只能是在演示時做個樣子,不可能直接用在實際項目中。

    如果想自定義登陸頁面,可以參考:第 4 章 自定義登陸頁面

    9.5. BasicProcessingFilter

    org.springframework.security.ui.basicauth.BasicProcessingFilter

    圖 9.6. org.springframework.security.ui.basicauth.BasicProcessingFilter


    此過濾器用于進行basic驗證,功能與AuthenticationProcessingFilter類似,只是驗證的方式不同。有關basic驗證的詳細情況,我們會在后面的章節中詳細介紹。

    有關basic驗證的詳細信息,可以參考:第 12 章 basic認證

    9.6. SecurityContextHolderAwareRequestFilter

    org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter

    圖 9.7. org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter


    此過濾器用來包裝客戶的請求。目的是在原始請求的基礎上,為后續程序提供一些額外的數據。比如getRemoteUser()時直接返回當前登陸的用戶名之類的。

    9.7. RememberMeProcessingFilter

    org.springframework.security.ui.rememberme.RememberMeProcessingFilter

    圖 9.8. org.springframework.security.ui.rememberme.RememberMeProcessingFilter


    此過濾器實現RememberMe功能,當用戶cookie中存在rememberMe的標記,此過濾器會根據標記自動實現用戶登陸,并創建SecurityContext,授予對應的權限。

    有關rememberMe功能的詳細信息,可以參考:第 14 章 自動登錄

    9.8. AnonymousProcessingFilter

    org.springframework.security.providers.anonymous.AnonymousProcessingFilter

    圖 9.9. org.springframework.security.providers.anonymous.AnonymousProcessingFilter


    為了保證操作統一性,當用戶沒有登陸時,默認為用戶分配匿名用戶的權限。

    有關匿名登錄功能的詳細信息,可以參考:第 15 章 匿名登錄

    9.9. ExceptionTranslationFilter

    org.springframework.security.ui.ExceptionTranslationFilter

    圖 9.10. org.springframework.security.ui.ExceptionTranslationFilter


    此過濾器的作用是處理中FilterSecurityInterceptor拋出的異常,然后將請求重定向到對應頁面,或返回對應的響應錯誤代碼。

    9.10. SessionFixationProtectionFilter

    org.springframework.security.ui.SessionFixationProtectionFilter

    圖 9.11. org.springframework.security.ui.SessionFixationProtectionFilter


    防御會話偽造攻擊。有關防御會話偽造的詳細信息,可以參考:第 16 章 防御會話偽造

    9.11. FilterSecurityInterceptor

    org.springframework.security.intercept.web.FilterSecurityInterceptor

    圖 9.12. org.springframework.security.intercept.web.FilterSecurityInterceptor


    用戶的權限控制都包含在這個過濾器中。

    功能一:如果用戶尚未登陸,則拋出AuthenticationCredentialsNotFoundException“尚未認證異常”。

    功能二:如果用戶已登錄,但是沒有訪問當前資源的權限,則拋出AccessDeniedException“拒絕訪問異常”。

    功能三:如果用戶已登錄,也具有訪問當前資源的權限,則放行。

    至此,我們完全展示了默認情況下Spring Security中使用到的過濾器,以及每個過濾器的應用場景和顯示功能,下面我們會對這些過濾器的配置和用法進行逐一介紹。

    posted on 2009-06-15 10:39 臨遠 閱讀(3621) 評論(6)  編輯  收藏

    評論

    # re: 圖解Spring Security默認使用的過濾器  回復  更多評論   

    說得很詳細,支持一下.
    2009-06-15 11:29 | 心夢帆影

    # re: 圖解Spring Security默認使用的過濾器  回復  更多評論   

    session固化攻擊指的是什么,樓主能否介紹下,是否關于Httpsession的偽造
    2009-06-15 11:54 | good

    # re: 圖解Spring Security默認使用的過濾器  回復  更多評論   

    我覺得spring security做為權限管理中間件,有些“顧左右,而言其他”的味道。

    因為:用戶登錄、session判斷,url判斷,這是非常簡單的事情,沒有必要搞的這么羅嗦。
    而對于細粒度權限,或者叫數據級權限,根本就是無能為力。需要開發者自行編寫代碼。哎。。。。

    推薦一篇文章:《Spring Security優劣之我見》http://metadmin.javaeye.com/blog/364132

    另外,細粒度權限管理軟件,還有 www.metadmin.com
    2009-06-15 12:11 | metadmin

    # re: 圖解Spring Security默認使用的過濾器  回復  更多評論   

    @good
    session fix和session偽造應該是一個東西,之后的章節里會詳細介紹。

    @metadmin
    spring security第一目標是實現常用的web安全機制,倒也沒看出把這些事情弄的多復雜,細粒度權限控制這邊似乎做的沒那么好,等講到acl的時候再詳細討論一下吧。
    2009-06-15 12:16 | 臨遠

    # re: 圖解Spring Security默認使用的過濾器  回復  更多評論   

    spring security第一目標是實現常用的web安全機制,倒也沒看出把這些事情弄的多復雜,細粒度權限控制這邊似乎做的沒那么好,等講到acl的時候再詳細討論一下吧。
    Java樂園 -Java學習者的天堂。 http://www.javaly.cn Java學習交流網站 Java樂園群號:15651281
    2009-06-15 13:08 | 找個美女做老婆

    # re: 圖解Spring Security默認使用的過濾器  回復  更多評論   

    @good
    在spring 文檔中有介紹,是請求傳輸過程中被攔截,獲取session id 進行偽造session。
    2009-06-15 22:04 | zhxing

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


    網站導航:
     
    主站蜘蛛池模板: a级毛片免费网站| 在线看片免费不卡人成视频| 亚洲电影中文字幕| 国产情侣激情在线视频免费看| 亚洲欧洲精品成人久久曰| 成人亚洲性情网站WWW在线观看 | 国产精品免费αv视频| 亚洲三级电影网址| 免费观看一级毛片| 久久大香香蕉国产免费网站| 亚洲国产成人精品无码区二本 | 久久国产精品免费专区| 亚洲熟妇AV日韩熟妇在线| 亚洲精品中文字幕乱码三区| 欧美男同gv免费网站观看| 国产一级a毛一级a看免费人娇| 亚洲娇小性色xxxx| 亚洲乱色熟女一区二区三区丝袜 | 亚洲av午夜福利精品一区人妖| 午夜dj免费在线观看| 久章草在线精品视频免费观看| 亚洲AV无码专区国产乱码不卡 | 国产成人精品亚洲| 亚洲精品影院久久久久久| 亚洲日本在线观看视频| 成人免费777777| 少妇太爽了在线观看免费视频| 一级毛片a免费播放王色电影 | 亚洲永久精品ww47| 超pen个人视频国产免费观看| 99re这里有免费视频精品| 人妻仑乱A级毛片免费看| 亚洲一卡一卡二新区无人区| 亚洲AV美女一区二区三区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲国产精品免费观看| 亚洲爱情岛论坛永久| 亚洲午夜国产精品无码| 亚洲第一黄片大全| 大学生高清一级毛片免费| 国产乱子精品免费视观看片|