我们访问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的
分享到:
相关推荐
总结来说,WCF身份验证通过检查客户端IP是一种简化的方法,适用于对安全性要求不是特别高但又希望控制访问来源的场景。它提供了灵活性和便捷性,但也有其局限性,需要根据实际需求和环境进行权衡。
在网络安全领域,证书是保障通信安全的关键元素,主要用于身份验证和数据加密。本文将深入探讨“自签署根证书”、“服务器证书”以及“客户端证书”的概念、用途和操作流程。 首先,我们来看“自签署根证书”。根...
它分为客户端和服务器两个部分,各自承担不同的职责。FTP客户端是用户用来连接到FTP服务器并执行文件操作的软件,如上传、下载、删除等。而FTP服务器则是接收客户端请求,处理文件操作,并向客户端返回结果的服务端...
WebSocket服务器的主要任务是接收来自客户端的连接请求,验证握手过程,维持连接状态,并处理从客户端接收到的数据,同时将响应发送回客户端。 - **Websocket.sln**: 这是Visual Studio的解决方案文件,包含了项目...
8. **数据验证**: 在Demo中提到了“验证”功能,这可能包括身份验证(如OAuth、JWT)、数据有效性验证(如JSON Schema)等,确保客户端发送的数据符合服务器的预期。 9. **错误处理**: 客户端需要处理各种可能出现...
总结来说,ASP.NET中实现类似MSN的弹出提示窗口,需要结合服务器端和客户端的技术,利用特定的DLL或自定义的JavaScript库,以提供用户友好的交互体验。这个过程涉及编程、UI设计和网络通信等多个方面,对于提升网站...
如果用户未登录,客户端会重定向用户至CAS服务器进行身份验证;验证成功后,用户会被返回到原始请求的应用系统,并自动登录。 3. **部署与配置**:部署CAS服务器涉及安装和配置服务器环境,包括设置Tomcat或Jetty等...
FTP服务器的核心职责是接收并响应来自客户端的FTP命令,如LIST(列出目录内容)、RETR(下载文件)和USER/PASS(身份验证)。在C#中,可以使用System.Net.FtpServer库来实现这些功能。首先,我们需要创建一个自定义...
它提供了完整的堆栈实现,包括身份验证、加密、数据模型和信息模型的定义,以及客户端和服务器之间的通信协议。开发者可以利用这个库轻松地在自己的应用程序中集成OPC UA功能。 3. **服务器和客户端**: 在OPC UA中...
客户端连接不上服务器 (分客户端和服务器问题 )
2. **命令交互**:客户端发送FTP命令,如`USER`、`PASS`进行身份验证,`LIST`获取目录信息,`RETR`下载文件,`STOR`上传文件等。 3. **数据通道管理**:客户端需要管理数据连接,这可能是通过控制连接的命令设置的,...
用户在授权服务器上进行身份验证,然后根据用户的授权决定是否向客户端发放访问令牌。 **资源服务器(OAuth Resource Server)** 资源服务器是存储和提供受保护资源的服务器,它接收携带访问令牌的请求,并验证令牌...
无锡监狱项目的服务器客户端通信涉及到四个主要部分:轮巡、报警、预案权限管理和新增窗口状态。这些功能都是通过服务器和客户端之间的交互实现的,其中轮巡功能的实现尤为关键。 【轮巡功能详解】 1. **轮巡需求*...
在IT领域,网络通信是核心部分之一,而“echo服务器和客户端程序”是学习网络编程时常见的基础示例。这个概念通常用于展示TCP或UDP协议的基本工作原理,以及如何实现客户端与服务器之间的数据交换。 首先,我们要...
有些服务器还支持匿名访问,允许用户无需身份验证即可浏览和下载公开文件。 2. **控制连接**:当客户端与服务器建立连接时,首先建立的是控制连接。这个连接用于发送命令(如登录、列出目录、上传或下载文件)并...
在QT网络编程中,服务器往往需要和多个客户端保持连接,因此,我在熟悉多线程编程过程中,在TCP服务每接收到一个客户端连接请求,就新建一个线程。客户端也是在新建的线程中维护的。 程序的思路如下: 程序使用了非...
在本文中,我们将深入探讨如何使用C#的Socket编程来实现一个简单的聊天应用程序,其中包含服务器和客户端的交互。...通过学习和实践这些概念,你可以创建出自己的网络应用程序,实现服务器与客户端之间的高效通信。
### MQTT服务器和客户端的选型 #### MQTT简介与特点 MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级消息传输协议,适用于低带宽、高延迟或不可靠的网络环境。它由IBM在1999年设计并...
这是一个基于VC++开发的局域网聊天系统,涵盖了多个关键功能点,包括服务器与客户端通信、文件传输、系统托盘操作以及窗口抖动通知。下面将详细解释这些知识点。 1. **VC++**:VC++是Microsoft开发的一种编程环境,...
2. **FTP命令发送**:客户端根据用户的需求,发送各种FTP命令给服务器,如登录、改变目录、列出文件、上传或下载文件。 3. **数据传输**:FTP使用控制连接(用于命令交换)和数据连接(用于文件传输)。客户端需要...