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. centos 6安装 H3C iNode 上网客户端

    我的安装目录是/usr/iNode 直接把客户端安装包拷到这个文件夹下然后解压: #rar x iNode2.-R0162.rar 然后进入文件夹,里边有一个install.sh文件,这是一个安装文件 ...

  2. python学习之路基础篇(第四篇)

    一.课程内容回顾 1.python基础 2.基本数据类型  (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = by ...

  3. POJ 放苹果问题(递归)

    首先我们想象有一个函数count  f(m,n)可以把m个苹果放到n个盘子中. 根据 n 和 m 的关系可以进一步分析: 特殊的m <=1|| n <= 1时只有一种方法: 当 m < ...

  4. Java 读取Excel文件

    https://www.cnblogs.com/wwzyy/p/5962076.html   先把上面的参考博客看了,如果会导入包的话,下面的教程就直接忽略emm     这时候,你应该把jar包下载 ...

  5. IntelliJ IDEA下Git的配置与使用(命令行下)

    1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...

  6. 20160218.CCPP体系详解(0028天)

    程序片段(01):加法.c 内容概要:字符串计算表达式 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <st ...

  7. ubuntu垃圾清理命令

    ubuntu的空间莫名不够用了 通过系统自带的工具磁盘使用分析器,发现var文件下面的log100多个g,这个日志文件是可以删除的,然后tmp文件也是可以删除的. 1.sudo rm -rf /tmp ...

  8. Retrofit2.0通俗易懂的学习姿势,Retrofit2.0 + OkHttp3 + Gson + RxJava

    Retrofit2.0通俗易懂的学习姿势,Retrofit2.0 + OkHttp3 + Gson + RxJava Retrofit,因为其简单与出色的性能,也是受到很多人的青睐,但是他和以往的通信 ...

  9. django-redis

    linuxapt-get install redis-serverpip install django-redis vim /etc/redis/redis.conf maxmemory 20mb s ...

  10. Java线程状态

    线程跟人类一样拥有自己的生命周期,一条线程从创建到执行完毕的过程即是线程的生命周期,此过程可能在不同时刻处于不同的状态,线程状态正是这小节的主题,线程到底有多少种状态?不同状态之间是如何转化的? 对于 ...