和大多数Catalina组件不一样的是,Realm有几个标准的实现。所以,必须使用className属性来选择你希望使用的实现。
JDBC Database Realm (org.apache.catalina.realm.JDBCRealm)
JDBC Database
Realm将Catalina连接到一个关系数据库,通过正确的JDBC驱动访问,用来查询用户名,密码和他们相关的角色。由于查询是在每次必要的时候完
成的,因此数据库的改变会马上反映到用来认证新登录的信息中。
除了用来获取必需信息的数据库表名和列名以外,还有很多附加的属性用来配置到数据库的连接:
属性
描述
connectionName
|
建立JDBC连接时使用的数据库用户名
|
connectionPassword
|
建立JDBC连接时使用的数据库密码
|
connectionURL
|
建立数据库连接时传递给JDBC驱动的连接URL
|
digest
|
用来对数据库中的用户密码编码的“消息摘要”算法的名称。如果没有指定,密码以明文方式存储。
|
driverName
|
连接到认证数据库的JDBC驱动的完整的Java类名
|
roleNameCol
|
“用户角色“表中的列名,包含了指定给对应用户的角色名称。
|
userCredCol
|
“用户”表中的列名,包含用户的可信数据(比如,密码)。如果设置了digest属性,则假定密码已经用了指定的算法进行编码,否则,假定密码是明文密码。
|
userNameCol
|
“用户”表和“用户角色”表中的列名,包含用户的用户名
|
userRoleTable
|
“用户角色”表名,必须包含userNameCol和roleNameCol指定的列。
|
userTable
|
用户表,必须包含userNameCol和userCredCol属性指定的列
|
有关使用JDBC Database Realm组件来设置container managed security的更多信息,参考FIXME
- Nested pointer into HOW-TO
DataSource Database Realm (org.apache.catalina.realm.DataSourceRealm)
DataSource Database Realm 将Catalina连接到一个关系数据库,通过一个名为JDBC
Datasource的JNDI访问,查询用户名,密码以及他们对应的角色。由于查询在每次需要的时候进行,因此数据库的变化会马上反映到用来认证新的登录的信息上。
JDBC Realm使用单个数据库连接。这要求基于realm的认证之间同步,比如,同一时刻只允许一个认证。这对需要大量使用认证的应用程序来说是一个瓶颈。
DataSource Database Realm支持并发的基于Realm的认证,允许JDBC DataSource处理优化问题,比如数据库连接池。
有很多选项可以配置JNDI JDBC Datasource的名字,同时包括用来获取必要信息的数据库表名和列名。
属性
描述
dataSourceName
|
Realm的JNDI JDBC DataSource的名字 |
digest
|
用来对存储在数据库中的用户密码编码的消息摘要算法的名称。如果没有指定,假定用户密码以明文方式存储。
|
roleNameCol
|
“用户角色“表中的列名,包含了指定给对应用户的角色名称。
|
userCredCol
|
“用户”表中的列名,包含了用户的可信数据(比如,密码)。如果设置了digest属性,则假定密码已经用了指定的算法进行编码,否则,假定密码是明文密码。
|
userNameCol
|
“用户”表和“用户角色”表中的列名,包含用户的用户名。
|
userRoleTable
|
用户角色表名,必须包含userNameCol和roleNameCol指定的列。
|
userTable
|
用户表,必须包含userNameCol和userCredCol属性指定的列。 |
有关使用DataSource Database Realm组件配置container managed security的更多信息,参考DataSource
Realm HOW-TO。
JNDI Directory Realm (org.apache.catalina.realm.JNDIRealm)
JNDI Directory Realm将Catalina连接到一个LDAP目录,通过正确的JNDI驱动访问。LDAP目录存储了用户名,密码以及他们相应的角色。对目录的修改马上反映到用来认证新的登录的数据上面。
directory realm支持许多使用LDAP进行认证的方法:
- realm可以使用模式来决定用户目录条目的唯一名字(distinguished name),或者搜索目录来定位该条目;
- realm可以将用户条目的唯一名字和用户给出的密码绑定到目录上,对用户进行认证;或者,从用户条目中取出密码,在本地进行比较;
- 在目录中,角色可以以单独的条目存在(比如,用户所属的组条目),或者,角色可以是用户条目的一个属性,或者两种情况都是;
除了到目录的连接,用户从目录中获取信息的元素和属性名称以外,Directory Realm还支持很多其他的附加属性:
属性
描述
authentication
|
使用的认证类型,字符串类型。可以是“none”,“simple”,“strong”或者提供者定义的其他类型,如果没有值,使用提供者提供的缺省值。
|
connectionName
|
创建目录连接使用的目录用户名。如果没有指定,使用匿名连接,这在大多数情况下就足够了,除非你指定了userPassword属性 |
connectionPassword
|
创建目录连接使用的目录密码。如果没有指定,使用匿名连接,这在大多数情况下就足够了,除非你指定userPassword属性。
|
connectionURL
|
创建目录连接时,传递给JNDI驱动的连接URL。 |
contextFactory
|
用来取得JNDI InitialContext的工厂类的Java类名。缺省情况下,假定使用标准的JNDI
LDAP提供者。
|
protocol
|
使用的安全协议。如果没有指定,使用提供者提供的缺省值。
|
roleBase
|
用于角色查找的基准目录条目。如果没有指定,使用目录上下文的顶级元素。
|
roleName
|
在角色查找中,包含角色名的属性的名称。另外,在用户条目中,你可以使用userRoleName来指定包含额外角色名的属性名称,。如果没有指定,不搜索角色,角色存在于用户条目中。
|
roleSearch
|
用来进行角色查找的LDAP过滤器表达式。使用{0}来代替用户的唯一名称,{1}来代替用户名。如果没有指定,不对角色进行搜索,角色从用户条目中由userRoleName指定的属性得到。
|
roleSubtree
|
在查找与用户相关联的角色时,如果想搜索由roleBase属性指定的元素的整个子树,设为true。缺省值为false,只对顶级元素进行搜索。
|
userBase
|
在使用userSearch表达式搜索用户的时候的基准元素。如果使用userPattern表达式进行搜索,不使用这个属性。
|
userPassword
|
在
用户条目中包含用户密码的属性名。如果指定了这个值,JNDIRealm使用connectionName和connectionPassword属性指
定的值绑定到目录,取出对应的属性,与被认证的用户给出的值进行比较。如果不指定这个值,JNDIRealm会尝试使用用户条目的唯一名称和用户给出的密
码绑定到目录,如果绑定成功,说明认证成功。
|
userPattern
|
用户目录条目的唯一名称的模式,{0}代表实际的用户名。在唯一名称包含用户名,其他的项都相同的时候,可以使用这个属性,而不是使用userSearch,userSubtree和userBase.
|
userRoleName
|
用户目录条目中的一个属性名,该属性包含了零个或多个指定给用户的角色名的值。另外,如果角色以单独的条目存在,可以使用roleName属性来指定属性名,在搜索目录的时候,可以得到这个属性。
如果不指定userRoleName,用户的所有角色通过角色搜索得到;
|
userSearch
|
搜索用户目录条目时,使用的LDAP过滤表达式,{0}代表实际的用户名,可以使用userSearch,userBase和userSubtree属性一起来代替userPattern搜索目录。
|
userSubtree
|
如果希望搜索由userBase属性指定的元素的整个子树,设为true,缺省值为false,即只搜索顶级元素。如果使用userPattern表达式,不使用这个属性。
|
有关使用JNDI Directory Realm组件设置container managed security的更多信息,参考
FIXME - Nested pointer into HOW-TO
Memory Based Realm (org.apache.catalina.realm.MemoryRealm)
Memory Based Realm是一个简单的Realm实现,它从XML文件中读取用户信息,将这些信息标识为内存中的一系列Java对象的集合。这个实现只是用来启动container
managed security,而不是用在产品中。所以,当数据文件改变的时候,没有机制来更新内存中用户的集合。
Memory Based Realm实现支持如下的附加属性:
属性
描述
pathname
|
包含用户信息的XML文件的绝对或者相对路径。XML文件的格式在下面定义。如果没有指定这个属性,缺省值为conf/tomcat-users.xml |
由pathname属性引用的XML文档必须满足如下需求:
- 根元素必须是
<tomcat-users>
- 每个授权用户必须用单个XML元素<user>来标识,嵌套在根元素中
- 每个<user>元素必须具有下列属性:
- name
- 用户名(在文件内必须唯一).
- password
- 用户密码(明文).
- roles
- 用户角色列表,用逗号分开;
关于使用Memory Based Realm组件设置container managed security的更多信息,参考FIXME
- Nested pointer into HOW-TO
相关推荐
npm install react-native-realm-sync-storage --save react-native link realm 或者 rnpm link realm 2:使用方法 1:引入头文件 import Storage from 'react-native-realm-sync-storage' 2:方法列表 Storage.get...
Realm Asset Helper - 用于将Realm.IO集成在Android应用工具类
React Native简单仓库app的实现,用到了realm组件实现数据库的存储;还有到react-native-drawer抽屉组件实现删除功能。由于上传资源限制大小,未能上传整个项目代码,只上传了关键代码,望见谅。
@ airamrguez / cordova-plugin-realm 重要说明:这不是Realm的官方产品。 这是一个进展中的工作。 不要使用它。 API将更改。关于该插件为iOS,Android和浏览器提供了Realm移动数据库的接口。安装cordova plugin add...
│ ch12.rar FORM验证登录文件,BASIC验证配置文件,Realm配置代码 │ ch13.rar Tomcat阀的使用(实例演示) │ ch14.rar JDBC资源(实例演示) │ ch17.rar 将Tomcat嵌入到Java中(实例演示) │ ch19...
Simplify your code to its minimum expression with this set of Kotlin extensions for Realm. Forget all boilerplate related with Realm API and perform database operations in one line of code with this ...
将Realm与 提供一个以供子组件读取和写入数据库。 提供一个来查询数据库。 数据更改时重新渲染组件 请注意:该软件包使用Realm JS,因此具有相同的限制,即它需要访问设备文件系统,因此不能运行“常规” Web...
tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket类 4 1.5 ServerSocket类 5 1.6 应用举例 5 第2...
该存储库包含所有Realm Mobile Database产品所使用的核心数据库组件的源代码:realm-java,realm-cocoa,realm-js和realm-dotnet。 Realm Core本身并不是具有公共稳定和受支持的API的“最终用户”产品。 打算构建一...
安装使用NPM(或yarn)进行安装-如果您已经安装了React和Realm(都是对等依赖项) npm install --save react-realm-context或在安装Realm和React时安装它npm install --save react-realm-context realm react注意:...
领域介绍 Realm 简介 - -
Android-Core-Realm What you need to know to be a good Android developer 目录 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ XIII XIV UI组件 四大组件 动画 :yin_yang: 设计模式 异步任务机制 自定义View 网络请求 响应...
FlickrApp-RxSwift-MVVM-Realm 使用Realm作为数据库的Rx + MVVM的FlickrDemoApp不需要执行pod安装已知可优化或问题:读取图片前可先抓取图片可提供的大小避免预先中等图片大小无法读取到小图的问题下载图片至本地端...
android-目录列表-java-realm-gson-retrofit 由迈克尔·斯蒂尔(Michael Steele)在17年3月13日创建。 版权所有:copyright:2017 Michael Steele。 版权所有。 进行中的开发-使用Java,Realm,Retrofit2,Glide,SSL...
react-native-realm-tutorial:React Native领域教程库
ZeroKit-Realm-Auth-Provider ZeroKit-Realm-auth-provider是Realm Object Server(ROS)的身份验证模块,用于启用基于ZeroKit的身份验证。有关ZeroKit和Realm对象服务器的附加信息有关ZeroKit的更多信息: ://...
该存储库包含所有Realm Mobile Database产品使用的核心数据库组件的源代码: Realm Core本身不是具有公共稳定和受支持的API的“最终用户”产品。 建筑领域 描述如何构建Realm Core。 贡献 有关更多详细信息,请...
这个是realm数据库的示例以及jar包:realm-java-0.86.0
领域GraphQL客户端一组帮助程序方法和类,使使用Apollo GraphQL客户端与Realm Object Server更加容易。使用客户端Realm GraphQL客户端提供了一些帮助程序和便捷API,使使用使用更容易。先决条件将 , , 和软件包...
Realm是直接在手机,平板电脑或可穿戴设备内部运行的移动数据库。 该存储库保存Realm的Java版本的源代码,该版本当前仅在Android上运行。 Kotlin境界 有关专门为Kotlin Multiplatform和Android编写的新SDK的更多信息...