Tomact中权限设置-Realm配置
2015-11-21 15:29
369 查看
什么是Realm
Realm(安全域)其实就是一个存储用户名和密码的“数据库”再加上一个枚举列表。“数据库”中的用户名和密码是用来验证 Web 应用(或 Web 应用集合)用户合法性的,而每一合法用户所对应的角色存储在枚举列表中。可以把这些角色看成是类似 UNIX 系统中的 group(分组),因为只有能够拥有特定角色的用户才能访问特定的 Web 应用资源(而不是通过对用户名列表进行枚举适配)。特定用户的用户名下可以配置多个角色。
虽然 Servlet 规范描述了一个可移植机制,使应用可以在 web.xml 部署描述符中声明它们的安全需求,但却没有提供一种可移植 API 来定义出 Servlet 容器与相应用户及角色信息的接口。然而,在很多情况下,非常适于将 Servlet 容器与一些已有的验证数据库或者生产环境中已存在的机制“连接”起来。因此,Tomcat 定义了一个 Java 接口,通过“插入”组件来建立连接。提供了 6 种标准插件,支持与各种验证信息源的连接:
JDBCRealm–通过JDBC驱动器来访问保存在关系型数据库中的验证信息。
DataSourceRealm-访问保存在关系型数据库中的验证信息。
JNDIRealm-访问保存在LDAP目录服务器中的验证信息。
UserDatabaseRealm–访问存储在一个UserDatabase JNDI数据源中的认证信息,通常依赖一个XML文档(tomact配置文件conf/tomact-users.xml)
MemoryRealm——访问存储在一个内存中对象集合中的认证信息,通过 XML 文档初始化(conf/tomcat-users.xml)。
JAASRealm——通过 Java 认证与授权服务(JAAS)架构来获取认证信息。
当然除了这6种,自己也可以写出自定义的Realm实现,整合到tomcat中,具体步骤:
实现org.apache.catalina.Realm接口
将编译好的realm放到 $CATALINA_HOME/lib中
声明自定义 realm
在 MBeans 描述符文件中声明自定义realm。
配置 Realm
在详细介绍标准 Realm 实现之前,简要了解 Realm 的配置方式是很关键的一步。大体来说,就是需要在conf/server.xml 配置文件中添加一个 XML 元素,如下所示:
<Realm> 可以嵌入以下任何一种 Container 元素中。Realm 元素的位置至关重要,它会对 Realm 的“范围”(比如说哪个 Web 应用能够共享同一验证信息)有直接的影响。
配置的详细信息都在http://tomcat.apache.org/tomcat-8.0-doc
Realm(安全域)其实就是一个存储用户名和密码的“数据库”再加上一个枚举列表。“数据库”中的用户名和密码是用来验证 Web 应用(或 Web 应用集合)用户合法性的,而每一合法用户所对应的角色存储在枚举列表中。可以把这些角色看成是类似 UNIX 系统中的 group(分组),因为只有能够拥有特定角色的用户才能访问特定的 Web 应用资源(而不是通过对用户名列表进行枚举适配)。特定用户的用户名下可以配置多个角色。
虽然 Servlet 规范描述了一个可移植机制,使应用可以在 web.xml 部署描述符中声明它们的安全需求,但却没有提供一种可移植 API 来定义出 Servlet 容器与相应用户及角色信息的接口。然而,在很多情况下,非常适于将 Servlet 容器与一些已有的验证数据库或者生产环境中已存在的机制“连接”起来。因此,Tomcat 定义了一个 Java 接口,通过“插入”组件来建立连接。提供了 6 种标准插件,支持与各种验证信息源的连接:
JDBCRealm–通过JDBC驱动器来访问保存在关系型数据库中的验证信息。
DataSourceRealm-访问保存在关系型数据库中的验证信息。
JNDIRealm-访问保存在LDAP目录服务器中的验证信息。
UserDatabaseRealm–访问存储在一个UserDatabase JNDI数据源中的认证信息,通常依赖一个XML文档(tomact配置文件conf/tomact-users.xml)
MemoryRealm——访问存储在一个内存中对象集合中的认证信息,通过 XML 文档初始化(conf/tomcat-users.xml)。
JAASRealm——通过 Java 认证与授权服务(JAAS)架构来获取认证信息。
当然除了这6种,自己也可以写出自定义的Realm实现,整合到tomcat中,具体步骤:
实现org.apache.catalina.Realm接口
将编译好的realm放到 $CATALINA_HOME/lib中
声明自定义 realm
在 MBeans 描述符文件中声明自定义realm。
配置 Realm
在详细介绍标准 Realm 实现之前,简要了解 Realm 的配置方式是很关键的一步。大体来说,就是需要在conf/server.xml 配置文件中添加一个 XML 元素,如下所示:
<Realm className="... class name for this implementation" ... other attributes for this implementation .../>
<Realm> 可以嵌入以下任何一种 Container 元素中。Realm 元素的位置至关重要,它会对 Realm 的“范围”(比如说哪个 Web 应用能够共享同一验证信息)有直接的影响。
<Engine> 元素 内嵌入该元素中的这种 Realm 元素可以被所有虚拟主机上的所有 Web 应用所共享,除非该 Realm 元素被内嵌入下属 <Host> 或 <Context> 元素的 Realm 元素所覆盖。 <Host> 元素 内嵌入该元素中的这种 Realm 元素可以被这一虚拟主机上的所有 Web 应用所共享。除非该 Realm 元素被内嵌入下属 <Context> 元素的 Realm 元素所覆盖。 <Context> 元素 内嵌入该元素中的这种 Realm 元素只能被这一 Web 应用所使用。
配置的详细信息都在http://tomcat.apache.org/tomcat-8.0-doc
相关文章推荐
- 扩展方法
- T088 路痴
- HDU2161
- matlab:统计矩阵中某元素的个数
- ajax使用函数中的this变量问题及其解决方法
- STM32移植ucos问题
- 正则表达式
- 织梦安装错误
- Editor编辑器学习(2)
- iOS学习笔记--12 NSLog相关
- openwrt下 samba设置
- 实习小白::(转) Cocos2d-x 3.0 开发(十七)使用Cocos2d-x 3.0rc,一条命令打包Android
- 大数据技术学习之路,从今天开始
- 莫比乌斯函数
- nginx虚拟配置
- ubuntu tftp-server 服务器安装与配置
- ubuntu下中文乱码解决方案(全)
- 超详细的javascript数组方法汇总
- 人工智能与数据挖掘顶级会议
- LEETCODE-MinStack