tambc

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            5 Posts :: 21 Stories :: 5 Comments :: 0 Trackbacks
          我們訪問tomcat服務(wù)器的時(shí)候如果試圖訪問Tomcat Manager就會(huì)發(fā)現(xiàn)瀏覽器彈出一個(gè)登陸對話框,和我們平常的網(wǎng)頁對話框不同,而且查看頁面的時(shí)候查不到生成這個(gè)對話框的代碼,禁止腳本也毫無作用。手頭的資料對這個(gè)東西沒有任何介紹,它到底是怎么彈出來的呢?


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

          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


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

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

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



          按照說明構(gòu)造了一個(gè)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方式的情況下是對哪些信息進(jìn)行MD5的。
          posted on 2006-12-25 14:02 tambc 閱讀(257) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 广汉市| 兴山县| 朝阳市| 临城县| 仙居县| 科尔| 雅江县| 无锡市| 江北区| 高唐县| 河北省| 凌海市| 石城县| 通河县| 休宁县| 曲阳县| 射阳县| 宝清县| 朝阳县| 彰化县| 高平市| 拉萨市| 威信县| 嘉祥县| 安达市| 民乐县| 永善县| 靖江市| 米脂县| 昆山市| 那曲县| 全南县| 达孜县| 于都县| 安龙县| 永宁县| 绩溪县| 襄樊市| 桂阳县| 新竹市| 顺平县|