tomcat的realm域

Realm域,其实可以看成是一个包含了用户及密码的数据库,而且每个用户还会包含了若干角色。也就是包含了用户名、密码、角色三个列的数据记录集合,如下图,最下面椭圆内的包含的整块即可以看成realm域。它的出现是为了方便统一地提供一种X(用户,密码,权限)与Y(web资源)的映射关系。

 

    我们有三个web应用的资源及对应资源访问角色,web1应用中url1资源必须拥有role1角色的用户才可以访问,web2应用中rul2资源则需要role2角色才可访问,而web3应用的rule3角色可以访问url3资源和url4资源。这时有了realm域就可以很方便建立起用户与每个web应用及相关资源的权限关系。

所以Realm域是为了统一web容器资源安全管理、统一抽离重复认证工作、方便web应用资源权限管理开发而提出的一个概念。它属于在web容器级别提供权限认证的支持,它支持三个Container级别的共享,即Engine、Host和Context,我们知道tomcat结构分为四个级别,除了这三个还有一个wrapper级别,由于它对应的是一个servlet,所以它不能有对应的realm。那么Engine级别属于所有web应用共享,Host级别则属于在该虚拟主机上的web应用共享,而Context级别则是专属于某个web应用。从这方面可以看出tomcat又可以通过配置提供不同的realm共享级别。

那么在了解了什么是realm域后,我们进一步看看,realm可以以不同的存储方式保存用户名、密码、角色,例如数据库、配置文件、其他存储系统等等。所以根据不同的存储方式tomcat提供了各种支持。下面就看下realm的类型。

①JDBCRealm,用户密码角色信息保存在一个关系数据库中,通过JDBC驱动对信息进行获取。

②DataSourceRealm,用户密码角色信息保存在一个关系数据库中,通过配置JNDI的JDBC数据源对信息进行获取。

③JNDIRealm,用户密码角色信息保存在一个基于LDAP协议的目录服务器中,通过JNDI对信息进行获取。

④UserDatabaseRealm,用户密码角色信息保存在一个名为“UserDatabase”的JNDI资源中,一般默认是保存在conf/tomcat-users.xml文件中。这是tomcat默认的realm,也是通过JNDI对信息进行获取。

⑤MemoryRealm,用户密码角色信息保存在内存当中,其通过conf/tomcat-users.xml进行初始化。通过指定内存对信息进行获取。

⑥JAASRealm,用户密码角色信息保存在JAAS相应的配置文件中,通过JAAS框架对信息进行获取。

点击订购作者《Tomcat内核设计剖析》

时间: 2024-10-05 10:04:19

tomcat的realm域的相关文章

tomcat安全域realm到底有什么用,web程序都没用到过啊以前?

问题描述 tomcat安全域realm到底有什么用,web程序都没用到过啊以前? tomcat安全域realm到底有什么用?各种资料说身份验证,角色管理,可是我们做的web程序中的人员权限管理都是在程序里设计数据库表验证用户权限实现的呀.那么这个relam到底有何用呢,望高人解答... 解决方案 用在传统的身份认证 http 401认证 需要提交用户名 密码

75篇关于Tomcat源码和机制的文章

整理下前面写过的75篇关于Tomcat源码和机制的文章 文章列表 如何设计一个Web容器 Web安全认证机制知多少 Tomcat集群实现源码级别剖析 Tomcat集群如何同步会话 从单机到集群会话的管理之集群模式一 从单机到集群会话的管理之集群模式二(更大的集群) Tomcat集群的failover机制 Tomcat集群应用部署的实现机制 Tomcat集群机制剖析及其生产部署选型 Tomcat如何实现WebSocket Tomcat如何实现Comet Tomcat怎么实现异步Servlet To

通向架构师的道路(第二天)之apache tomcat https应用

一.总结前一天的学习 在前一天的学习中我们知道.了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验. 这样的架构的好处在于: ü   减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负责处理Java请求,这对系统的performance是一个极大的提升. ü   安全,Web Server端没有任何J

Tomcat如何实现资源安全管理

在了解了认证模式及Realm域后,我们看看Tomcat是如何设计实现资源安全管理的.在认证模式上,必须要支持多种认证模式,包括Basic模式.Digest模式.Form模式.Spnego模式.SSL模式及NonLogin模式.如何实现这些认证模式比较优雅,或者说比较清晰?看下图,在tomcat中一个请求从浏览器发送过来后,请求接收后会流向四个级别容器处理,即Engine->Host->Context->Wrapper,而且是以管道阀门(pipeline和valve)形式进行处理,只需往某

j2ee tomcat https 证书等一系列相关知识的学习总结

在前一天的学习中我们知道.了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验. 这样的架构的好处在于:  减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负责处理Java请求,这对系统的performance是一个极大的提升. 安全,Web Server端没有任何Java源代码包括编译后的东西,对In

Tomcat 6 --- JNDI详解

JNDI(Java Naming and Directory Interface, Java命名和目录接口),说白了,就是通过配置一些xml文件,方便用户直接调用API使用某些通用的资源. 举个简单的例子,如果在tomcat中部署了很多应用,应用都需要使用同一个数据库,如果每个应用都在代码中配置数据库的连接,肯定是很麻烦的. 所以通过JNDI就可以简单的通过 InitialContext 获取到统一配置的资源,简化代码的编写. 本篇主要内容按照上面来讲解,其中样例部分主要说明一下通用javabe

如何使用tomcat 配置连接ldap

问题描述 如何使用tomcat 配置连接ldap 你好,目前在做一个手机app,想通过公司内部域账号认证登录,公司其他app一般是通过weblogic搭建服务,目前这个app需要通过tomcat搭建,tomcat仅实现域账号认证的处理,从来没有做过这方面,不知道怎么下手,能否指导一下,能附带一个demo最好了,谢谢. 目前仅知道可以通过ldap来实现,公司的域账号是现成的,已经知道地址为:ldap://10.20.13.23:389,想知道tomcat需要怎么配置啊?谢谢. 我在网上找了一个资料

安装和配置BEA WorkShop JSP Editor

js WorkShop简介 BEA最近收购了M7公司,将其开发的NitroX系列开发工具加入到BEA WorkShop产品家族中,新的BEA WorkShop产品家族包括五个部分,BEA Workshop for Struts. BEA Workshop for JSF.BEA BEA WorkShop JSP Editor.BEA Workshop Studio以及原有的BEA WebLogic Workshop. 除了BEA WebLogic Workshop之外,其他四个开发工具均基于Ec

3.6. JSP

3.6.1. 注释 JSP页面中的注释有以下几种样式的注释方法: JSP页面中的HTML注释 <!-- 注释内容 --> JSP页面中的普通注释,不会再浏览器中输出 <% // 注释内容 %> <% /* 注释内容 */ %> JSP页面中的隐藏注释,不会再浏览器中输出 <%-- 注释内容 --%> 3.6.2. pageContext 3.6.2.1. queryString 输出?问号后面的变量 ${pageContext.request.querySt