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

Tomcat web程序安全机制 (转载)

阅读更多
在tomat web服务器中,可以有两种主要的方式来对用户,角色,以及领域进行定义。一种使用简单的xml用户定义的内存realm的验证方式,另外一种是建立数据库连接的jdbc realm验证方式。这两种安全机制定制用户信息来源。
 
一,内存(memoryrealm)验证方式:
web程序的拥护,角色,分组在tomcat的/conf/tomat-users.xml文件中定义。这个xml文件列出web服务器允许的用户名称,密码以及对应的分组等。
例如:
 

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>


 

这里就定义了两个角色,三个用户以及对应的密码。

要使以上的配置文件作用于定义域,就要在server.xml把这个文件定义成为一个数据资源。其目的就是高速web服务器能够在这个文件中找到相关的用户信息。这个定义在tomcat是默认定义的。定义在<GlobalNamingResources>元素中:

<!-- Global JNDI resources -->
  <GlobalNamingResources>

    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved"
           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />

  </GlobalNamingResources>

可以看到pathname="conf/tomcat-users.xml"调用上面的那个配置好的文件。虽然这种方式比较简单,但存在着一定问题,比如手动输入,一旦数据多了就很麻烦等。而且保密效果不是很好,xml各式的文件谁都可以打开直接看到。

二,JDBC realm

首先也是在server.xml文件中<Realm>元素中配置一个使用mysql数据库的realm 

在TOMCAT的server.xml中配置JDBC域验证
      <Realm className="org.apache.catalina.realm.JDBCRealm"
             driverName="com.mysql.jdbc.Driver"
          connectionURL="jdbc:mysql://localhost:3306/mydb"
         connectionName="root" connectionPassword="novell"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
<!--当然别望了在Mysql中建立相应的数据表和字段 -->

当中的系数名字不解释了...

对应的表格

create table users(user_name varchar(15) null primary key,

                   user_pass varhcar(20) not null);

create tabel user_roles( user_name varchar(15) not null,

                        role_naem varchar(20) not null,

primary key(user_name,role_name));

现在简单介绍一下基本的验证方式

首先我们应该在web.xml文件中对需要保护的资源定义一个<security-constraint>比如你要限制url为当前web目中的所有文件/*

 

 

<security-constraint>
     <web-resource-collection>
         <web-resource-name>BasicLogin</web-resource-name>
                   
         <url-pattern>/*</url-pattern>
        

         <http-method>GET</http-method>
         <http-method>POST</http-method>

     </web-resource-collection>
    <auth-constraint>
        <!-- NOTE: This role is not present in the default users file -->
        <role-name>tomcat</role-name>
    </auth-constraint>
    <user-data-constraint>
    <description> no description</description>
    <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
    
<login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>default</realm-name>
</login-config>
   

 其中<web-resource-collection>标记中url-pattern制定保护了url,http-method定义了限定web的请求方法,<auth-constrain>标记了role-name制定了合法用户的角色。<user-data-constraint>中定义了不需要通信的保证。当然了还需要申明使用了基本的验证方式和使用默认的realm.声明部分在上面红色部分给出,即<login-config>.这样的话当浏览器请求

分享到:
评论

相关推荐

    TOMCAT源代码,包括转载得别人的分析

    Apache Tomcat是一款开源的Java Servlet容器,用于部署和运行Java Web应用程序。它的源代码是公开的,这使得开发者能够深入理解其内部工作原理,优化性能,或者为它添加自定义功能。以下是对Tomcat源码及其分析的...

    Tomcat 7-9转载资源

    《深入理解Tomcat 7-9:从基础到实践》 ...通过深入研究这些版本的Tomcat,开发者不仅可以掌握服务器的基本操作,还能深入了解Java Web应用的运行机制,为开发和维护高质量的Web应用打下坚实的基础。

    配置tomcat集群

    - **Tomcat**: Apache Tomcat是运行Java Web应用程序的标准容器。 - **Tomcat会话复制库**: 用于实现Tomcat之间的会话共享,以支持集群环境中的高可用性和负载均衡。 #### 2. 安装 ##### 2.1 第一个Tomcat - 使用...

    轻松配置linux Tomcat集群

    - **高可用性**:通过多节点部署确保应用程序的持续运行,即使某个节点出现故障也不会影响整体服务。 - **可扩展性**:能够根据实际需求灵活增加或减少集群中的节点数量。 - **负载均衡**:合理分配请求到各个 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    Servlet和Struts2的交互(转载)

    Servlet和Struts2是两种在Java Web开发中广泛使用的框架,它们在构建动态、交互式的Web应用程序方面扮演着重要角色。Servlet是Java EE规范的一部分,它提供了一种服务器端编程模型,用于处理HTTP请求和响应。而...

    JAVA OA平台源码(转载)SPRING BOOT....

    该项目是一个完全开源的Java Web应用程序,特别设计用于OA管理系统的功能实现。OA系统通常包括工作流程自动化、文档管理、人力资源管理、项目协作等多种功能,旨在提升企业内部办公效率。项目中附带的SQL语句可能是...

    [转载] JDBC+Servlet+JSP整合开发之-JSP项目实战

    1. **环境配置**:包括安装JDK、设置环境变量、配置Tomcat服务器、创建Web项目结构。 2. **数据库连接**:使用JDBC建立数据库连接,编写SQL语句,处理结果集。 3. **Servlet处理逻辑**:编写Servlet类,处理用户...

Global site tag (gtag.js) - Google Analytics