日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

服務器是怎么要求客戶端強行彈出身份驗證窗口的

 duduwolf 2005-07-14

我們訪問tomcat服務器的時候如果試圖訪問Tomcat Manager就會發(fā)現(xiàn)瀏覽器彈出一個登陸對話框,和我們平常的網(wǎng)頁對話框不同,而且查看頁面的時候查不到生成這個對話框的代碼,禁止腳本也毫無作用。手頭的資料對這個東西沒有任何介紹,它到底是怎么彈出來的呢?


用jmeter創(chuàng)建一個http request的sampler,再建一個view result tree的lisenter來看看服務器返回了些什么污七八糟的:

HTTP response headers:
HTTP/1.1 401 Unauthorized
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
WWW-Authenticate: Basic realm="Tomcat Manager Application"
Content-Type: text/html;charset=utf-8
Content-Length: 954
Date: Thu, 30 Jun 2005 09:27:26 GMT
Server: Apache-Coyote/1.1


嘿嘿,原來是一個帶WWW-Authenticate的401錯誤啊。自己寫個jsp模擬一下看看怎么樣:

<%
response.addHeader("WWW-Authenticate","Basic realm=\"Tomcat Manager Application\"");
response.sendError(401,"Unauthorized");
%>

果然,一個一模一樣的登陸窗口跳出來了。不過身份驗證的具體過程要怎么做呢?google了一下,果然看到好東西了: http://www./showContent.asp?projectID=2083



按照說明構(gòu)造了一個jsp文件:

<%
sun.misc.BASE64Decoder decoder 
= new sun.misc.BASE64Decoder();
boolean authenticated 
= false;
String authorization 
= request.getHeader("authorization");
System.
out.println("authorization:"+authorization);
if (authorization != null{
  
if (authorization.startsWith("Basic")){
    authorization 
= authorization.substring(authorization.indexOf( )+1);
    
byte[] bytes = decoder.decodeBuffer(authorization);
    authorization 
= new String(bytes);
    String userName 
= authorization.substring(0,authorization.indexOf(:));
    String password 
= authorization.substring(authorization.indexOf(:)+1);
    System.
out.println("userName:"+userName);
    System.
out.println("password:"+password);
    authenticated 
=userName.equals("abc"&& password.equals("abc");
  }
else if (authorization.startsWith("Digest")){
    String userName 
= authorization.substring(authorization.indexOf("username="));
    userName 
= userName.substring("username=\"".length());
    userName = userName.substring(0,userName.indexOf("));
    String password 
= authorization.substring(authorization.indexOf("response="));
    password 
= password.substring("response=\"".length());
    password = password.substring(0,password.indexOf("));
    authenticated 
=userName.equals("abc"&& password.equals("3cf1135d3b8e20dd9272d06288569a56");
  }

}

if (!authenticated){
  
//   response.addHeader("WWW-Authenticate","Digest realm=\"Tomcat Manager Application\"");
  response.addHeader("WWW-Authenticate","Basic realm=\"Tomcat Manager Application\"");
  response.sendError(
401,"Unauthorized");
}
else{
  
out.println("hello abc");
}

%>



cool,和tomcat一模一樣的登陸頁面做出來了。

用戶名密碼均為abc,hard code在代碼里面了。不過還沒查到Digest方式的情況下是對哪些信息進行MD5的

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多