`
tenderuser
  • 浏览: 59184 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在tomcat中使用Realm

    博客分类:
  • java
阅读更多

1、配置JDBC Realm,
在tomcat的server.xml文件中,配置自己的JDBC Realm,tomcat 提供了六种Realm实现,这里使用JDBC Realm 演示。
 <Realm  className="org.apache.catalina.realm.JDBCRealm"
             driverName="org.gjt.mm.mysql.Driver"
          connectionURL="jdbc:mysql://localhost/std"
         connectionName="root" connectionPassword="root"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="user_role" />

 
Realm标签可以放在Engine标签中,这是该Realm会被所有应用共享。 放在Host中,会被该Host下的应用程序共享。放在Context中,则只有对应的应用程序能被访问。
引用

className :tomcat 的JDBCRealm实现类,
driverName: JDBC Driver (JDBC Driver jar 需要放在Tomcat's common/lib 目录下)
connectionURL: 数据库连接地址,表名为std
connectionName:数据库登录用户
connectionPassword:数据库登录密码
userTable: 用户表的表名
userNameCol:用户表中用户列的列名
userCredCol:用户表中密码列的列名
userRoleTable:角色表的表名
roleNameCol: 角色表中的角色列


对于上面配置的Realm,对应的数据库表如下:
	CREATE TABLE `users` (
	`user_name` varchar(20) NOT NULL,
	`user_pass` varchar(20) DEFAULT NULL
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;

	CREATE TABLE `user_roles` (
	`user_name` varchar(20) NOT NULL,
	`user_role` varchar(20) NOT NULL,
	PRIMARY KEY (`user_name`,`user_role`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、配置认证资源
配置角色,在web.xml中,使用security-role标签来定义角色,如下所示
	<security-role>
		<role-name>ADMIN</role-name>
	</security-role>
	<security-role>
		<role-name>USER</role-name>
	</security-role>

配置资源约束,在web.xml中,使用security-constraint标签定义,如下所示,指定了对资源/admin/* 的访问需要认证,只有角色是ADMIN的用户才能访问
	
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>adminDir</web-resource-name>
			<url-pattern>/admin/*</url-pattern>
			<http-method>GET</http-method>
			<http-method>POST</http-method>
		</web-resource-collection>
		<auth-constraint>
			<role-name>ADMIN</role-name>
		</auth-constraint>
	</security-constraint>

配置认证方式 ,在web.xml中使用login-config标签配置认证方式。如下所示,当访问需要认证的资源时,servlet会检查对应的请求是否需要认证,如果不需要,则允许访问,如果没有认证通过,则会转到/admin/login.jsp页面定义的认证入口,填写认证信息。
当认证失败时,会转到/admin/error.jsp页面中。
	
	<login-config>
		<auth-method>FORM</auth-method>
		<form-login-config>
			<form-login-page>/admin/login.jsp</form-login-page>
			<form-error-page>/admin/error.jsp</form-error-page>
		</form-login-config>
	</login-config>

对于auth-method,可以指定认证的方式为,BASIC、DIGEST、CLIENT-CERT、FORM 。其中FORM允许自定义登录界面,对于FORM自定义的登录表单,action、用户名、密码都要用统一的名字:
	<form action="j_security_check" method="post">
		<table>
			<tr><td>user :</td><td><input name="j_username" type="text"></td></tr>
			<tr><td>pass :</td><td><input name="j_password" type="password"></td></tr>
			<tr><td><input type="submit"/></td></tr>
		</table>
	</form>


通过以上的配置,Request中也就保存了用户的认证信息了,在系统的其他地方,可以通过Request.isUserInRole方法,判断用户的角色。。。。





分享到:
评论
2 楼 zhou363667565 2012-01-10  
写的很不错。很详细。
1 楼 zhuchao_ko 2011-12-19  

相关推荐

    Tomcat6.0 web服务器

    接下来,Tomcat 将在内存中建立一个context,就好象在server.xml文件里建立一样。当然,其他必需的内容,将从server.xml中的 DefaultContext获得。 部署web应用的另一种方式是写一个Context XML片断文件,然后把该...

    Tomcat压缩包下载资源

    Tomcat压缩包 资源下载,tomcat自带了一套管理程序...无论是basic还是digest,设置过程基本一致,在conf/server.xml中添加realm数据源,在{project}/WEB-INF/web.xml中添加 security-constraint 和 login-config属性。

    tomcat同时使用http和https访问的配置方法

    针对一个tomcat中有的项目需要使用ssl加密有些可以直接访问的情况,可通过修改tomcat/conf下的server.xml来实现。具体配置可参考下面这段代码,注意”Catalina1″&gt;这个标签中的配置。 &lt;?xml version='1.0' ...

    apache-tomcat-5.5.17-src

    │ ch17.rar 将Tomcat嵌入到Java中(实例演示) │ ch19(security).rar Tomcat安全(实例演示) │ ch24.rar IIS与Tomcat集成(实例演示) │ ├─ch20 JMeter压力测试实例(实例演示) │ classes12.jar ...

    scrypt-realm:Apache Tomcat 7 的安全领域

    Scrypt Tomcat 安全领域 ... ##How 在您的项目中使用: 该 jar 可在我们的 maven 存储库中找到 &lt; id&gt;dextra-public-release &lt; url&gt;https://dextranet.dextra.com.br/nexus/content/repositories/dextra-publi

    Tomcat容器管理安全的验证方式汇总

    当访问服务器中受保护的资源时,容器管理的验证方法可以控制确认用户身份的...当web.xml文件中的auth-method元素设置为BASIC时,表明应用使用的是基本验证,每次浏览器请求受保护的Web应用资源时,Tomcat都会使用HTTP基

    mydsrealm:用于tomcat6和tomcat9的改进的DataSourceRealm

    Realm className = " org.tastefuljava.tomcat.MyDataSourceRealm " dataSourceName = " jdbc/lagalerie " debug = " 99 " localDataSource = " true " digest = " md5 " digestEncoding = " UTF-8 " ...

    how-tomcat-works

    16.2 tomcat中的shutdown hook 131 第17章 启动tomcat 133 17.1 概述 133 17.2 Catalina类 133 17.2.1 start方法 134 17.2.2 stop方法 135 17.2.3 启动Digester 135 17.2.4 关闭Digester 135 17.3 Bootstrap类 136 ...

    QuickPlace Realm class for Tomcat-开源

    用于tomcat的QuickPlace领域认证:这是一个领域类,可以将其配置为基于IBM / Lotus QuickPlace进行认证,并将在QuickPlace中返回用户ACL级别访问的角色。

    How Tomcat Works: A Guide to Developing Your Own Java Servlet Container

    16.2 tomcat中的shutdown hook 131 第17章 启动tomcat 133 17.1 概述 133 17.2 Catalina类 133 17.2.1 start方法 134 17.2.2 stop方法 135 17.2.3 启动Digester 135 17.2.4 关闭Digester 135 17.3 Bootstrap类 136 ...

    Tomcat实现多域名访问详解

    对于域名解析相信很多小伙伴都了解过,就是我们在万网购买一个域名,比如hpugs.com,然后呢?我们希望域名与我们的服务器绑定,然后通过域名直接访问我们的项目,这就是本篇要和大家一起探讨的问题。下面开始我们的...

    Spring Security 中文教程.pdf

    19.2. 在Spring Security里使用LDAP 19.3. 配置LDAP服务器 19.3.1. 使用嵌入测试服务器 19.3.2. 使用绑定认证 19.3.3. 读取授权 19.4. 实现类 19.4.1. LdapAuthenticator实现 19.4.1.1. 常用功能 ...

    Spring Security-3.0.1中文官方文档(翻译版)

    19.2. 在Spring Security 里使用LDAP 19.3. 配置LDAP 服务器 19.3.1. 使用嵌入测试服务器 19.3.2. 使用绑定认证 19.3.3. 读取授权 19.4. 实现类 19.4.1. LdapAuthenticator 实现 19.4.1.1. 常用功能 ...

    单点登录sso-shiro-cas-maven

    1.首先采用的是查数据库的方式来校验用户身份的,在cas/WEB-INF/deployerConfigContext.xml中第135行构建了这个类型 ``` xml &lt;!-- 设置密码的加密方式,这里使用的是MD5加密 --&gt; class="org.jasig.cas....

    SpringSecurity 3.0.1.RELEASE.CHM

    18.2. 在Spring Security里使用LDAP 18.3. 配置LDAP服务器 18.3.1. 使用嵌入测试服务器 18.3.2. 使用绑定认证 18.3.3. 读取授权 18.4. 实现类 18.4.1. LdapAuthenticator实现 18.4.1.1. 常用功能 18.4.1.2. ...

    wicket-sample:示例 Apache Wicket Web 应用程序,用于使用 Apache Fortress 演示基本的 Java EE 安全性和 RBAC

    要完成本教程,请首先按照本 README 中的步骤进行操作。 接下来是这里的步骤: 先决条件 Java 8++ Apache Maven 3++ Apache Tomcat 8++ 暂存项目源: 一种。 从 Github 下载并解压: wget ...

    Apache Geronimo 2.1_ Quick Reference.pdf

    Replacing the default security realm 197 Summary 197 Chapter 7: CORBA 199 CORBA concepts 199 ORB 199 Naming service 199 Security services 200 Support in Geronimo 200 Exposing EJBs through ...

Global site tag (gtag.js) - Google Analytics