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的realm域的更多相关文章

  1. Tomcat 6 —— Realm域管理

    本篇来源于官方文档,但不仅仅是翻译,其中不乏网上搜索的资料与自己的理解. 如有错误,请予指正. 什么是Realm 首先说一下什么是Realm,可以把它理解成“域”,也可以理解成“组”,因为它类似 类U ...

  2. 转:解决tomcat服务器跨域问题

    原文地址: 解决tomcat服务器跨域请求问题 注:还未测试 在tomcat 的web.xml 配置文件中加入如下配置过滤器 (如web.xml中有多个filter时要把下面配置放在最前端) < ...

  3. Tomcat 6 跨域的支持

    1.添加2个jar包 这个我是自己保存在云端的 cors-filter-1.7.jar java-property-utils-1.9.jar tomcat7以后自动支持 2.tomcat 下面的we ...

  4. tomcat添加跨域访问功能-Access-Control-Allow-Origin:*

    目标:tomcat服务器提供的接口,不能在其他域中访问的时候,需要增 Access-Control-Allow-Origin:* 直接配置的方法很多,但是我一个没有成功过,所以只能自己写拦截器了. 1 ...

  5. tomcat允许跨域请求:

    在springmvc-servlet.xml中配置 <mvc:interceptors> <bean class="com.read.api.pc.interceptor. ...

  6. Tomcat跨二级域配置

    内容转自:http://blog.csdn.net/luka2008/article/details/38385703/,请直接看原文,不过这篇“原文”也是转的... 1,Tomcat下 代码: im ...

  7. Tomcat Ajax跨域访问

    http://ibleave60.blog.51cto.com/2669415/1208652 http://enable-cors.org/server.html 下载cors-filter-1.7 ...

  8. 设置tomcat实现跨域

    1.tomcat下自带的cors过滤器 修改tomcat路径下conf/web.xml文件 <filter> <filter-name>CorsFilter</filte ...

  9. 配置tomcat允许跨域访问,cors跨域资源共享

    1.导入cors-filter-1.7.jar,java-property-utils-1.9.jar两个jar包 2.在web.xml里配上: <filter> <filter-n ...

随机推荐

  1. 有趣的冷知识:编程中Foo, Bar 到底什么意思?

    转自:编程中Foo, Bar 到底什么意思? 1 前言 在很多国外计算机书本和一些第三份开源软件的Demo中经常用到两个英文单词Foo,Bar.这到底是什么意思呢?从步入屌丝界的IT生活见到这两个单词 ...

  2. NOIP2017D2T3 列队—Treap

    NOIP2017列队 Description Sylvia 是一个热爱学习的女孩子.  前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有n × m ...

  3. Node.js HTTP

    稳定性: 3 - 稳定 使用 HTTP 服务器或客户端功能必须调用 require('http'). Node 里的 HTTP 接口支持协议里原本比较难用的特性.特别是很大的或块编码的消息.这些接口不 ...

  4. Java常用集合学习总结

    一  数组 数组可以存储基本数据类型和对象的一种容器,长度固定,所以不适合在对象数量未知的情况下使用. Arrays : 用于操作数组对象的工具类,里面都是静态方法. Arrays.asList:把A ...

  5. 重载equals方法时要遵守的通用约定--自反性,对称性,传递性,一致性,非空性

    本文涉及到的概念 1.为什么重载equals方法时,要遵守通用约定 2.重载equals方法时,要遵守哪些通用约定   为什么重载equals方法时,要遵守通用约定 Object类的非final方法都 ...

  6. 解决ASP.NET MVC 检测到有潜在危险的 Request.Form 值

    提交使用html编辑器编辑后的数据,由于Request时出现有HTML或JavaScript等字符串时,系统会认为是危险性值.立马报错. "从客户端 ... 中检测到有潜在危险的 Reque ...

  7. 使用Android Studio向GitHub提交代码

    使用Android Studio向GitHub提交代码 在GitHub上创建一个仓库 填写仓库名称.描述.类型(公有.私有)等信息,点击创建 到此,成功创建了我们的仓库,并且初始化创建了README. ...

  8. java设计模式-----单例设计模式

    设计模式是个很高深的东西,我也是略懂皮毛,下面让我用最简洁易懂的语言描述下单例设计模式吧. 一些人总结出来用来解决特定问题的固定的解决方案. 解决一个类在内存中只存在一个对象,想要保证对象的唯一. 1 ...

  9. TCP的发送系列 — 发送缓存的管理(二)

    主要内容:从TCP层面判断发送缓存的申请是否合法,进程因缺少发送缓存而进行睡眠等待. 因为有发送缓存可写事件而被唤醒. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zh ...

  10. 安卓仿QQ红包领取详情界面动画

    为了能清楚的看到这个效果,本人不惜几次花费重金给众群叼发放红包,来查看红包领取详情界面的动画效果,QQ效果如图: 图中我们可以看到,动画处的头像和文字是一起的,即同时并且是整体,注意,是整体进行缩放的 ...