日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
配置Struts2應(yīng)用程序的安全功能

安全性是Web應(yīng)用程序開發(fā)工作中最關(guān)鍵的問題之一。在基于servlet的應(yīng)用程序里,保護(hù)應(yīng)用程序資源的辦法有兩種:一是對應(yīng)用程序進(jìn)行配置(web.xml),二是使用Java代碼硬編碼到程序中。前一種方法使用配置文件,該方法很靈活,這是因?yàn)橥ㄟ^使用配置文件,無需改寫任何代碼就可以改變安全策略,是一種常見的手段。而Struts 2是基于servlet技術(shù)的,所以Struts 2的安全策略也可以使用配置文件進(jìn)行靈活的配置。

創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元鷹潭做網(wǎng)站,已為上家服務(wù),為鷹潭各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

配置安全策略時(shí),有兩個(gè)概念需要清楚的區(qū)分 ,用戶和角色,簡單的說用戶為使用計(jì)算機(jī)的人,可以是個(gè)人或組織。角色是一個(gè)抽象的概念,泛指職務(wù)或者權(quán)限。例如,張三,李四,王五三個(gè)人,有職員、主管和經(jīng)理三個(gè)職務(wù)(權(quán)限),張三是用戶,張三可以是主管職務(wù),代表張三這個(gè)用戶含有主管的權(quán)利。

不同的servlet容器所提供的用戶和角色管理機(jī)制是不相同的。我使用的是Tomcat服務(wù)器,它提供的用戶和角色管理機(jī)制文件是在其安裝目錄下的conf目錄中的tomcat-users.xml文件,可以在這個(gè)文件里完成對用戶和角色的編輯。例如:

 
 
 
 
  1.     
  2.     
  3.     
  4.     
  5.     

這個(gè)文件定義了2個(gè)角色(tomcat和role1)和3名用戶(tomcat、both和role1)。你可以在tomcat-users.xml文件里定義任意多個(gè)用戶和角色。

使用Struts 2保護(hù)應(yīng)用程序的資源

Struts 2應(yīng)用程序的安全策略是通過部署web.xml文件中的security-constraint元素實(shí)現(xiàn)的,該元素的語法定義:

 
 
 
 
  1.  
  2.  
  3.  
  4.  

該語法說明了,security-constraint元素可以有一個(gè)可選的display-name子元素,至少一個(gè)web-resource-collection子元素,一個(gè)可選的auth-constraint子元素和一個(gè)可選的user-data-constraint子元素。

web-resource-collection子元素是用來列出打算保護(hù)的Web資源,具體的做法是為這些資源設(shè)置URL限制,它是通過設(shè)置web-resource-collection元素包含的子元素實(shí)現(xiàn)的:

◆  web-resource-name:是與受保護(hù)資源相關(guān)聯(lián)的名稱。該子元素為必須元素。

◆  description:對給定資源的描述。這個(gè)子元素為可選元素。

◆  url-pattern:用來設(shè)置URL表達(dá)式,與這個(gè)URL表達(dá)式相匹配的URL地址指向的資源將受到保護(hù)。該子元素為至少有一個(gè),為必須元素。

◆  http-method:用來表明哪些HTTP方法將受到限制,例如設(shè)置為GET那么所有的GET請求就將受到限制。該元素為可選元素。

auth-constraint元素用于指定可以訪問該資源用戶角色集合。如果沒有指定auth-constraint元素,就將安全約束應(yīng)用于所有角色。它包含下面幾個(gè)子元素:

◆  description:描述。該元素是可選元素。

◆  role-name:可以訪問保護(hù)資源的用戶角色。該元素可以有多個(gè)。

◆  user-data-constraint元素用來設(shè)置怎樣保護(hù)在客戶端和Web容器之間傳遞的數(shù)據(jù)。

◆  description: 描述。可選元素。

◆  transport-guarantee :該元素有以下幾個(gè)值

    1. NONE,這意味著應(yīng)用不需要傳輸保證。

    2. INTEGRAL,意味著服務(wù)器和客戶端之間的數(shù)據(jù)必須以某種方式發(fā)送,而且在傳送中數(shù)據(jù)不能被篡改。

    3. CONFIDENTIAL,這意味著傳輸?shù)臄?shù)據(jù)必須加密。

配置完畢security-constraint元素的基本信息,大致為下面的格式:

 
 
 
 
  1.     
  2.         Admin Arew
  3.         *.action
  4.     
  5.     
  6.         myeclipseWeb
  7.     

這個(gè)security-constraint元素的效果為:只要與表達(dá)式"*.action"匹配的請求不是來自擁有"myeclipseWeb"權(quán)限的用戶,Web容器就會(huì)阻斷它。在這里還可以使用http-method元素,阻斷特定方法的請求,因?yàn)闆]有使用會(huì)阻斷所有方法提交的請求。

設(shè)置完安全策略后,還需要設(shè)置讓用戶有機(jī)會(huì)提供證明,證明自己有權(quán)限訪問這個(gè)受限資源的登陸方法。允許使用的登陸方法使用login-config元素設(shè)置,下面為login-config元素的語法定義:

 
 
 
 
  1.  
  2.  
  3.  

login-config子元素的描述如下:
◆  auth-method指定用來驗(yàn)證用戶身份的方法。它的值為下面的一個(gè):BASIC、DIGEST、FORM或 CLIENT-CERT
◆  realm-name指定HTTP Basic驗(yàn)證中在標(biāo)準(zhǔn)登陸框中顯示的一條提示。
◆  form-login-config元素是在元素值為"FORM"時(shí)使用的。它是指定基于表單的登錄中應(yīng)該使用的登錄頁面和出錯(cuò)頁面。如果沒有使用基于表單的驗(yàn)證,則忽略這些元素。這個(gè)元素的定義如下,其中form-login-page用于指定顯示登錄頁面的資源路徑, form-error-page則用于指定用戶登錄失敗時(shí)顯示出錯(cuò)頁面的資源路徑。

 
 
 
 
  1.  
  2.  

設(shè)置完登陸方法后,還應(yīng)該使用security-role元素,注冊允許用來訪問受保護(hù)資源所有角色。在該元素內(nèi)部使用一個(gè)role-name子元素來注冊一個(gè)角色。例如:

 
 
 
 
  1.     myeclipseWeb

注冊了一個(gè)"myeclipseWeb"的角色。

演示示例:使用BASIC登陸方法驗(yàn)證用戶身份

1.我使用的Servlet容器是Tomcat,找到它的目錄下conf目錄中的tomcat-users.xml文件打開內(nèi)容如下:

 
 
 
 
  1.     
  2.     
  3.     
  4.     
  5.     

我使用的IDE是myEclipse9.0,它配置好Tomcat下的tomcat-users.xml文件內(nèi)容如上,我直接使用它了,你也可以添加自己的角色和用戶。該文件定義了2個(gè)角色和3個(gè)用戶,每一個(gè)用戶都由自己的角色(或者說權(quán)限,可以有多重權(quán)限)。

2.創(chuàng)建Web項(xiàng)目,找到web.xml,配置它,使它支持Struts 2并且啟動(dòng)Struts 2的安全策略

 
 
 
 
  1.          xmlns="http://java.sun.com/xml/ns/j2ee" 
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  4.     Struts Blank
  5.     
  6.         struts2
  7.         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  8.     
  9.     
  10.         struts2
  11.         /*
  12.     
  13.     
  14.         index.html
  15.     
  16.     
  17.     
  18.         
  19.             Admin Arew
  20.             *.action
  21.         
  22.         
  23.             myeclipseWeb
  24.         
  25.     
  26.     
  27.     
  28.         myeclipseWeb
  29.     
  30.     
  31.         myeclipseWebservices
  32.     
  33.     
  34.     
  35.         BASIC
  36.         User Basic Authentication
  37.     

3. 創(chuàng)建接收一個(gè)字段信息的動(dòng)作類:

 
 
 
 
  1. public class SecureAction extends ActionSupport {
  2.     private static final long serialVersionUID = 1961430702313132722L;
  3.     private String username;
  4.     public String getUsername() {
  5.         return username;
  6.     }
  7.     public void setUsername(String username) {
  8.         this.username = username;
  9.     }
  10.     @Override
  11.     public String execute()
  12.     {
  13.         return SUCCESS;
  14.     }
  15. }

4. 創(chuàng)建struts.xml配置文件,聲明動(dòng)作

 
 
 
 
  1.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  2.     "http://struts.apache.org/dtds/struts-2.0.dtd">
  3.     
  4.         
  5.             /index.jsp
  6.         
  7.     

5. 創(chuàng)建輸入頁面input.jsp和結(jié)果頁面index.jsp

input.jsp:

 
 
 
 
  1.     
  2.         
  3.         
  4.     

index.jsp

 
 
 
 
  1.     ,Welcome

6.測試效果,在瀏覽器輸入:http://localhost:8081/SecureTest/input.jsp,得到如下界面:輸入"Tom",點(diǎn)擊"submit"按鈕,查看效果:

看到了登陸框了吧,此時(shí)我們要訪問的資源是一個(gè)受限資源所以要求權(quán)限驗(yàn)證,還記得我們的用戶表吧,查看用戶表輸入用戶信息查看結(jié)果:

輸入"webservices"與"webservices-pwd"的用戶信息:

提示了一個(gè)"403"錯(cuò)誤,這是因?yàn)殡m然用戶信息正確,但是"webservices"用戶的沒有"myeclipseWeb"權(quán)限。

這次輸入一個(gè)不存在的用戶信息:

這次獲得了一個(gè)"401"錯(cuò)誤,這是登陸失敗的提示結(jié)果,這里會(huì)因?yàn)g覽器的不同而需要不同次數(shù)的失敗登陸才會(huì)得到這個(gè)結(jié)果。

接下來輸入一個(gè)正確的用戶,并且擁有"webservices"權(quán)限的用戶信息:

點(diǎn)擊"確定",獲得如下結(jié)果:

可以看到,我們成功的訪問了受保護(hù)的資源。若要傳中文字,解決方案我已經(jīng)在前面"配置Struts2"時(shí)介紹過了,需要修改Struts 2默認(rèn)的編碼方式還需要修改頁面的編碼方式,都改為"GBK"。


文章題目:配置Struts2應(yīng)用程序的安全功能
網(wǎng)頁路徑:http://m.5511xx.com/article/djeedid.html