欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Tomcat容器管理安全的驗(yàn)證方式匯總

 更新時(shí)間:2016年11月04日 11:58:04   投稿:mrr  
當(dāng)訪問(wèn)服務(wù)器中受保護(hù)的資源時(shí),容器管理的驗(yàn)證方法可以控制確認(rèn)用戶身份的方式。Tomcat支持四種容器管理的安全防護(hù)。下面小編給大家分享Tomcat容器管理安全的驗(yàn)證方式匯總,感興趣的朋友一起看看吧

當(dāng)訪問(wèn)服務(wù)器中受保護(hù)的資源時(shí),容器管理的驗(yàn)證方法可以控制確認(rèn)用戶身份的方式。Tomcat支持四種容器管理的安全防護(hù),它們是:

1、BASIC(基本驗(yàn)證):通過(guò)HTTP驗(yàn)證,需要提供base64編碼文本的用戶口令

2、DIGEST(摘要驗(yàn)證):通過(guò)HTTP驗(yàn)證,需要提供摘要編碼字符串的用戶口令

3、FORM(表單驗(yàn)證):在網(wǎng)頁(yè)的表單上要求提供密碼

4、CLIENT-CERT(客戶端證書(shū)驗(yàn)證):以客戶端證書(shū)來(lái)確認(rèn)用戶的身份

基本驗(yàn)證

當(dāng)web.xml文件中的auth-method元素設(shè)置為BASIC時(shí),表明應(yīng)用使用的是基本驗(yàn)證,每次瀏覽器請(qǐng)求受保護(hù)的Web應(yīng)用資源時(shí),Tomcat都會(huì)使用HTTP基本驗(yàn)證向?yàn)g覽器索取用戶名和密碼(以頁(yè)面彈窗的方式)。使用這種驗(yàn)證方法,所有的密碼都會(huì)以base64編碼的文本在網(wǎng)絡(luò)上傳輸。

先看下項(xiàng)目結(jié)構(gòu)(我用Maven管理的依賴):

其中,protect/protect.jsp是被保護(hù)的,需要授權(quán)訪問(wèn)。

說(shuō)明:本文提到的tomcat-users.xml,server.xml等文件,如果是在Eclipse中啟動(dòng)tomcat,則這些文件在Eclipse中的Servers工程下對(duì)應(yīng)的tomcat下,如圖:

而本文提到的web.xml是指項(xiàng)目自己的web.xml,而非Servers項(xiàng)目下Tomcat中的web.xml。
web.xml

<security-constraint>
 <web-resource-collection>
  <http-method>GET</http-method>
  <web-resource-name>tomcat protect page</web-resource-name>
  <!-- /protect目錄下的所有資源是受保護(hù)的 -->
  <url-pattern>/protect/*</url-pattern>
 </web-resource-collection>
 <auth-constraint>
  <!-- 這里的member要與tomcat-user.xml中配置的role一致 -->
  <role-name>member</role-name>
 </auth-constraint>
</security-constraint>
<login-config>
 <!-- 驗(yàn)證方式,可選的值為: "BASIC", "DIGEST", "FORM", "CLIENT-CERT" -->
 <auth-method>BASIC</auth-method>
 <!-- 使用的Realm名字,注意這里不能有空格 -->
 <realm-name>MyConstraints</realm-name>
</login-config>
 
tomcat-user.xml(注意如果是在Eclipse中啟動(dòng)tomcat,這個(gè)tomcat-user.xml在Eclipse中的Servers工程下)

<role rolename="member"/>
<!-- member角色下有一個(gè)叫alvis的用戶,密碼為pwd -->
<user username="alvis" password="pwd" roles="member"/>

重啟tomcat后,訪問(wèn)protect目錄下的資源,情況是這樣的:

輸入賬戶alvis,密碼pwd后,訪問(wèn)成功(當(dāng)然,非protect目錄下的資源是可以直接訪問(wèn)的):

摘要驗(yàn)證

當(dāng)web.xml文件中的auth-method元素設(shè)置為DIGEST時(shí),表明應(yīng)用使用的是摘要驗(yàn)證。還是上面的例子,看配置:

web.xml和基本驗(yàn)證一樣,只是auth-method修改為DIGEST,此處不贅述。

server.xml中的UserDatabaseRealm(如果tomcat使用的是其他Realm,也一樣的)里增加digest屬性:

接下來(lái),要生成tomcat可識(shí)別的MD5密碼。方式有兩種,正如官網(wǎng)描述:

Tomcat,容器管理,安全驗(yàn)證

方式一:用代碼來(lái)生成:

import org.apache.catalina.realm.RealmBase;
public class T {
 public static void main(String[] args) {
  //參數(shù)1:要加密的字符串;參數(shù)2:加密算法;參數(shù)3:字符串的編碼
  String base = RealmBase.Digest("alvis:MyConstraints:pwd", "MD5", null);
  System.out.println(base);
 }
}

由于RealmBase類在catalina.jar包中,如果項(xiàng)目中沒(méi)有這個(gè)類,可在項(xiàng)目上右鍵-->Java Build Path--> Libraries-->Add Library-->選擇Server Runtime-->選擇Apache Tomcat V8.0(其實(shí)7.0也行),如圖:

方式二:用腳本來(lái)生成:

在tomcat/bin目錄下有個(gè)digest.sh(Linux系統(tǒng))或digest.bat(Windows系統(tǒng))腳本,運(yùn)行這個(gè)腳本,傳入摘要算法和參數(shù)即可,這里我在Windows系統(tǒng)上運(yùn)行,如圖:

這里的-a指定摘要算法為MD5,要特別注意這里的參數(shù)是:{用戶名}:{Realm名}:{密碼明文}。用戶名就是tomcat-users.xml中配置的<user>名字(這里為alvis),Realm名是在web.xml中配置的<realm-name>(這里為MyConstraints),密碼明文即該用戶用于登錄的密碼(我這里設(shè)為pwd)。

只有這樣的參數(shù)加密后的密碼,在tomcat-users.xml中配置才有效,否則是登錄不了的。由于我是參考《Tomcat權(quán)威指南(第二版)》的步驟做的,之前試了很久都不知道為什么登錄不了,結(jié)果在官網(wǎng)找到答案,是這么描述的:

 Tomcat,容器管理,安全驗(yàn)證

大意是說(shuō),如果使用DIGEST方式驗(yàn)證,用于生成摘要的明文必須被替換為這種格式。實(shí)踐出真知,所以還是不能完全看書(shū)啊,動(dòng)手實(shí)踐才是實(shí)在的。
然后就是在tomcat-users.xml中配置生成的密碼(通過(guò)下方的截圖,可以比較password跟上方digest.bat腳本生成的密碼是否一致):

之后重啟tomcat,效果自然是跟使用基本驗(yàn)證的效果一樣了。

表單驗(yàn)證

當(dāng)web.xml文件中的auth-method元素設(shè)置為FORM時(shí),表明應(yīng)用使用的是表單驗(yàn)證。當(dāng)用戶請(qǐng)求Web應(yīng)用程序受保護(hù)的資源時(shí),表單驗(yàn)證會(huì)跳轉(zhuǎn)至配置的登錄頁(yè)面。當(dāng)?shù)卿浭r(shí),還需要一個(gè)驗(yàn)證失敗的頁(yè)面,還是上面的例子,看配置:

web.xml

<security-constraint>
 <web-resource-collection>
  <http-method>GET</http-method>
  <web-resource-name>tomcat member part</web-resource-name>
  <url-pattern>/protect/*</url-pattern>
 </web-resource-collection>
 <auth-constraint>
  <role-name>member</role-name>
 </auth-constraint>
</security-constraint>
<login-config>
 <auth-method>FORM</auth-method>
 <realm-name>MyConstraints</realm-name>
 <form-login-config>
  <form-login-page>/form/login.html</form-login-page>
  <form-error-page>/form/error.html</form-error-page>
 </form-login-config>
</login-config>

這里的form/login.html是用于登錄的頁(yè)面,而form/error.html則是驗(yàn)證失敗后跳轉(zhuǎn)到的頁(yè)面(這兩個(gè)頁(yè)面在上方的工程結(jié)構(gòu)圖中已經(jīng)有了)。

login.html

<html>
 <body>
 <h2>Login Page.</h2>
 <form method="post" action="j_security_check" name="loginForm">
  <input type="text" name="j_username" /><br>
  <input type="password" name="j_password" /><br>
  <input type="submit" value="Login" />
 </form>
 </body>
</html>

注意:這里form的action="j_security_check",賬號(hào)的name="j_username"和密碼的name="j_password"都是不可變的,否則配置的驗(yàn)證規(guī)則不起作用。

server.xml中,要去掉Realm中添加的“digest=MD5”這個(gè)屬性:

tomcat-users.xml中使用明文保存密碼:

效果(僅在訪問(wèn)protect目錄下的資源時(shí)才出現(xiàn)Login Page):

輸入錯(cuò)誤的賬號(hào)和密碼,跳轉(zhuǎn)至form/error.html頁(yè)面:

輸入正確的賬號(hào)和密碼,跳轉(zhuǎn)至受保護(hù)的頁(yè)面:

客戶端證書(shū)驗(yàn)證

待續(xù)
 
Demo下載:

鏈接: http://pan.baidu.com/s/1gfnqVdT 密碼: pubw

參考頁(yè)面:

https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html

相關(guān)文章

  • 解讀Tomcat啟動(dòng)、重啟、暫停操作(window)

    解讀Tomcat啟動(dòng)、重啟、暫停操作(window)

    這篇文章主要介紹了解讀Tomcat啟動(dòng)、重啟、暫停操作(window),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-04-04
  • Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法

    Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法

    這篇文章主要介紹了Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Tomcat配置SSL證書(shū)的方法

    Tomcat配置SSL證書(shū)的方法

    這篇文章主要介紹了Tomcat配置SSL證書(shū)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • tomcat漏洞匯總

    tomcat漏洞匯總

    本文主要介紹了tomcat漏洞匯總,文中通過(guò)代碼和示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Tomcat 請(qǐng)求資源[/XXX/]不可用問(wèn)題的解決方法

    Tomcat 請(qǐng)求資源[/XXX/]不可用問(wèn)題的解決方法

    Tomcat 請(qǐng)求的資源[/XXX/]不可用問(wèn)題,通過(guò)正確路徑訪問(wèn)(運(yùn)行代碼時(shí)候自動(dòng)打開(kāi)瀏覽器訪問(wèn)的路徑),和錯(cuò)誤路徑訪問(wèn),它的表現(xiàn)是不一樣的,本文就來(lái)介紹一下解決方法
    2023-11-11
  • 淺談Tomcat如何打破雙親委托機(jī)制

    淺談Tomcat如何打破雙親委托機(jī)制

    本文主要介紹了淺談Tomcat如何打破雙親委托機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Tomcat部署SpringBoot項(xiàng)目的war包的方法及詳細(xì)步驟

    Tomcat部署SpringBoot項(xiàng)目的war包的方法及詳細(xì)步驟

    這篇文章主要介紹了Tomcat部署SpringBoot項(xiàng)目的war包的方法,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 淺談Tomcat中<Context>標(biāo)簽的使用方式和注意事項(xiàng)

    淺談Tomcat中<Context>標(biāo)簽的使用方式和注意事項(xiàng)

    本文主要介紹了淺談Tomcat中<Context>標(biāo)簽的使用方式和注意事項(xiàng),Context標(biāo)簽可以設(shè)置Tomcat默認(rèn)項(xiàng)目,設(shè)置項(xiàng)目的瀏覽器訪問(wèn)路徑,讓項(xiàng)目修改后自動(dòng)重新編譯部署,感興趣的可以了解下
    2023-11-11
  • Tomcat8使用cronolog來(lái)進(jìn)行Catalina.Out日志分割方法

    Tomcat8使用cronolog來(lái)進(jìn)行Catalina.Out日志分割方法

    今天通過(guò)本文給大家分享如何使用cronolog來(lái)分割catalina.out日志文件,對(duì)Tomcat Catalina.Out日志分割方法感興趣的朋友跟隨小編一起看看吧
    2021-09-09
  • tomcat+nginx域名配置方法

    tomcat+nginx域名配置方法

    本文給大家介紹如何通過(guò)nginx代理的方式進(jìn)行域名訪問(wèn),需要的朋友的朋友參考下吧
    2018-03-03

最新評(píng)論