`
韩悠悠
  • 浏览: 827013 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

15,tomcat安全

 
阅读更多

有些web应用程序的内容是有限制的,只允许有权限的用户在提供正确的用户名和密码的情况下才允许访问。
Servlet通过配置部署文件web.xml来对安全性提供技术支持
一个servlet通过一个叫authenticator的阀门(valve)来支持安全性限制。
当容器启动的时候,authenticator被添加到容器的流水线上
authenticator阀门会在包装器阀门之前被调用。authenticator用于对用户进行验证,
如果用户熟人了正确的用户名和密码,authenticator阀门调用下一个用于处理请求servlet的阀门。
如果验证失败,authenticator不唤醒下一个阀门直接返回。由于验证失败,用户并不能看到请求的servlet。

(域)Realm
域是用于进行用户验证的一个组件,它可以告诉你一个用户名密码对是否是合法的。
。一个域跟一个上下文容器相联系,一个容器可以只有一个域。可以使用容器的setRealm方法来建立它们之间的联系。
在Tomcat的默认实现里,合法用户被存储在tomcat-users.xml文件里。
但是可以使用域的其它实现来访问其它的源,如关系数据库。

一个域用接口org.apache.catalina.Realm表示。该接口最重要的方法是四个authenticate方法:

public Principal authenticate(String username, String credentials);
 public Principal authenticate(String username, byte[] credentials);
 public Principal authenticate(String username, String digest,
                                  String nonce, String nc, String cnonce,
                                  String qop, String realm,
                                  String md5a2);
public Principal authenticate(X509Certificate certs[]);
域还有getContainer和setContainer方法用于建立域与容器的联系。

一个域的基本上实现是抽象类org.apache.catalina.realm.RealmBase。
org.apache.catalina.realm包中海提供了其它一些类继承了RealmBase
如:JDBCRealm, JNDIRealm, MemoryRealm,和 UserDatabaseRealm。默认情况下使用的域是MemoryRealm

LoginConfig类
一个login configuration包括一个域名,用org.apache.catalina.deploy.LoginConfig类表示。
LoginConfig的实例封装了域名和验证要用的方法。可以使用LoginConfig实例的getRealmName方法来获得域名,
可以使用getAuthName方法来验证用户。
Tomcat一个部署启动的时候,先读取web.xml。如果web.xml包括一个login-confgi元素,
Tomcat创建一LoginConfig对象并相应的设置它的属性。验证阀门调用LoginConfig的getRealmName方法并将域名发送给浏览器显示登录表单。

Authenticator类
Authenticator接口用来表示一个验证器。该方接口并没有方法,只是一个组件的标志器,
这样就能使用instanceof来检查一个组件是否为验证器。
Catalina提供了Authenticator接口的基本实现:org.apache.catalina.authenticator.AuthenticatorBase类。
除了实现Authenticator接口外,AuthenticatorBase还继承了org.apache.catalina.valves.ValveBase类
BasicAuthenticator用于基本验证, FormAuthenticator用于基于表单的验证, DigestAuthentication用于摘要(digest)验证,
SSLAuthenticator用于SSL验证。
NonLoginAuthenticator用于Tomcat没有指定验证元素的时候。
一个验证器的主要工作是验证用户。因此,AuthenticatorBase类的invoke方法调用了抽象方法authenticate,该方法的具体实现由子类完成


安装Authenticator阀门
在部署文件中,只能出现一个login-config元素,login-config元素包括了auth-method元素用于定义验证方法。
这也就是说一个上下文容器只能有一个LoginConfig对象来使用一个authentication的实现类。

例子10

 

分享到:
评论

相关推荐

    Tomcat最佳实践.rar

    Tomcat最佳实践 1,WEB SERVER介绍 2,TOMCAT目录结构 3,TOMCAT端口管理 ...14,TOMCAT安全策略 15,TOMCAT的URL编码格式 16,TOMCAT传输压缩 17,TOMCAT集群和负载均衡 18,ECD部门AP(TOMCAT)部署规范

    apache-tomcat-9.0.0.M15.zip

    按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全局管理和Tomcat阀等。由于Tomcat本身也内含了HTTP服务器...

    TOMCAT最佳实践

    1,WEB SERVER介绍 2,TOMCAT目录结构 3,TOMCAT端口管理 ...5,TOMCAT配置数据库 ...14,TOMCAT安全策略 15,TOMCAT的URL编码格式 16,TOMCAT传输压缩 17,TOMCAT集群和负载均衡 18,ECD部门AP(TOMCAT)部署规范

    apache-tomcat-9.0.0.M15.tar.gz

    按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全局管理和Tomcat阀等。由于Tomcat本身也内含了HTTP服务器...

    Tomcat配置管理实践

    1,WEB SERVER介绍 2,TOMCAT目录结构 3,TOMCAT端口管理 ...5,TOMCAT配置数据库 ...14,TOMCAT安全策略 15,TOMCAT的URL编码格式 16,TOMCAT传输压缩 17,TOMCAT集群和负载均衡 18,ECD部门AP(TOMCAT)部署规范

    《深入剖析Tomcat(中文版+英文版)》.rar

    《深入剖析Tomcat(中文版+英文版)》.rar 《深入剖析Tomcat》深入剖析Tomcat 4...第15章 digester库 第16章 关闭钩子 第17章 启动tomcat 第18章 部署器 第19章 manager应用程序的servlet类 第20章 基于jmx的管理

    how-tomcat-works

    第10章 安全性 76 10.1 概述 76 10.2 Realm(领域) 76 10.3 GenericPrincipal 77 10.4 LoginConfig 78 10.5 Authenticator 78 10.6 安装Authenticator 79 10.7 应用程序 79 10.7.1 ex10.pyrmont.core....

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

    第10章 安全性 76 10.1 概述 76 10.2 Realm(领域) 76 10.3 GenericPrincipal 77 10.4 LoginConfig 78 10.5 Authenticator 78 10.6 安装Authenticator 79 10.7 应用程序 79 10.7.1 ex10.pyrmont.core....

    Web安全深度剖析(张柄帅)

    10.5.1 Tomcat 224 10.5.2 JBoss 226 10.5.3 WebLogic 229 10.6 小结 233 第3篇 实战篇 第11章 实战入侵与防范 236 11.1 开源程序安全剖析 236 11.1.1 0day攻击 236 11.1.2 网站后台安全 238 11.1.3 MD5还安全吗 243...

    解决方法驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的两个jar包

    下载两个jar包:bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar 点击下载jar包 第二步:将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\java\jdk1.6.0.43\jre\lib\ext 打开java....

    实战Nginx:取代Apache的高性能Web服务器 第一章

    5.1 Nginx与JSP(Tomcat)在Linux上的安装、配置 5.2 Nginx与ASP.NET(Mono+FastCGI)在Linux上的安装、配置 5.3 Nginx与Perl(FastCGI)在Linux上的安装、配置 第6章 Nginx HTTP负载均衡和反向代理的配置与优化 6.1...

    Android订餐系统毕业设计

    3.2.2服务器(Tomcat端)整体框架 15 3.2.3商家后台(网页版)买卖整体框架 16 3.3架构讲解 17 3.3.1客户端(android手机端) 17 3.3.2服务器端(Tomcat) 18 3.3.3商家后台(网页版) 18 3.4数据库表视图 18 3.5所需的开发...

    毕业设计:Java项目之jsp中华美食网(源码 + 数据库 + 说明文档)

    2.1.5 Tomcat 4 2.1.6 MySQL数据库 4 2.1.7 My Eclipse平台 5 2.1.8软硬件需求 5 2.4 可行性分析 5 3 系统概要设计 6 3.1 系统总体设计描述 6 3.2系统目标 7 3.3系统需求分析 7 3.4 系统模块图 7 3.4.1 系统总体结构...

    Java数据库编程宝典2

    1.4 数据库安全和数据控制语言 1.4.1 管理数据库用户 1.4.2 用户权限 1.4.3 用户组和角色 1.5 数据库体系结构 1.5.1 Java数据对象 1.5.2 两层模型 1.5.3 三层模型 1.6 小结 第2章 设计数据库 2.1 ...

    Java数据库编程宝典4

    1.4 数据库安全和数据控制语言 1.4.1 管理数据库用户 1.4.2 用户权限 1.4.3 用户组和角色 1.5 数据库体系结构 1.5.1 Java数据对象 1.5.2 两层模型 1.5.3 三层模型 1.6 小结 第2章 设计数据库 2.1 ...

Global site tag (gtag.js) - Google Analytics