设为首页 收藏本站
查看: 213|回复: 0

[经验分享] Tomcat 配置

[复制链接]

尚未签到

发表于 2017-1-18 06:11:10 | 显示全部楼层 |阅读模式
  JDBCRealm 概述
  JDBCRealm是tomcat 6 对Realm接口的实现,它通过JDBC驱动程序访问关系数据库。它的遍历配置可以适应于您已有的表和列名,只要您的数据库接口符合下列规范:
  1. 必须有一张用户表,包含Realm可以识别的所有合法用户名称的行。 
  用户表必须包含至少两列:
    当用户登录时,Tomcat可以识别用户名。
    当用户登录时,Tomcat可以识别用户密码。
  2. 必须有一张用户角色表,包含关联特殊用户的每种合法角色的行。用户有0个,1个或多个角色都是允许的。
  用户角色表必须包含至少两列: 
     Tomcat可以识别的用户名(和用户表中的相应值一致)。
     用户关联的合法角色名。
  快速入门需要以下步骤设置Tomcat使用JDBCRealm:
  1. 创建以上描述中必须的表和列。
  2. 配置使用Tomcat的用户名和密码,至少需要有只读权限(Tomcat不会修改表中数据)。
  3. 拷贝JDBC驱动程序到$CATALINA_HOME/lib目录。(注意:单纯的放在项目的lib下是不可以的,要放到tomcat的lib目录下)
  4. 在您的$CATALINA_HOME/conf/server.xml文件中设置元素,或者通过jndi方式加载项目,则可以在 $CATALINA_HOME/conf/localhost 下增加 项目.xml,此文件里设置元素
  5. Realm元素属性要配置JDBCRealm,以下是这个实现支持的参数:
  className Realm实现的java全名。在这里必须“org.apache.catalina.realm.JDBCRealm”;
  connectionName 建立JDBC连接的用户名;
  connectionPassword 建立JDBC连接的密码;
  connectionURL 建立JDBC连接的URL;
  digest 使用非明文方式保存用户密码的摘要算法。只能输入java.security.MessageDigest支持的算法名称。如果不指定,密码以明文方式保存;
  driverName 使用的JDBC驱动程序全名。详细信息请查看您使用的JDBC驱动程序;
  roleNameCol 用户角色表中的角色名,包含赋予用户的角色;
  userCredCol 用户表中列名,包含用户的密码(可以是明文也可以是密文);
  userNameCol 用户和用户角色表中的列表,包含了用户名;
  userRoleTable 用户角色表。表中必须有userNameCol和roleNameCol中指定的列;
  userTable 用户表。表中必须有userNameCol列;
  例子:
  Tomcat6.0+ XXX系统
  1. 数据库准备
  数据库里建立2张表或者2个视图也可以。(以下以视图为例)
  用户表:
  create or replace view users as
      select col1  username, col2  password  from table1
  用户角色表:
  create or replace view roles as
   select col1  username, col3   role   from  table1
  2.tomcat采用jndi的方式加载系统,所以在conf\Catalina\localhost下增加一个xml文件,文件内容如下:

<Context path="XXX" reloadable="true" docBase="****">
<Realm className="org.apache.catalina.realm.JDBCRealm"
debug="99" driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@ip:port:sid"
connectionName="test" connectionPassword="test"
userTable="users" userNameCol="username" userCredCol="password"
userRoleTable="roles" roleNameCol="role" />
<Resource ....略.../>
</Context>
  xml解析:
  userTable="users"     用户表:对应数据视图 users
  userNameCol="username"   列名称:对应数据库视图 users的username列
  userCredCol="password"    列名称:对应数据库视图 users的password列
  
userRoleTable="roles"   用户角色表:对应数据库视图 roles
  roleNameCol="role"       列名称:      对应数据库视图 roles的role列
  3. XXX项目的web.xml文件配置

<security-constraint>
<display-name>admin</display-name>
<web-resource-collection>
<web-resource-name>Secure</web-resource-name>
<url-pattern>*.do</url-pattern>     <!--制定应该保护的URL-->
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>                 <!--允许以下角色访问受保护的URL-->
<description>constraints</description>   
<role-name>DataManage</role-name>    <!--角色名称-->
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>  <!--将对所用的通讯协议不加限制-->
</user-data-constraint>
</security-constraint>
 <login-config>        
  <auth-method>FORM</auth-method>
  <form-login-config>
   <form-login-page>/login.jsp</form-login-page>         <!--访问受包含的url时,先跳转到该页面-->
   <form-error-page>/error.jsp</form-error-page>        <!--判断用户没有权限访问时,跳转到该页面-->
  </form-login-config>
 </login-config>
  通过以上配置,可以限定只有有DataManage角色权限的用户才能访问系统中所有包含.do的页面,从广义上讲即可限定哪些用户才能访问系统。
  访问顺序:先跳转到 longin.jsp页面,页面提交后,进行安全检查,判断用户是否有权限,有权限再跳回原本访问的.do页面进行正常访问,否则跳到error.jsp
  login.jsp页面部分代码:

<form name="loginForm" method="POST" action="j_security_check" >
<table>
<tr>
<td><input type='text' name='username' ></td>
<td><input type='text' name='password' ></td>
</tr>
<tr>
<td><input type='submit' name='sub' ></td>
</tr>
</table>
</form>
  注意: action="j_security_check" ,该action进行安全检查。(<security-constraint>的作用,该action在web.xml是不用定义的。。。直接用)
  如本例子,用户表:
  username    password                        
  test1           123456                      
  test2           123456
  test3           123456
  .......
  用户角色表:
  username        role
  test1               guest
  test2               DataManage
  test3               DataManage
  ........
  这样就表示test1用户不能访问系统,只有test2和test3才能访问系统      

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-329811-1-1.html 上篇帖子: tomcat中文问题 下篇帖子: Tomcat debug 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表