Ralasafe访问控制(权限管理)中间件的配置工作非常少。因为项目发起人非常讨厌配置。因此,“己所不欲,勿施于人”,Ralasafe的配置也非常少。
Ralasafe配置工作只有3个:
-
数据源配置
-
用户元数据配置
-
web.xml配置策略XML文件存储路径
权限逻辑配置,使用Ralasafe web控制端在线图形化设计,无需手工配置。
Ralasafe将来可能会采取图形化方式处理前面提到的3种配置工作。但现在还是让我们先熟悉一下配置工作吧。
数据源配置
配置入口
Ralasafe不仅强调权限与业务解耦合,也强调权限数据与业务数据解耦合,独立保存。
Ralasafe数据源的入口是WEB-INF/ralasafe/datasources.xml文件,里面配置2个数据源。
-
其中1个是name=“ralasafe”的权限数据源,该数据源里面将保存权限数据。configFile属性指该权限数据源的详细配置信息,名称随意,但对应的文件必须也在WEB-INF/ralasafe目录下;
-
另1个是业务数据源,name属性自定义,只要不等于“ralasafe”即可。configFile属性指该业务数据源的详细配置信息,名称随意,但对 应的文件必须也在WEB-INF/ralasafe目录下。schema属性可选(可以有,也可以没有),该属性表示在数据查询页面显示数据源哪几个 schema的表和视图。
下面是ralasafe demo自带的数据源配置信息:
<?xml version="1.0"?> <datasources> <datasource name="ralasafe" configFile="ralasafe-db.properties"/> <datasource name="app" configFile="app-ds.properties" schemas="mydemo,ralasafe"/> </datasources>
表示2个数据源:ralasafe和app。ralasafe数据源配置信息在ralasafe-db.properties文件里面;
app数据源配置信息在app-ds.properties里面;在设计数据查询页面,指显示mydemo和ralasafe两个schema里面的表和视图。
如果,我将datasources.xml配置文件的schemas改成schemas=“mydemo”。将只显示mydemo里面的数据表和视图,不显示ralasafe里面的表和视图。
详细配置信息
前面讲到的configFile里面提到的配置文件,又如何配置数据源呢?Ralasafe又支持几种配置方式的数据源呢?
Ralasafe支持3种方式配置数据源,且3种配置方式,都随发行包提供了示例。这些示例就是在WEB-INF/ralasafe目录下的ralasafe-db.properties,jndi.properties和method.properties。 下面详细叙述它们。
DBCP数据源
ralasafe-db.properties就是DBCP(http://commons.apache.org/dbcp/)数据源配置示例,Ralasafe将按照配置信息启动一个DBCP数据源。
配置参数有jdbc驱动、用户名、密码和url等。配置参数与DBCP一致。
jdbcDriver=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost/ralasafe?useUnicode=true jdbcUser=root jdbcPassword=1234 connectionPoolMaxSize=5 connectionPoolMaxIdle=2 connectionPoolMaxWait=60000 connectionPoolMinSize=0
JNDI数据源
JNDI数据源在Java EE程序里面非常常见。Ralasafe使用JNDI数据源,配置参数非常简单。
写上type=jndi,然后配上jndi的名称即可。
以下是配置示例:
type=jndi jndiName=jdbc/datasourceName
通过方法调用获取数据源
假如,你的数据源需要通过调用API暴露(当然,我承认这种情况非常少)。当初,我是这么想的:或许有一种数据源我没用考虑到。那么就通过某个java方法调用获取吧。
假如你有这样的API:
public javax.sql.DataSource com.your.company.db.DatasourceProvider.getDatasource();
那么对应的配置就是:
type=method class=com.yourcompany.db.DataSourceProvider method=getDatasource
创建基本权限数据库表
当权限数据源配置好后,你还需要在权限数据库执行如下脚本,创建基础权限数据表。
-- ralasafe schema CREATE TABLE ralasafe_sequence ( currentValue int, name varchar(100) NOT NULL, PRIMARY KEY( name ) ); CREATE TABLE usertype ( name varchar(100) NOT NULL, description varchar(500), userMetadataXML varchar(4000), PRIMARY KEY(name) ); CREATE TABLE application ( name varchar(100) NOT NULL, description varchar(500), PRIMARY KEY(name) ); CREATE TABLE applicationusertype ( appName varchar(100) NOT NULL, userTypeName varchar(100) NOT NULL, userMetadataStr varchar(1000), PRIMARY KEY(appName, userTypeName) );
以上脚本,也随发行包提供,文件名称是sql/create-database.sql。
用户元数据配置
用户元数据的目的,就是为了说明当前应用系统的用户信息保存在哪里,有哪些字段,对应的业务意义是什么。
在Ralasafe权限策略里面,钻取用户属性,我们使用业务意义的名称,而不是数据库列字段名称。
你可以在本地配置好用户元数据文件,然后通过Ralasafe web控制端安装。安装方法为,首先登陆Ralasafe web控制端,比如:http://localhost:8080/demo/ralasafe/designer.rls,在左侧“架构师”一栏中选择【用户元数据】菜单;接着在“用户元数据”页面中,填写描述,并选择对应的用户元数据文件;最后,点击【Submit】按钮,系统将开始安装用户元数据。操作过程如下图所示: <iframe id="iframe_0.8785943170114752" style="border: medium; border-image: none; width: 28px; height: 30px;" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.ralasafe.cn/wiki/lib/exe/fetch.php?w=600&media=%25E9%2585%258D%25E7%25BD%25AE%25E6%2589%258B%25E5%2586%258C:install_user_data.jpg&_=3208310%22%20style=%22border:none;max-width:1219px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.8785943170114752',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
当用户元数据被顺利安装后,会在权限数据库生成 9 张表:
ralasafe_businessdata,ralasafe_decision_entitlement,ralasafe_privilege,ralasafe_query,ralasafe_query_entitlement,ralasafe_ralasafe_userrole,ralasafe_role,ralasafe_roleprivilege 和ralasafe_usercategory。和前面手工创建的4张表一起,权限数据库应该共有 13 张表。如果没有 13 张表,说明安装用户元数据过程失败,需要重新安装。
Ralasafe 1.1-版本还有ralasafe-backup表。该表在1.2+版本不再使用。
如下是Ralasafe demo应用的用户元数据配置信息:
<?xml version="1.0"?> <user> <table ds="app" name="mainTable" sqlName="UserView" uniqueFields="loginName"> <field name="id" columnName="id" sqlType="int" javaType="java.lang.Integer" /> <field name="name" columnName="name" sqlType="varchar(40)" javaType="java.lang.String" displayName="Name" show="true" /> <field name="companyName" columnName="companyName" sqlType="varchar(100)" javaType="java.lang.String" displayName="Company" show="true" /> <field name="loginName" columnName="loginName" sqlType="varchar(40)" javaType="java.lang.String" /> <field name="password" columnName="password" sqlType="varchar(40)" javaType="java.lang.String" /> <field name="isManager" columnName="isManager" sqlType="int" javaType="java.lang.Boolean" /> <field name="companyId" columnName="companyId" sqlType="int" javaType="java.lang.Integer" /> <field name="departmentId" columnName="departmentId" sqlType="int" javaType="java.lang.Integer" /> <field name="companyLevel" columnName="companyLevel" sqlType="int" javaType="java.lang.Integer" /> </table> </user>
如上配置表示:
-
用户表在app数据源下,表名称是sqlName=“UserView”;
-
name=“mainTable”是目前固定写法,不能改变,在后继版本会引入新的意义;
-
这个表的unique fields是”loginName”,如果有多个字段(如loginName,companyId)确定唯一用户,中间用逗号隔开即可。这里填写的是字 段必须在field元素里面有配置,而且填写的是field name属性值,而不是columnName属性值;
-
field元素表示用户表的字段,每个字段的数据库列字段名称是什么(columnName属性),对应的业务意义是什么(name属性);
-
其中有2个业务意义字段是必须的:id和name,分别代表用户唯一id和用户名称;
-
field的show=“true”表示该字段在页面显示,displayName属性表示该字段在页面显示名称(测试权限策略的时候,比如测试某用户查 询订单权限时,Ralasafe弹出的选择选择用户对话框,将显示show=”true”的用户字段,各个字段的title就是 displayName)。
注:
-
用户元数据配置支持数据库表和数据库视图。如果你的用户信息分散在多个表里面,你只要创建一个视图将用户各个字段统一到视图里面,然后在table的sqlName属性设置为你新创建的视图。
Ralasafe demo的用户信息被统一到视图里面: create or replace view userview as select d."ID",d."LOGINNAME",d."NAME",d."PASSWORD",d."COMPANYID",d."DEPARTMENTID",d."ISMANAGER", d."HIREDATE",c.companylevel,c.name as companyName from demouser d, company c where d.companyid=c.id;
-
如果你的用户表没有id字段,但有一个唯一字段,那么可以将该字段等同于id字段设置到id里面。如:数据列myname是唯一字段,那么id字段可以设置为<field name=“id” columnName=“myname”….
-
如果你的用户表没有id字段,同时有多个唯一字段组合,那么你应该创建视图“做出”一个逻辑id字段,然后设置到id里面。如数据列myname和companyId是唯一字段组合,可以创建视图
CREATE VIEW myview AS SELECT myname||companyId AS userId...
XML文件存储路径配置
因为各个数据库之间平台移植,大字段往往造成很大困难。所以,我们干脆将XML文件存在文件系统里面,就不存放在数据库里面。这样移植就方便很多;Ralasafe也多了一项配置工作——XML文件存储路径。
打开WEB-INF/web.xml,找到如下代码行:
<servlet> <servlet-name>ralasafe</servlet-name> <servlet-class>org.ralasafe.servlet.RalasafeController</servlet-class> <init-param> <param-name>repositoryDir</param-name> <param-value>/home/julian/workspace/ralasafe/xml</param-value> </init-param> <init-param> <param-name>secured</param-name> <param-value>false</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet>
设置repositoryDir的参数值为你存放XML存储路径的地方,如:d:/yourproject/xml等。等安装往用户元数据后,系统会自动在该目录下生成一些目录。目录结构是:
${repositoryDir} |____ralasafe |____businessData |____query |____userCategory |____usertype
该配置也支持相对目录,只要new File(${repositoryDir})能找到对应目录即可。详情参考:论坛文章:配置repositoryDir的相对路径 。
相关推荐
Ralasafe的一大特点就是其开箱即用的特性,大部分配置可以通过图形化界面完成,减少了XML配置和Java编程的工作量,对开发者的技术门槛较低。 安装配置Ralasafe主要包括以下几个步骤: 1. **准备工作**:首先确保...
完成上述步骤后,开发者应参考Ralasafe配置手册配置数据源、用户元数据和XML文件存储路径。 RALASAFE开发实践的文档中还涵盖了权限的创建过程,包括基本实践步骤、权限信息和权限组信息的填写、权限的创建与删除。...
5. **配置Ralasafe**:参照《Ralasafe配置手册》完成数据源、用户元数据和XML文件存储路径等配置。 #### 三、创建权限 ##### 1. 基本实践步骤 - **创建权限**:确定需要哪些权限控制点。 - **功能级权限控制**:...
Ralasafe中文参考手册详细介绍了安装、配置、使用和开发等方面的内容,便于用户快速上手。社区论坛和邮件列表为用户提供交流平台,解答疑问和分享经验。 总结来说,Ralasafe中文参考手册是学习和使用Ralasafe的重要...
1.2升级版对ralasafe的配置信息存储方式进行了一次重大改革,即将原来的磁盘存储方式改为数据库存储。这一改变支持多种主流数据库,包括Oracle、MySQL、SQL Server等,极大地提高了数据的安全性和可维护性。 - **...
`Ralasafepdf实践.pdf`应该是Ralasafe的官方使用手册,涵盖安装、配置、策略管理、用户角色设置等步骤。手册将指导你如何快速搭建环境,并进行权限策略的定制。 **5. 数据库集成** `mysql数据库`文件可能包含用于...
ralasafe+ralasafe_demo
- **文档**:详细的用户手册和开发者指南,帮助理解ralasafe的工作原理和使用方法。 - **示例**:提供示例项目和配置文件,让开发者能够快速上手。 - **数据库脚本**:用于初始化`ralasafe`相关的数据库表结构和...
1. **安装与配置**:首先,需要将ralasafe的jar包部署到Tomcat的lib目录下,然后配置相应的Context XML文件,指定RalaSafe的配置文件位置。 2. **数据库准备**:在数据库中创建RalaSafe所需的表结构,导入初始数据...
"Ralasafe"是一款源自中国的开源权限管理中间件,它为各类J2EE应用程序提供了强大的权限控制解决方案。作为中间件,Ralasafe的核心价值在于帮助开发者轻松实现对用户权限的精细化管理和控制,确保系统的安全性和数据...
1. **快速启动**:展示如何快速配置和启动ralasafe,以进行权限验证。 2. **角色与策略创建**:演示如何通过代码或Web界面创建角色和策略。 3. **权限检查**:通过API进行权限检查,确保用户只能访问其被授权的资源...
3. **build.xml**: Ant构建工具的配置文件,用于编译和打包RalaSafe项目,是开发和部署过程中的关键。 4. **client**: 这个目录可能包含RalaSafe的客户端组件,如JavaScript库或者GWT(Google Web Toolkit)相关代码...
1. **安装与配置**:首先,需要下载并安装RalaSafe的相关依赖,包括数据库驱动、核心库和示例代码。配置文件中通常会定义数据库连接信息、策略存储方式(如内存、数据库)等。 2. **定义资源、操作与角色**:在...
2. **动态权限**:ralasafe 支持动态权限配置,允许在运行时根据业务需求调整权限策略,无需重启服务。 3. **多种认证方式**:ralasafe 兼容多种身份验证机制,如 LDAP、数据库、JaAS 等,可以方便地与现有认证系统...
**ralasafe1.2源码含数据库** `ralasafe`是一款开源的身份认证与访问控制框架,专注于安全权限管理,适用于Java企业级应用。在`ralasafe1.2`版本中,开发者可以获得完整的源代码,这为深入理解其工作原理、定制功能...
在`ralasafe学习.txt`文件中,可能会详细记录了学习Ralasafe的过程,包括如何安装、配置、创建角色和权限、集成到Java Web项目中等步骤。这个文件将帮助你快速理解和掌握Ralasafe的使用方法。 **实战应用** 在实际...
在Oracle环境下,这些脚本将用于建立和配置RalaSafe在数据库中的数据结构,是RalaSafe与数据库交互的基础。 最后,"ralasafe"目录很可能是RalaSafe中间件的核心代码或者相关资源。RalaSafe的源码分析可以帮助深入...