亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Tomcat容器管理安全的驗證方式匯總

2024-09-01 13:48:55
字體:
來源:轉載
供稿:網友

當訪問服務器中受保護的資源時,容器管理的驗證方法可以控制確認用戶身份的方式。Tomcat支持四種容器管理的安全防護,它們是:

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

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

3、FORM(表單驗證):在網頁的表單上要求提供密碼

4、CLIENT-CERT(客戶端證書驗證):以客戶端證書來確認用戶的身份

基本驗證

當web.xml文件中的auth-method元素設置為BASIC時,表明應用使用的是基本驗證,每次瀏覽器請求受保護的Web應用資源時,Tomcat都會使用HTTP基本驗證向瀏覽器索取用戶名和密碼(以頁面彈窗的方式)。使用這種驗證方法,所有的密碼都會以base64編碼的文本在網絡上傳輸。

先看下項目結構(我用Maven管理的依賴):

tomcat容器

其中,protect/protect.jsp是被保護的,需要授權訪問。

說明:本文提到的tomcat-users.xml,server.xml等文件,如果是在Eclipse中啟動tomcat,則這些文件在Eclipse中的Servers工程下對應的tomcat下,如圖:

tomcat容器

而本文提到的web.xml是指項目自己的web.xml,而非Servers項目下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目錄下的所有資源是受保護的 -->
  <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>
 <!-- 驗證方式,可選的值為: "BASIC", "DIGEST", "FORM", "CLIENT-CERT" -->
 <auth-method>BASIC</auth-method>
 <!-- 使用的Realm名字,注意這里不能有空格 -->
 <realm-name>MyConstraints</realm-name>
</login-config>
 
tomcat-user.xml(注意如果是在Eclipse中啟動tomcat,這個tomcat-user.xml在Eclipse中的Servers工程下)

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

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

tomcat容器

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

tomcat容器

摘要驗證

當web.xml文件中的auth-method元素設置為DIGEST時,表明應用使用的是摘要驗證。還是上面的例子,看配置:

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

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

tomcat容器

接下來,要生成tomcat可識別的MD5密碼。方式有兩種,正如官網描述:

Tomcat,容器管理,安全驗證

方式一:用代碼來生成:

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

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

tomcat容器

方式二:用腳本來生成:

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

tomcat容器

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

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

 Tomcat,容器管理,安全驗證

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

tomcat容器

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

表單驗證

當web.xml文件中的auth-method元素設置為FORM時,表明應用使用的是表單驗證。當用戶請求Web應用程序受保護的資源時,表單驗證會跳轉至配置的登錄頁面。當登錄失敗時,還需要一個驗證失敗的頁面,還是上面的例子,看配置:

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是用于登錄的頁面,而form/error.html則是驗證失敗后跳轉到的頁面(這兩個頁面在上方的工程結構圖中已經有了)。

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",賬號的name="j_username"和密碼的name="j_password"都是不可變的,否則配置的驗證規則不起作用。

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

tomcat容器

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

tomcat容器

效果(僅在訪問protect目錄下的資源時才出現Login Page):

tomcat容器

輸入錯誤的賬號和密碼,跳轉至form/error.html頁面:

tomcat容器

輸入正確的賬號和密碼,跳轉至受保護的頁面:

tomcat容器

客戶端證書驗證

待續
 
Demo下載:

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

參考頁面:

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
5566成人精品视频免费| 一二美女精品欧洲| 国产成人精品久久亚洲高清不卡| 激情成人在线视频| 国产精品电影网站| 久久久亚洲欧洲日产国码aⅴ| 国产精品视频网址| 国产视频久久久久| 欧美影院成年免费版| 中文字幕精品—区二区| 亚洲欧洲在线免费| 国产69精品久久久久99| 国产精品爽爽爽| 国产精品一区二区三区毛片淫片| 日韩中文字幕视频在线| 久久99视频免费| 91精品久久久久久| 久久成人亚洲精品| 日韩精品在线电影| 66m—66摸成人免费视频| 综合国产在线观看| 中文字幕成人精品久久不卡| 精品久久香蕉国产线看观看亚洲| 亚洲一区二区三区xxx视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩精品国产| 日韩成人性视频| 欧美精品性视频| 亚洲精品小视频| 日韩av影片在线观看| 日韩精品中文字| 深夜精品寂寞黄网站在线观看| 久久久精品中文字幕| 亚洲va男人天堂| 国产69精品久久久久9999| 色老头一区二区三区| 在线国产精品视频| 日韩欧美a级成人黄色| 在线观看91久久久久久| 亚洲国产天堂网精品网站| 中文字幕在线看视频国产欧美在线看完整| 久久精品夜夜夜夜夜久久| 久久久精品2019中文字幕神马| 国产精欧美一区二区三区| 欧美午夜宅男影院在线观看| 奇门遁甲1982国语版免费观看高清| 欧美日韩免费看| 久久夜色精品国产亚洲aⅴ| 欧美伊久线香蕉线新在线| 国产性猛交xxxx免费看久久| 韩国视频理论视频久久| 亚洲成**性毛茸茸| 欧美孕妇毛茸茸xxxx| 久久久国产精彩视频美女艺术照福利| 国产精品96久久久久久又黄又硬| 成人亚洲激情网| 亚洲欧美视频在线| 综合欧美国产视频二区| 日本免费久久高清视频| 欧美极品少妇xxxxx| 精品欧美国产一区二区三区| 亚洲美女在线观看| 91亚洲国产成人久久精品网站| 欧美色播在线播放| 精品成人av一区| 精品爽片免费看久久| 亚洲国产成人爱av在线播放| 欧美一区视频在线| 日韩欧美在线播放| 欧美日韩中国免费专区在线看| 亚洲一区二区三区777| 777国产偷窥盗摄精品视频| 亚洲a级在线播放观看| 欧美性猛交xxxx富婆| 久久久97精品| 国产精品九九久久久久久久| 国产精品av网站| 精品国偷自产在线| 亚洲欧洲日本专区| 国产精品电影久久久久电影网| 国产一区二区三区在线免费观看| 国产精品久久久av久久久| 日本欧美精品在线| 久久精品这里热有精品| 亚洲人午夜色婷婷| 最新国产成人av网站网址麻豆| 欧美亚洲在线播放| 伊人男人综合视频网| 欧美国产在线视频| 久久久久久久影视| 亚洲黄色在线观看| 欧美激情第1页| 亚洲欧美日韩精品久久奇米色影视| 日韩在线观看免费av| 欧美日韩在线视频首页| 日韩精品视频在线观看网址| 亚洲aa中文字幕| 中文字幕日韩欧美精品在线观看| 国产精品久久久久久久久久久久| 国产精品无码专区在线观看| 欧美一区二三区| 精品亚洲aⅴ在线观看| 欧美高清自拍一区| 国产精品高潮呻吟久久av黑人| 成人情趣片在线观看免费| 韩国精品久久久999| 国产精品久久久久久久午夜| 97超级碰碰碰久久久| 538国产精品视频一区二区| 欧美日韩亚洲成人| 亚洲激情视频在线| 日韩在线不卡视频| 精品激情国产视频| 欧美日韩国产综合视频在线观看中文| 777777777亚洲妇女| 久久久精品一区二区三区| 亚洲女同性videos| 国产精品久久77777| 黑人狂躁日本妞一区二区三区| 亚洲成成品网站| 国产精品香蕉av| 日韩精品中文字幕在线| 国产精品亚洲片夜色在线| 亚洲第一二三四五区| 欧美成人三级视频网站| 欧美成人午夜激情在线| 欧美日韩综合视频网址| 欧美高清不卡在线| 亚洲精品一区久久久久久| 亚洲一区亚洲二区| 国产精品揄拍500视频| 欧美国产日韩一区| 黑人极品videos精品欧美裸| 欧日韩不卡在线视频| 91在线无精精品一区二区| 欧美午夜美女看片| 亚洲成人精品久久久| 亚洲欧洲一区二区三区久久| 国产综合福利在线| 亚洲乱码av中文一区二区| 伊人久久久久久久久久| 亚洲欧洲国产伦综合| 日韩成人在线电影网| 成人黄色免费在线观看| 欧美影院成年免费版| 欧洲美女7788成人免费视频| 亚洲精品一区二区在线| 国产一区二区日韩精品欧美精品| 久久亚洲精品一区二区| 亚洲国产成人精品女人久久久| 亚洲欧美在线一区| 青草青草久热精品视频在线网站| 性欧美暴力猛交69hd| 国产成人在线视频| 亚洲福利精品在线| 亚洲精品美女在线观看播放| 91社影院在线观看| 欧美一级免费视频| 亚洲欧洲在线视频| 97人人爽人人喊人人模波多| 久久久久久一区二区三区| 亚洲欧美一区二区三区四区| 日本一区二区不卡| 美日韩精品免费观看视频|