我们访问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 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.chinadata.cn/showContent.asp?projectID=2083
按照说明构造了一个jsp文件:
<%
sun.misc.BASE64Decoderdecoder=newsun.misc.BASE64Decoder();
booleanauthenticated=false;
Stringauthorization=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=newString(bytes);
StringuserName=authorization.substring(0,authorization.indexOf(':'));
Stringpassword=authorization.substring(authorization.indexOf(':')+1);
System.out.println("userName:"+userName);
System.out.println("password:"+password);
authenticated=userName.equals("abc")&&password.equals("abc");
}elseif(authorization.startsWith("Digest")){
StringuserName=authorization.substring(authorization.indexOf("username="));
userName=userName.substring("username=\"".length());
userName=userName.substring(0,userName.indexOf('"'));
Stringpassword=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","Digestrealm=\"TomcatManagerApplication\"");
response.addHeader("WWW-Authenticate","Basicrealm=\"TomcatManagerApplication\"");
response.sendError(401,"Unauthorized");
}else{
out.println("helloabc");
}
%>
cool,和tomcat一模一样的登陆页面做出来了。
用户名密码均为abc,hard code在代码里面了。不过还没查到Digest方式的情况下是对哪些信息进行MD5的
分享到:
相关推荐
错误一:SMTP 服务器要求安全连接或客户端未通过身份验证(5.7.1 Client was not authenticated) 这个错误通常意味着SMTP服务器需要一个安全的连接(例如,通过SSL或TLS加密)或者客户端提供的凭证无效。解决方法是...
本文将深入探讨如何利用C#编程语言实现一个功能,即客户端根据服务器端的指令弹出提示窗口。这个功能在很多应用场景下都十分有用,例如实时通知、错误报告或者用户交互。我们将重点讲解其中涉及到的关键技术和框架...
编写一个客户端程序,一个服务器程序。服务器先开启,客户端登录,在登录时将自己在聊天是的监听端口发送给服务器,服务器保存该客户端的监听端口及ip地址。...此时客户端弹出聊天界面即可与好友聊天。
在网络安全领域,证书是保障通信安全的关键元素,主要用于身份验证和数据加密。本文将深入探讨“自签署根证书”、“服务器证书”以及“客户端证书”的概念、用途和操作流程。 首先,我们来看“自签署根证书”。根...
Labview TCP服务器对多客户端程序是一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)开发的交互式应用程序,它展示了如何构建一个TCP服务器来处理多个同时连接的客户端。LabVIEW是美国国家...
在本文中,我们将深入探讨如何使用Qt框架实现一个基于客户端/服务器端的登录验证系统,其中数据传输使用MD5加密,以及与MySQL数据库的交互。首先,我们要理解C/S架构,即客户端-服务器架构,它是分布式应用的基础,...
客户端可能还需要实现身份验证、加密通信等功能以保证安全。 其次,服务器端的设计更为复杂,它需要管理多个连接的客户端,同时处理来自它们的并发请求。服务器通常会有一个监听线程,等待新的客户端连接。一旦连接...
WebSocket服务器的主要任务是接收来自客户端的连接请求,验证握手过程,维持连接状态,并处理从客户端接收到的数据,同时将响应发送回客户端。 - **Websocket.sln**: 这是Visual Studio的解决方案文件,包含了项目...
提供的服务器端源代码是实现OTA服务的关键部分,它负责处理客户端的请求,验证设备身份,分发固件包,记录更新日志等。理解并能修改这些源代码可以帮助开发者定制化自己的OTA服务。 5. **客户端源码**: 客户端源...
在本文中,我们将深入探讨如何使用Delphi编程语言来实现QQ弹出窗口的功能。Delphi是一种基于Object Pascal的集成开发环境(IDE),它提供了一套强大的工具和组件库,使得开发者能够快速创建Windows应用程序。 首先...
8. **数据传递**:如果需要在弹出窗口中展示从服务器获取的数据,可以将数据作为JSON返回,并在客户端使用JavaScript解析并填充到模态窗口中相应的元素。 9. **验证与提交**:在弹出窗口中进行表单输入时,可以利用...
FTP服务器的核心职责是接收并响应来自客户端的FTP命令,如LIST(列出目录内容)、RETR(下载文件)和USER/PASS(身份验证)。在C#中,可以使用System.Net.FtpServer库来实现这些功能。首先,我们需要创建一个自定义...
它提供了完整的堆栈实现,包括身份验证、加密、数据模型和信息模型的定义,以及客户端和服务器之间的通信协议。开发者可以利用这个库轻松地在自己的应用程序中集成OPC UA功能。 3. **服务器和客户端**: 在OPC UA中...
客户端连接不上服务器 (分客户端和服务器问题 )
在IT行业中,弹出层登录窗口是常见的用户体验设计,它允许用户在不离开当前页面的情况下进行身份验证。本文将深入探讨“弹出层登录窗口带有ajax验证登录”的实现及其相关技术。 首先,让我们理解弹出层(Popup ...
- **身份验证与安全**:为了确保用户安全,客户端可能需要实现身份验证机制,如用户名/密码验证,或者使用更安全的OAuth、JWT等方案。 3. **通信机制**: - **TCP/IP**:IM系统通常基于TCP协议,因为TCP保证了...
用户在授权服务器上进行身份验证,然后根据用户的授权决定是否向客户端发放访问令牌。 **资源服务器(OAuth Resource Server)** 资源服务器是存储和提供受保护资源的服务器,它接收携带访问令牌的请求,并验证令牌...
"TCP服务器端+客户端测试工具"是用于验证和调试TCP通信的一种实用软件,它可以帮助开发者和网络管理员检查TCP连接的正确性,确保数据的完整传输。 首先,我们要理解TCP服务器端的角色。服务器端通常是指运行在特定...
在QT网络编程中,服务器往往需要和多个客户端保持连接,因此,我在熟悉多线程编程过程中,在TCP服务每接收到一个客户端连接请求,就新建一个线程。客户端也是在新建的线程中维护的。 程序的思路如下: 程序使用了非...
TCP服务器端和客户端之间的收发测试是理解TCP通信机制的基础实践。以下将详细介绍TCP服务器端和客户端的基本概念、工作原理以及如何进行收发测试。 TCP服务器端: 1. 服务器端首先需要监听特定的端口,等待客户端的...