JSP页面往往在容器提供的一个运行时环境中执行。相应地,所有鉴别和访问控制都可以由容器处理,从而将应用开发人员解脱出来,而不必完成诸如实现适当安全控制等重要任务。安全性很难把握,因此作为起步,使用容器提供的机制往往是上选之策,这些机制已经经受了时间的考验,本文以Tomcat为例,简单的配置使用容器提供的鉴别功能。相关代码见附件。
一:首先创建项目
项目目录结构
其中admin目录为需要进行访问控制的,login.html为登陆页面。login登陆界面使用表单向容器提供鉴别信息。表单内容如下:
<form name="logonForm" method="post" action="j_security_check">
<table>
<tr>
<td>User Name:</td>
<td><input type="text" name="j_username"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="j_password"></td>
</tr>
<tr colspan="2">
<td><input type="submit" value="login"></td>
</tr>
</table>
</form>
其中action为j_security_check
,用户名为j_username
,密码为j_password
二:设置web.xml
在web.xml文件添加以下配置信息
<security-constraint>
<web-resource-collection>
<web-resource-name>adminPage</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>admin</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/login-error.html</form-error-page>
</form-login-config>
</login-config>
<security-constraint>元素包含一个<web-resource-collection>元素,它定义了要保护的资源,还包含一个<auth-constraint>,这个元素包含一个角色名,定义了谁有权限访问这个资源。<security-constraint>使用url-patten来定于需要保护的URL地址。<security-role>元素定义了必须映射至容器安全域中的用户的所有角色名。<login-config>元素定义了需要使用的鉴别方式,以及与鉴别相关的信息。servlet容器支持4种鉴别方式,分别是BASIC,DIGEST,FORM,CLIENT-CERT,本文以最常见的FORM表单鉴别为例,其他鉴别方式请查看相应文档。<form-login-config>中指定了登陆页面和密码错误重定向到的页面。
三:配置安全域
安全域是一个存储用户名,密码和角色名的数据库。servlet标准中不包含对安全域配置的描述,所以只能使用与容器相关的配置来指定安全域。
在Tomcat中,可以指定多种安全域,包括JDBCRealm,DataSourceRealm,JNDIRealm,MemoryRealm,JAASRealm。本文配置JDBCRealm安全域使用mysql数据库存储用户信息。关于其他安全域的配置,请查看Tomcat文档
。
安全域配置信息可以放置在Tomcat配置文件<Engine>或<Host>元素中作为全局安全域,供多个应用程序使用。也可以放置在WEB-INF/context.xml文件<Context>元素中,供当前应用程序使用。context.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="hotweb">
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/hotweb"
connectionName="root"
connectionPassword="root"
userTable="users"
userNameCol="user_name"
userCredCol="user_pass"
userRoleTable="user_roles"
roleNameCol="role_name" />
</Context>
<Realm>元素配置为使用mysql数据库保存鉴别信息。mysql数据库表结构为:
create table users (
user_name varchar(15) not null primary key,
user_pass varchar(15) not null
);
create table user_roles (
user_name varchar(15) not null,
role_name varchar(15) not null,
primary key (user_name, role_name)
);
userTable元素指定用户表,userNameCol和userCredCol分别指定用户名和密码的列名。userRoleTable指定角色表,roleNameCol指定角色名列名。注意userNameCol指定的用户列名在两个表中必须相同。插入测试数据
insert into users values('admin','admin');
insert into user_roles values('admin','admin');
启动浏览器访问http://localhost:8080/hotweb/admin/security.html,重定向到登陆页面,使用admin,admin登陆。登陆错误则重定向到login-error.html。相关代码见附件。
- 大小: 9.3 KB
分享到:
相关推荐
在Windows环境中使用Tomcat,你可能需要关注以下知识点: 1. 环境变量设置:确保`JAVA_HOME`指向正确的Java JDK安装路径,Tomcat需要JDK来运行。 2. 配置端口:在`server.xml`中修改HTTP和AJP监听端口,避免与其他...
在 Docker 容器中部署 Tomcat 时,可能会遇到中文乱码的问题,这是由于 Docker 容器的 locale 设置导致的。在本文中,我们将介绍如何解决这个问题。 什么是 locale? locale 是操作系统中用于描述语言环境的设置,...
**正文** Tomcat容器,全称为Apache Tomcat,是一款开源且免费的Java Web应用服务器,由Apache软件基金会的Jakarta项目...无论是在学习Java Web开发还是在构建实际项目中,掌握Tomcat的使用和配置都是至关重要的技能。
标题中的“tomcat嵌入OSGI容器”是指在Apache Tomcat服务器中集成OSGI(Open Service Gateway Initiative)框架,使得Tomcat能够支持模块化的应用程序部署和管理。OSGI是一种Java平台上的服务导向架构,它允许动态地...
本篇将详细介绍Tomcat的容器机制及其在Tomcat中的角色。 一、容器的概念 在Tomcat中,容器是一个抽象的概念,它负责管理一组相关的组件,如Servlets、 Filters 和Listeners。容器可以嵌套,形成一个层次结构,每个...
Linux版的Tomcat 7意味着它可以无缝地在Linux操作系统上运行,这通常与服务器环境相匹配,提供稳定和高性能的服务。 Tomcat 8是目前较为流行的一个版本,它进一步提升了性能,并增加了对Java EE 7规范的支持,包括...
【标题】:Web容器Tomcat 7.0详解 【描述】:Apache Tomcat是一款开源且免费的Web应用服务器,特别适用于运行Java Servlet和JavaServer Pages(JSP)技术。Tomcat 7.0版本是它的一个重要里程碑,提供了一系列增强...
Apache Tomcat是一款广泛使用的开源Java Servlet容器,尤其在开发和部署Web应用程序时扮演着重要角色。Tomcat 6.0.20是该系列的一个特定版本,它在当时提供了稳定且高效的服务。在这个版本中,用户可以体验到对...
本案例主要探讨了如何在Tomcat7容器中,基于Java7环境,利用Redis来实现在多个服务器间Session数据的共享。这有助于提升应用的可扩展性和高可用性。 首先,我们来理解一下Session的基本概念。Session是Web服务器为...
本文将深入探讨如何在Spring Boot项目中从Tomcat切换到Jetty容器,以及这两个容器的特点和使用场景。 首先,Tomcat是Apache软件基金会的开源项目,是Java Servlet和JavaServer Pages(JSP)的标准实现。它以其轻量...
idea打war包并发布到docker的tomcat容器中,包括打war包步骤和如何将打好的war包发布到docker的tomcat容器中的详细步骤,自己实操后进行的总结。后面还会将如何部署docker进行总结,上传。
Tomcat使用了JServ的一些代码,特别是Apache接口,但在功能和设计上有着本质的区别。 4. **配置文件详解**:`server.xml`是Tomcat的主要配置文件,其中包含了关于服务器端点、连接器、容器和其他关键设置的信息。...
在这个版本(6.0.13)中,它提供了对Servlet 2.5和JSP 2.1规范的支持。 首先,我们来深入了解一下Tomcat 6.0的主要特点和功能: 1. **Servlet容器**:Tomcat作为Servlet容器,负责接收HTTP请求,解析请求,并调用...
标题中的 "springboot入门实例可运行在tomcat6容器" 暗示了这个压缩包包含了一个使用 SpringBoot 构建的应用,该应用设计为可以在 Apache Tomcat 6 服务器上运行。Tomcat 6 是一个广泛使用的开源 Java Servlet 容器...
在本文中,我们将详细介绍如何创建 Docker 容器,配置容器 IP 桥接网络,并在容器内安装 Tomcat 服务。 一、 Docker 概述 Docker 是一种轻量级的操作系统虚拟化解决方案,可以将应用程序和其依赖项打包成一个容器...
Pipeline可以理解为一个管道系统,每个Container都有自己的Pipeline,它们负责在容器之间传递和处理请求。 Valve是Pipeline上的关键元素,类似于管道上的阀门,可以控制请求的流动和处理过程。每个Valve都可以对...
总结,虽然SpringBoot通常建议使用内嵌的Servlet容器,但通过特定的配置,我们仍能在Tomcat6这样的较旧容器中运行SpringBoot应用。这个示例展示了如何解决版本兼容性和配置问题,帮助初学者理解SpringBoot与传统...
在提供的文档`tomcat的使用方法(免费带例子).doc`中,你会发现更具体的步骤和示例,包括如何创建一个简单的"Hello, World!" Web应用,以及如何在Tomcat上部署和运行。 总之,掌握Tomcat的使用对于Java Web开发者至...
干净tomcat6 , 方便使用
Tomcat 7.0提供了用户认证和授权机制,可以通过`conf/tomcat-users.xml`配置用户角色和权限,以及在`web.xml`中定义安全约束。 七、性能优化 1. JMX(Java Management Extensions):允许监控和管理Tomcat实例,...