我们访问tomcat服务器的时候如果试图访问Tomcat Manager就会发现浏览器弹出一个登陆对话框,和我们平常的网页对话框不同,而且查看页面的时候查不到生成这个对话框的代码,禁止脚本也毫无作用。手头的资料对这个东西没有任何介绍,它到底是怎么弹出来的呢?
用jmeter创建一个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 1Array70 08:00:00 CST
WWW-Authenticate: Basic realm="Tomcat Manager Application"
Content-Type: text/html;charset=utf-8
Content-Length: Array54
Date: Thu, 30 Jun 2005 0Array: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.chinadata.cn/showContent.asp?projectID=2083
按照说明构造了一个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("3cf1135d3b8e20ddArray272d0628856Arraya56");
}
}
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的
分享到:
相关推荐
在网络安全领域,证书是保障通信安全的关键元素,主要用于身份验证和数据加密。本文将深入探讨“自签署根证书”、“服务器证书”以及“客户端证书”的概念、用途和操作流程。 首先,我们来看“自签署根证书”。根...
Labview TCP服务器对多客户端程序是一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)开发的交互式应用程序,它展示了如何构建一个TCP服务器来处理多个同时连接的客户端。LabVIEW是美国国家...
8. **数据验证**: 在Demo中提到了“验证”功能,这可能包括身份验证(如OAuth、JWT)、数据有效性验证(如JSON Schema)等,确保客户端发送的数据符合服务器的预期。 9. **错误处理**: 客户端需要处理各种可能出现...
8. **数据传递**:如果需要在弹出窗口中展示从服务器获取的数据,可以将数据作为JSON返回,并在客户端使用JavaScript解析并填充到模态窗口中相应的元素。 9. **验证与提交**:在弹出窗口中进行表单输入时,可以利用...
它提供了完整的堆栈实现,包括身份验证、加密、数据模型和信息模型的定义,以及客户端和服务器之间的通信协议。开发者可以利用这个库轻松地在自己的应用程序中集成OPC UA功能。 3. **服务器和客户端**: 在OPC UA中...
FTP服务器的核心职责是接收并响应来自客户端的FTP命令,如LIST(列出目录内容)、RETR(下载文件)和USER/PASS(身份验证)。在C#中,可以使用System.Net.FtpServer库来实现这些功能。首先,我们需要创建一个自定义...
2. **命令交互**:客户端发送FTP命令,如`USER`、`PASS`进行身份验证,`LIST`获取目录信息,`RETR`下载文件,`STOR`上传文件等。 3. **数据通道管理**:客户端需要管理数据连接,这可能是通过控制连接的命令设置的,...
用户在授权服务器上进行身份验证,然后根据用户的授权决定是否向客户端发放访问令牌。 **资源服务器(OAuth Resource Server)** 资源服务器是存储和提供受保护资源的服务器,它接收携带访问令牌的请求,并验证令牌...
在IT领域,网络通信是核心部分之一,而“echo服务器和客户端程序”是学习网络编程时常见的基础示例。这个概念通常用于展示TCP或UDP协议的基本工作原理,以及如何实现客户端与服务器之间的数据交换。 首先,我们要...
"TCP服务器端+客户端测试工具"是用于验证和调试TCP通信的一种实用软件,它可以帮助开发者和网络管理员检查TCP连接的正确性,确保数据的完整传输。 首先,我们要理解TCP服务器端的角色。服务器端通常是指运行在特定...
在QT网络编程中,服务器往往需要和多个客户端保持连接,因此,我在熟悉多线程编程过程中,在TCP服务每接收到一个客户端连接请求,就新建一个线程。客户端也是在新建的线程中维护的。 程序的思路如下: 程序使用了非...
在这个主题中,我们将深入探讨FTP服务器与客户端的设计与实现,包括文件操作、用户权限管理等关键概念。 一、FTP服务器基础 FTP服务器是提供文件传输服务的软件,它接收客户端的连接请求,处理文件的上传、下载以及...
总结来说,ASP.NET实现弹出窗口并返回值刷新主窗口的功能,需要结合客户端的JavaScript、服务器端的ASP.NET技术和页面间通信策略。理解这些概念和技术,能帮助开发者构建更丰富的交互式Web应用。
在本文中,我们将深入探讨如何使用C#的Socket编程来实现一个简单的聊天应用程序,其中包含服务器和客户端的交互。...通过学习和实践这些概念,你可以创建出自己的网络应用程序,实现服务器与客户端之间的高效通信。
本主题将深入探讨如何利用ASP.NET GridView的双击事件来实现用户双击某行时,弹出一个窗口显示该行的详细信息。 首先,我们需要在ASP.NET页面上添加一个GridView控件,并将其与数据源(如SqlDataSource或...
这是一个基于VC++开发的局域网聊天系统,涵盖了多个关键功能点,包括服务器与客户端通信、文件传输、系统托盘操作以及窗口抖动通知。下面将详细解释这些知识点。 1. **VC++**:VC++是Microsoft开发的一种编程环境,...
本项目“Qt:Tcp服务器与客户端程序”聚焦于利用Qt库来实现TCP(传输控制协议)通信。TCP是一种面向连接的、可靠的网络通信协议,它确保数据的正确排序和无丢失传输。 在描述中提到,该程序能够“建立TCP服务器后,...
在这个项目中,STM32F750开发板被用来创建一个能同时处理多个PC客户端连接的TCP服务器。下面我们将详细探讨这个Demo中的关键技术点。 首先,STM32F750是一款高性能的微控制器,基于ARM Cortex-M7内核,具有丰富的...
对话框是一种特殊的窗口,它从主应用窗口中弹出,要求用户提供信息或进行某种交互。在网页中,我们通常通过JavaScript库,如jQuery UI或Bootstrap来创建模态对话框。 1. **jQuery UI Dialog**:jQuery UI提供了方便...