Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源用户访问控制
来源:互联网 发布:监控工程预算软件 编辑:程序博客网 时间:2024/06/01 10:27
软件版本:
Tomcat 7.0.40
Mysql: 5.1
Host: CentOS 6.3 64bit
使用JDBCRealm (Tomcat 会使用所给的JDBC Connecter 自己去连MySQL 数据库并进行用户验证):
1) 下载MySQL-JDBC connector 如mysql-connector-java-5.1.24-bin.jar放到$CATALINA_HOME/lib目录下;
2) 连上MySQL 创建数据库(比如数据库名字叫DBName),在此库里面创建2个表(users表和roles表),表结构如下:
CREATE TABLE `roles` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Role` varchar(50) DEFAULT NULL,
`Username` varchar(50) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ;
CREATE TABLE `users` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Username` varchar(50) NOT NULL DEFAULT '',
`Password` varchar(50) DEFAULT '',
`Email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ;
INSERT INTO `users` VALUES (1,'root','password',NULL);
INSERT INTO `roles` VALUES (1,'rootgrp','root');
表示root用户在rootgrp组里。
3)配置Tomcat $CATALINA_HOME/conf/server.xml
比如在Engine Section下增加:
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" <!-- 使用Tomcat 新的ConnectionPool-->
connectionURL="jdbc:mysql://localhost:3306/DBName?user=root&password=password"
userTable="users"
userNameCol="username"
userCredCol="password"
userRoleTable="roles"
roleNameCol="role"/>
注意: Tomcat7默认的server.xml里面在Engine里面也有一段Realm配置代码,如下面所示, 此处需要注释掉它,否则会出问题。
<!-- <Realm className="org.apache.catalina.realm.LockOutRealm"> -->
<!--
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
-->
4)在你应用包的WEB-INF/web.xml里增加如下,做资源访问限制,否则上面配置不起作用,如果想让访问整个site都起作用,在webapps/ROOT/WEB-INF/web.xml里增加以下内容。
<web-app .........>
..................
<security-constraint>
<web-resource-collection>
<web-resource-name>web pages</web-resource-name>
<url-pattern>/*</url-pattern> <!-- 限制整个节点 只有rootgrp的人才能访问-->
</web-resource-collection>
<auth-constraint>
<role-name>rootgrp</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Application</realm-name>
</login-config>
<security-role>
<description>
The role that is required to access the pages of this website
</description>
<role-name>rootgrp</role-name>
</security-role>
.............
</web-app>
重启即可。
如果想用DataSourceRealm去做访问控制认证,重复以上步骤,但唯一需要改动的是将第3)步替换为下面的3A)步骤,
3A)在$CATALINA_HOME/conf/server.xml文件中,在<GlobalNamingResources>一节下增加一个DataSource资源如下:
<GlobalNamingResources>
<Resource name="jdbc/DBName" auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" <!-- 使用Tomcat 新的ConnectionPool-->
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/DBName" />
</GlobalNamingResources>
然后再在此server.xml里面的如<Engine>Section下面增加以下内容
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/DBName"
userTable="users"
userNameCol="Username"
userCredCol="Password"
userRoleTable="roles"
roleNameCol="Role"/>
同样的,需要把Server.xml里面默认的那个Realm给注释掉。
重启Tomcat即可。
- Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源用户访问控制
- Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源用户访问控制
- CloudStack基于项目的资源访问控制
- 【基于角色的访问控制RBAC】权限与资源树
- 一种基于角色的用户访问控制方法
- http服务--基于用户的访问控制实现
- jdbcrealm的使用
- java-实现资源访问的超时和并发控制
- 基于规则的访问控制
- 基于角色的访问控制
- 基于角色的访问控制
- 基于角色的访问控制
- 基于用户组织角色权限和资源的五要素
- 基于用户组织角色权限和资源的五要素
- WebSocket 基于 Tomcat7.0.54 的server部署 与client访问
- Linux管理用户帐户和控制对文件的访问
- mysql的用户管理和权限管理(访问控制)
- Tomcat中JDBCRealm的配置
- css文件链接html的三种方式
- RGB色彩模式
- 移动查找&发现:googlebaidu获益移动查找大盘利好
- Linux Commands Cheat Sheet
- 2011华为编程大赛第二道题
- Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源用户访问控制
- 【define宏定义和const常量定义之间的区别】
- socket.error C2011: “sockaddr”: “struct”类型重定义
- 数据库学习
- MATLAB实现FFT
- iOS:[译]Xcode Concepts--概念Target、Project、Build Setting、Workspace、Scheme
- 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析
- 使用信号量和关键区来实现生产者消费者
- JDK中rt.jar、tools.jar和dt.jar作用