`
dacoolbaby
  • 浏览: 1255574 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

web.xml和Tomcat下的安全认证

    博客分类:
  • Java
阅读更多

Tomcat -- 安全认证 About</security-constraint>

凡是做过WEB项目的都知道,一但涉及用户,我们不得不为用户登录写一堆繁杂的验证代码。

当然Spring AOP的诞生为我们的权限管理提供了不少的便利。

甚至你也以用自己写的Filter(过滤器)来对你的程序进行登录时的验证。

 

今天在这里和大家分享一种更为简便的方法,最原始的认证方式,它就是Java Web的安全验证机制。
      这种机制是对立地WEB的容器之上的,如Tomcat,JBoss等,你只须在你应用中的web.xml文件中做一定的配置就可以完成一个简单的登录验证的功能。确切地说WEB安全验证机制不仅可以让我们完成登录的功能,它更侧重于安全两字。你可以把受保护的资源全部定义在你的资源集里面,这样用户只有在取得了合法的身份验证之后才可以访问,它可以保护  WEB的整个应用、某个子文件夹、甚至于特定的一类文件,这将取决于你对资源集的定义。
      Tomcat容器支持以下四种认证方式:
     1. BASIC认证:这种方式被认为是最不安全的认证,因为它没有提供强烈的加密措施。
     <login-config>
          <auth-method>BASIC</auth-method>
    </login-config
    2. DIGEST认证:相比于BASIC认证,它是种比较安全的认证,它在认证时将请求数据 通过MD5的加密方式进行认证。
     <login-config>
         <auth-method>DIGEST</auth-method>
     </login-config>

     3.FORM认证:这是种基础自定义表单的认证,你可以指定登录时的验证表单。
      <login-config>
         <auth-method>FORM</auth-method>
         <form-login-config>
             <!—创建登录表单 -->
             <form-login-pages>/login.htm</form-login-pages>
             <!—创建错误表单 -->
             <form-error-pages>/error.html</form-error-pages>
          </form-login-config>
       </login-config>
    
       以下是login.htm的内容:(注意form的action还有input元素的name,这些是固定的)
       <form action="j_security_check" method="post">
           Username<input type="text" name="j_username" /><br />
           Password<input type="password" name="j_password" /><br />
          <input type="submit" />
       </form>
    4.CLIENT-CERT认证:这是一种基于客户端证书的认证方式,比较安全。但缺陷是在没有安全证书的客户端无法使用。
    <login-config>
         <auth-method>CLIENT-CERT</auth-method>
    </login-config>

     下面介绍一下,配置认证的步骤:
     1.定义角色:这些角色可以是TOMCAT的tomcat-user.xml文件中定义的默认角色及用户,也可以是自己创建的数据库角色与用户表。以下分别介绍:
     1.1 基本TOMCAT已有用户及角色的认证配置:
     tomcat-users.xml中的role元素
    <tomcat-users>
      <role rolename=”Admin”/>
      <role rolename=”Manager”/>
      <user username=”admin”password=”admin” role=”Admin, Manager”/>
    </tomcat-users>
    web.xml文件中的security-role元素
    <security-role>
    <!—该角色须在tomcat-users.xml定义过-->
        <role-name>Admin</role-name>
    </security-role>

    1.2 基本自定义数据库用户表的认证配置:
     如果你想基于自己定义的数据表进行认证,那你得在META-INF文件夹下创建一个名为 context.xml文件,配置如下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/mycms">
    <Realm className="org.apache.catalina.realm.JDBCRealm"
                 connectionName="root"
                 connectionPassword="123456"
                 connectionURL="jdbc:mysql://localhost:3306/mycms"
                 driverName="com.mysql.jdbc.Driver"
                 roleNameCol="rolename"
                 userCredCol="password"
                 userNameCol="username"
                 userRoleTable="mc_userroles"
                 userTable="mc_users"/>
      </Context>
     这里配置了数据库的连接信息以及指定了认证的用户表及角色表。
     2 定义资源/方法约束
     在web.xml文件中定义如元素:
     <security-constraint>
        <display-name>MyCMS</display-name>
        <web-resource-collection>
            <web-resource-name>Protected Area</web-resource-name>
            <!-- Define the context-relative URL(s) to be protected -->
            <url-pattern>/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <!-- Anyone with one of the listed roles may access this area -->
            <role-name>Admin</role-name>
        </auth-constraint>
    </security-constraint>
    <!-- Login configuration uses form-based authentication -->
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>MyCMS</realm-name>
    </login-config>
   
    <!-- Security roles referenced by this web application -->
    <security-role>
        <description>
            The role that is required to log in to the Administration Application
        </description>
        <role-name>Admin</role-name>
    </security-role>
     至此我们基本TOMCAT的安全认证配置就完成了。至于其它三种方式,配置类似,可以参考2中定义的web.xml文件

 

公司的老系统还会用这种认证方式。

如果给我开发的话,我会选择shiro安全框架。

转自:http://www.cnblogs.com/yan5lang/archive/2010/09/25/1834364.html

分享到:
评论

相关推荐

    TomcatWeb服务器安全配置基线.doc

    Tomcat Web服务器安全配置基线 中国移动通信有限公司 管理信息系统部 2012年 04月 "版本 "版本控制信息 "更新日期 "更新人 "审批人 " "V1.0 "创建 "2009年1月 " " " "V2.0 "更新 "2012年4月 " " " " " " " " " " " ...

    Tomcat压缩包下载资源

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

    Spring Security 中文教程.pdf

    2.2.1. 配置web.xml 2.2.2. 最小 &lt;http&gt; 配置 2.2.2.1. auto-config 包含了什么? 2.2.2.2. 表单和基本登录选项 2.2.3. 使用其他认证提供器 2.2.3.1. 添加一个密码编码器 2.3. 高级web特性 2.3.1. ...

    SpringSecurity 3.0.1.RELEASE.CHM

    2.2.1. 配置web.xml 2.2.2. 最小 配置 2.2.2.1. auto-config包含了什么? 2.2.2.2. 表单和基本登录选项 2.2.3. 使用其他认证提供器 2.2.3.1. 添加一个密码编码器 2.3. 高级web特性 2.3.1. Remember-Me认证 ...

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

    2.2.1. 配置web.xml 2.2.2. 最小&lt;http&gt; 配置 2.2.2.1. auto-config 包含了什么? 2.2.2.2. 表单和基本登录选项 2.2.3. 使用其他认证提供器 2.2.3.1. 添加一个密码编码器 2.3. 高级web 特性 2.3.1. ...

    Java 面试宝典

    34、String 和 StringBuffer 的区别 ............................................................................... 24 35、如何把一段逗号分割的字符串转换成一个数组? .......................................

    openssl生成认证证书的工具

    修改为以下内容(假设cert.cer和server.key文件都放在tomcat的conf目录下) maxThreads="150" scheme="https" secure="true" SSLCertificateFile="conf/cert.cer" SSLCertificateKeyFile="conf/server.key" ssl...

    Struts2入门教程(全新完整版)

    5.tomcat认证访问 10 6.初识拦截器 11 7.Action中的method属性 12 8.使用ForwardAction实现页面屏蔽。 13 8.使用default-Action配置统一访问 14 小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11...

    SSO CAS 单点登录实例SSOAuth+SSOWebDemo1+SSOWebDemo2.zip

    解压缩SSOAuth.zip文件,在/WEB-INF/下的web.xml中请修改“domainname”的属性以反映实际的应用部署情况, domainname需要设置为两个单点登录的应用(demo1和demo2)所属的域名。这个domainname和当前SSOAuth服务...

    应用移植WebSphere问题列表(经验是买不到的)

    发布应用时,报web.xml文件有错 发布应用成功,但无论执行什么action,在返回页面最底下都回多加一行404 找不到xxxxAction。后台日志信息waring: Cannot set header. Response already committed 删除websphere时,...

    spring security 参考手册中文版

    6.2.1 web.xml配置 50 6.2.2最小的配置 50 6.2.3表单和基本登录选项 52 设置默认的登录目的地 54 6.2.4注销处理 54 6.2.5使用其他身份验证提供程序 55 添加密码编码器 56 6.3高级Web功能 56 6.3.1记得我认证 56 ...

    j2ee-test:用于j2ee演示的init

    java-5.1.36-bin.jarWebRoot/WEB-INF/web.xml 配置对应的url只创建servlet, 暂不管jspTomcat 7.0: 服务器conf/server.xml 基本配置webapps/test 具体服务通过 访问MySql 5.7: 数据库net stop mysql57 停止服务...

    java开源包101

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java面试题

    13. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。 11 14. 简述synchronized和java.util.concurrent.locks.Lock的异同 ? 11 15. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics