1、概述
在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD。那么如何执行验证方式更好呢?实际上,有很多方式来实现。
下面将讨论在Tomcat中实现基本的(BASIC)和基于表单的(FORM-BASED)验证方式。它通过server.xml和web.xml文件提供基本的和基于表单的验证。
对于采用基于表单的(FORM-BASED)验证方式,只是要求在登录的JSP页面中的j_security_check 表单(for FORM-based) 需要两个参数:j_username和j_password。
对于用户的登录的名称和密码在Tomcat中可以以两种形式来存放,一是采用server.xml;另一种也可以采用用户自己的数据库表来存储。
2、设计系统中的各种人员的角色
(1)设计思想
l 统一用户管理,实现基于角色、粗粒度(基于URL)和细粒度(基于应用组件的方法调用)的访问策略管理体系,
l 基于分级角色的权限管理、统一证书管理和统一资源管理
(2)设计目标
一般采用数据库表(对于复杂的也可以采用LDAP)记录每个系统用户的帐号信息、功能权限和数据权限信息,这样能够增加用户管理和权限设置的灵活性,同时也避免多个用户共用一个帐号的情况
(3)优点
l 从用户角度来看,登录所有应用系统都使用唯一的用户名和口令(数字证书)同时在访问系统时,也只需要登录一次(单点登录全网漫游---SSO(Single Sign-On))。
l 从管理者角度来看,提供了统一、集中、有效的用户管理。
七、在Tomcat中采用基于表单的安全验证
1、概述
(1)基于表单的验证
基于From的安全认证可以通过Tomcat Server对Form表单中所提供的数据进行验证,基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面。这种验证方法与基本HTTP的验证方法的唯一区别就在于它可以根据用户的要求制定登陆和出错页面。
通过拦截并检查用户的请求,检查用户是否在应用系统中已经创建好login session。如果没有,则将用户转向到认证服务的登录页面。但在Tomcat中的基于表单的验证凭证不被保护并以纯文本发送。
(2)在Tomcat 中的实现
在Tomcat中,用户、用户组和角色都是在XML配置文件(C:\jakarta-tomcat-5.0.19\conf\tomcat-users.xml)中指定的,我们只需要提供一个登陆页面,包含一个名为j_security_check的Form表单,一个名为j_username的TextBox和一个名为j_password的PasswordBox,然后在/WEB-INF/web.xml中配置即可使用Tomcat默认的JAAS身份验证。
使用JAAS验证的好处是,验证逻辑从页面中分离,对页面的限制访问是通过/WEB-INF/web.xml中的配置指定的,无需自定义过滤器。
(3)为了实现Web应用程序的安全,Tomcat Web容器执行下面的步骤:
l 在受保护的Web资源被访问时,判断用户是否被认证。
l 如果用户没有得到认证,则通过重定向到部署描述符中定义的注册页面,要求用户提供安全信任状。
l 根据为该容器配置的安全领域,确认用户的信任状有效。
l 判断得到认证的用户是否被授权访问部署描述符(web.xml)中定义的Web资源。
2、设计步骤
(1)编写登录页面和错误处理页面:请见FormSafeWebApp 程序中的页面
(2)登录的页面文件的内容如下
基于FORM的用户认证要求你返回一个包括用户名和密码的HTML表单,这个表单相对应与用户名和密码的元素必须是j_username和j_password,并且表单的action描述必须为j_security_check(其实是一个Servlet)。该表单的具体操作以及j_username和j_password名字在Servlet中定义。当这个表单到达服务器的时候,由内部的Tomcat Server安全区对它进行确认。
包括这个表单的资源可以是一个HTML页面、一个JSP页面或者一个Servlet。你可以在<form-login-page>元素中定义。基于表单的认证能够使开发人员定制认证的用户界面。在web.xml的login-config标签项目定义了认证机制的类型、登录的URI和错误页面。
下面为该页面的内容:
<%@ page contentType="text/html; charset=GBK"%>
<!-- 注意:action应该为j_security_check -->
<html>
<head>
<title>在Tomcat 中采用Form 验证方式实现的安全Web应用程序的登录页</title>
</head>
<body bgcolor="#ffffff">
<form method="post" name="Login" action="j_security_check">
<table width="500" border="1" align="center">
<tr>
<!-- 注意:用户名称和密码的输入应该为j_username 和j_password -->
<td colspan="2">
<div align="center">
<strong>在Tomcat中采用</strong><strong>基于表单的安全验证的登录表单 </strong>
</div>
</td>
</tr>
<tr>
<td width="224">
<div align="right">
用户名称:
</div>
</td>
<td width="260">
<input type="text" name="j_username">
</td>
</tr>
<tr>
<td>
<div align="right">
密码:
</div>
</td>
<td>
<input type="password" name="j_password">
</td>
</tr>
<tr>
<td>
<div align="right">
<input type="submit" name="Submit" value="提交">
</div>
</td>
<td>
<input type="reset" name="Submit2" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
(3)修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
定义本Web应用的默认启始页面
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Security is active on entire directory -->
<security-constraint>
<display-name>
Tomcat Server Form Security Constraint
</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<description>A Page of Login Success</description>
<url-pattern>/ProtectedDirOne/index.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
指定Form验证的用户的角色名称
<!-- Anyone with one of the listed roles may access this area -->
<role-name>admin</role-name>
</auth-constraint>
指定验证的方式为Form
</security-constraint>
<!-- Login configuration uses form-based authentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>
Tomcat Server Configuration Form-Based Authentication Area
</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/Error.htm</form-error-page>
</form-login-config>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
关联Tomcat中的admin的角色
<description>The role is Administration</description>
<role-name>admin</role-name>
</security-role>
</web-app>
(4)在C:\jakarta-tomcat-5.0.19\conf\tomcat-users.xml文件中配置admin的角色以及与该 admin角色相匹配的用户名称和密码
(5)执行该页面
在浏览器中直接输入受保护的页面的URL地址:
http://127.0.0.1:8080/FormSafeWebApp/ProtectedDirOne/,将出现要求登录的页面。
在表单中输入用户名称为admin(前面在tomcat-users.xml文件中所设置的某一用户名称),密码为12345678。然后点击“提交”,将出现如下页面
如果用户名称或者密码输入不正确,将出现如下的页面也就是错误页面
(6)在页面中获得当前登录成功后的用户名称和实体名称
利用request对象中的getRemoteUser()方法获得当前登录成功后的用户名称和利用getUserPrincipal()方法获得当前登录成功后的实体名称。
分享到:
相关推荐
Tomcat8是Tomcat服务器的一个主要版本,提供了许多性能改进和新功能。 在安装和运行Tomcat8之前,你需要确保系统中已经安装了Java Development Kit (JDK)。因为Tomcat需要JRE(Java Runtime Environment)环境来...
在IT领域,Web服务器和Tomcat服务器是两个关键的概念,它们在构建和部署Web应用程序时起着至关重要的作用。Web服务器主要处理HTTP协议,而Tomcat是一个应用服务器,特别是用于运行Java Servlet和JavaServer Pages...
tomcat8 web服务器!!!!
6. **安全性**:Tomcat提供了多种安全特性,如角色基础的访问控制、SSL/TLS支持以及过滤器,以保护Web应用免受攻击。 7. **性能优化**:Tomcat可以通过调整各种配置参数进行性能优化,例如最大线程数、连接超时、...
在【压缩包子文件的文件名称列表】中的"apache-tomcat-6.0.20.exe"是Tomcat 6.0.20的安装程序,用户可以通过这个可执行文件在Windows系统上安装和配置Tomcat服务器。安装过程中,用户可以选择安装路径,配置端口号,...
Tomcat是稳固的独立的Web服务器与Servlet Container,不过,其Web服务器的功能则不如许多更健全的Web服务器完整,如Apache Web服务器(举例来说,Tomcat没有大量的选择性模块)。不过,Tomcat是自由的开源软件,而且...
该文档适用于4.x、5.x、6.x版本的Tomcat服务器,涉及的用户包括服务器系统管理员、应用管理员和网络安全管理员。 文档首先明确了其目的,即为Tomcat WEB服务器提供安全配置的标准,以指导系统管理人员进行安全配置...
"IDEA配置Tomcat部署Web应用" Томcat是Apache软件基金会下的一...IDEA提供了一个强大的平台来配置Tomcat服务器和部署Web应用程序,通过正确的配置和部署方式,可以快速和方便地部署Web应用程序到Tomcat服务器上。
JerryMouse是一个基于Java开发的国产开源Web服务器,它的设计灵感来源于知名的Apache Tomcat服务器。Tomcat作为Java Servlet和JavaServer Pages(JSP)技术的标准实现,是许多开发者进行Java Web应用部署的首选。而...
tomcat-Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,版本6
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台...
本文将详细解析如何配置Tomcat作为Web服务器环境,以便开发者能够顺利地部署和运行自己的Web应用。 首先,我们需要了解Tomcat的基本结构。Tomcat包含了几个关键的目录,如`bin`(存放可执行文件)、`conf`(存储...
Tomcat 是一个流行的开源 Web 服务器和 Servlet 容器,广泛应用于 Web 开发和部署中。然而,在使用 Tomcat 的过程中,开发者经常会遇到一些常见的问题,本文将列举一些常见的问题和解决方法,旨在帮助开发者更好地...
【标题】:“Web服务器 Tomcat 6.0” 【描述】:“Tomcat 6.0 是一款广泛应用的开源Web服务器和Servlet容器,以其轻量级、高效和稳定性著称。它实现了Java Servlet和JavaServer Pages(JSP)技术,是Java EE应用...
内嵌式Tomcat是开发Java Web应用时常用的一种方式,它允许我们将Tomcat服务器与应用程序打包在一起,无需单独部署到外部服务器。这种方式尤其适合于快速开发、测试和演示,因为它简化了部署流程,并且便于自动化构建...
Tomcat7服务器web开发 Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
Tomcat-Web服务器安全配置基线.doc
Linux 下使用 Tomcat 发布 Web 项目 本文将详细介绍如何在 Linux 系统...使用 Tomcat 在 Linux 系统下发布 Web 项目需要了解 Linux 系统的基本命令和 Tomcat 的配置文件,同时需要了解权限机制和常见的问题解决方法。