国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計軟件教程 > acegi參考手冊(v1.0.4)[譯]-第四章 信道安全

acegi參考手冊(v1.0.4)[譯]-第四章 信道安全
2010-01-13 23:24:08  作者:  來源:

第四章. 信道安全

4.1. 概述

Acegi Security不僅能滿足你的認證和授權(quán)的請求,而且能夠保證你的未認證的web請求也能擁有某些屬性。這些屬性可能包括使用特定的傳輸類型,在HttpSession設(shè)置特定的屬性等等。Web請求的最普遍的需求是使用特定的傳輸協(xié)議,例如HTTPS。

在傳輸安全中的一個重要議題就是會話劫持(session hijacking)。Web容器通過一個jsessionid來引用一個HttpSession,這個jsessionid通過cookie 或者URL重寫轉(zhuǎn)向(URL rewriting)發(fā)送到到客戶端。如果jsessionid是通過HTTP發(fā)送的,那么就存在被劫持以及在認證過程之后冒充被認證用戶的可能。這是因 為大部分的web容器為特定的用戶維護同一個會話標(biāo)識符,即便是用戶從HTTP 切換到 HTTPS頁面。

如果對于你的特定應(yīng)用來說,會話劫持(session hijacking)是一個很嚴重的風(fēng)險,那么唯一的解決方法就是對每一個請求都使用HTTPS。這意味著jsessionid不會使用非安全信道傳輸。 你要保證你的web.xml中定義,把它指向一個HTTPS位置,同時應(yīng)用程序不把用戶指向一個HTTP位置。 Acegi Security提供一個解決方案幫助你實現(xiàn)后者。

4.2. 配置

啟用Acegi Security的信道安全服務(wù),需要在web.xml中增加如下行:

xml 代碼
 
  1. <filter>  
  2.     <filter-name>Acegi Channel Processing Filter</filter-name>  
  3.     <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>  
  4.     <init-param>  
  5.         <param-name>targetClass</param-name>  
  6.         <param-value>org.acegisecurity.securechannel.ChannelProcessingFilter</param-value>  
  7.     </init-param>  
  8. </filter><filter-mapping>  
  9.     <filter-name>Acegi Channel Processing Filter</filter-name>  
  10.     <url-pattern>/*</url-pattern>  
  11. </filter-mapping>  

和平時一樣,你同樣需要在application context中配置filter

java 代碼
 
  1. <bean id="channelProcessingFilter" class="org.acegisecurity.securechannel.ChannelProcessingFilter">  
  2.     <property name="channelDecisionManager"><ref bean="channelDecisionManager"/></property>  
  3.     <property name="filterInvocationDefinitionSource">  
  4.         <value>  
  5.             CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON  
  6.             \A/secure/.*\Z=REQUIRES_SECURE_CHANNEL  
  7.             \A/acegilogin.jsp.*\Z=REQUIRES_SECURE_CHANNEL  
  8.             \A/j_acegi_security_check.*\Z=REQUIRES_SECURE_CHANNEL  
  9.             \A.*\Z=REQUIRES_INSECURE_CHANNEL  
  10.         </value>  
  11.     </property>  
  12. </bean>  
  13.   
  14. <bean id="channelDecisionManager" class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl">  
  15.     <property name="channelProcessors">  
  16.         <list>  
  17.             <ref bean="secureChannelProcessor"/>  
  18.         <ref bean="insecureChannelProcessor"/>  
  19.     </list>  
  20.     </property>  
  21. </bean>  
  22.   
  23. <bean id="secureChannelProcessor" class="org.acegisecurity.securechannel.SecureChannelProcessor"/>  
  24.   
  25. <bean id="insecureChannelProcessor" class="org.acegisecurity.securechannel.InsecureChannelProcessor"/>  

ChannelProcessingFilter和FilterSecurityInterceptor一樣支持Apache Ant style paths。

ChannelProcessingFilter的工作方式是過濾所有的web請求,并將判斷將適合的配置屬性應(yīng)用于其上。然后它代理到 ChannelDecisionManager。默認的實現(xiàn)類ChannelDecisionManagerImpl應(yīng)該能夠滿足大多數(shù)需求。它就代理到 配置好的ChannelProcessor實例列表。ChannelProcessor會檢視請求,如果它不滿意請求(例如請求是發(fā)送自不正確的傳輸協(xié) 議)它將會重定向,拋出異常或者采取其他任何恰當(dāng)?shù)拇胧?/p>

Acegi Security 包括ChannelProcessor兩個實體類實現(xiàn):SecureChannelProcessor 保證配置了REQUIRES_SECURE_CHANNEL 屬性的請求都是從HTTPS發(fā)送過來的。而InsecureChannelProcessor 保證配置了REQUIRES_INSECURE_CHANNEL 屬性的請求都是從HTTP發(fā)送過來的。如果沒有使用請求的協(xié)議,這兩個實現(xiàn)都會轉(zhuǎn)到ChannelEntryPoint,而兩個 ChannelEntryPoint 實現(xiàn)所作的就是簡單的把請求相應(yīng)按照HTTP 和 HTTPS重定向。

要注意重定向是絕對(例如http://www.company.com:8080/app/page) 而不是相對的(例如 /app/page)。在測試中發(fā)現(xiàn)Internet Explorer 6 Service Pack 1 有一個bug,因此如果在重定向的時候也改變使用的端口,它就不能正確響應(yīng)。對應(yīng)這個bug,在很多Acegi Security bean中都會使用的PortResolverImpl也使用絕對URL。請參閱PortResolverImpl的JavaDoc以獲取更多信息。

你要注意使用為了在登錄過程中保證用戶名和密碼的安全,要使用安全信道。如果你配合基于表單的登錄使用 ChannelProcessingFilter,請記得一定要把你的登錄頁面設(shè)置為REQUIRES_SECURE_CHANNEL,并且 AuthenticationProcessingFilterEntryPoint.forceHttps屬性設(shè)置為true。

4.3. 結(jié)論

一旦配置好了,使用安全信道是非常簡單的。只要請求頁面,不用管使用什么協(xié)議(HTTP 或 HTTPS)或什么端口(80, 8080, 443, 8443等)。顯然你只要確定初始請求(獲取通過在web.xml 中的 或一個眾所周知的主頁URL),完成以后filter會執(zhí)行你application context定義的重定向。

你也可以在ChannelDecisionManagerImpl中增加自己的ChannelProcessor實現(xiàn)。例如,你可能通過"輸入圖片中的內(nèi)容"檢測到一個個人類用戶,然后在HttpSession中設(shè)置一個屬性。

要判斷一個安全檢查應(yīng)該是或者ChannelProcessor或是 AccessDecisionVoter 記得前者是設(shè)計用來處理認證或者未認證的請求,而后者是設(shè)計用來處理已認證的請求。因此后者可以訪問已認證的principal被授予的權(quán)限。

另外,ChannelProcessor檢測到問題后一般是引發(fā)一個HTTP/HTTPS重定向這樣他的請求可以被滿足,而 AccessDecisionVoter將則會跑出一個AccessDeniedException異常(取決于支配的 AccessDecisionManager)。


安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 狠狠躁夜夜躁人人爽蜜桃 | 大陆一级毛片免费视频观看i | 天堂影| 欧美日本在线播放 | 国产一区观看 | 闷骚护士18p | 香蕉视频在线网址 | 欧美日韩精品免费观看视频 | 欧美日韩免费一区 | 亚洲看片网站 | 欧美午夜一区二区三区 | 国产一级在线观看 | 91精品国产综合久久久久久 | 九九午夜 | 干美女网站 | av综合在线观看 | 天堂影院在线 | 日韩欧美中文字幕在线视频 | 国产欧美精品一区二区三区四区 | 天堂社区av | 黄色网一级片 | 亚洲一区国产精品 | 欧美日本韩国在线 | 激情网页| 91在线公开视频 | 全部孕妇毛片丰满孕妇孕交99 | 亚洲精品一区二区三区婷婷月 | 中文字幕国产欧美 | 久久91视 | 黄色软件app下载大全 | 久久亚洲美女 | 99精品视频免费看 | 久久精品免费观看 | 国产成人亚洲综合a∨婷婷 国产成人一级 | 91久久久精品国产一区二区 | 一级淫片在线观看 | a级黄色毛片三个搞一 | 好吊操视频这里只有精品 | 狠日日 | 午夜xxx| 马与人黄色毛片免费视频 |