Ralasafe访问控制(权限管理)中间件的配置工作非常少。因为项目发起人非常讨厌配置。因此,“己所不欲,勿施于人”,Ralasafe的配置也非常少。

Ralasafe配置工作只有3个:

  1. 数据源配置
  2. 用户元数据配置
  3. web.xml配置策略XML文件存储路径

权限逻辑配置,使用Ralasafe web控制端在线图形化设计,无需手工配置。

Ralasafe将来可能会采取图形化方式处理前面提到的3种配置工作。但现在还是让我们先熟悉一下配置工作吧。

数据源配置

 

配置入口

Ralasafe不仅强调权限与业务解耦合,也强调权限数据与业务数据解耦合,独立保存。

Ralasafe数据源的入口是WEB-INF/ralasafe/datasources.xml文件,里面配置2个数据源。

  1. 其中1个是name=“ralasafe”的权限数据源,该数据源里面将保存权限数据。configFile属性指该权限数据源的详细配置信息,名称随意,但对应的文件必须也在WEB-INF/ralasafe目录下;
  2. 另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里面的表和视图。

如下截图是,进入Ralasafe web控制端的查询设计界面,显示的数据库表和视图信息:

如果,我将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】按钮,系统将开始安装用户元数据。操作过程如下图所示:

当用户元数据被顺利安装后,会在权限数据库生成 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>

如上配置表示:

  1. 用户表在app数据源下,表名称是sqlName=“UserView”;
  2. name=“mainTable”是目前固定写法,不能改变,在后继版本会引入新的意义;
  3. 这个表的unique fields是”loginName”,如果有多个字段(如loginName,companyId)确定唯一用户,中间用逗号隔开即可。这里填写的是字 段必须在field元素里面有配置,而且填写的是field name属性值,而不是columnName属性值;
  4. field元素表示用户表的字段,每个字段的数据库列字段名称是什么(columnName属性),对应的业务意义是什么(name属性);
  5. 其中有2个业务意义字段是必须的:id和name,分别代表用户唯一id和用户名称;
  6. field的show=“true”表示该字段在页面显示,displayName属性表示该字段在页面显示名称(测试权限策略的时候,比如测试某用户查 询订单权限时,Ralasafe弹出的选择选择用户对话框,将显示show=”true”的用户字段,各个字段的title就是 displayName)。

弹出用户选择对话框截图:

注:

  1. 用户元数据配置支持数据库表和数据库视图。如果你的用户信息分散在多个表里面,你只要创建一个视图将用户各个字段统一到视图里面,然后在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;
  2. 如果你的用户表没有id字段,但有一个唯一字段,那么可以将该字段等同于id字段设置到id里面。如:数据列myname是唯一字段,那么id字段可以设置为<field name=“id” columnName=“myname”….
  3. 如果你的用户表没有id字段,同时有多个唯一字段组合,那么你应该创建视图“做出”一个逻辑id字段,然后设置到id里面。如数据列mynamecompanyId是唯一字段组合,可以创建视图

    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的相对路径

原文地址:https://www.cnblogs.com/skyme/articles/3208310.html

Ralasafe配置手册的更多相关文章

  1. Varnish缓存服务器的搭建配置手册

    Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...

  2. Ubuntu_10.04下Hadoop-0.20.2集群配置手册

    Ubuntu_10.04下Hadoop-0.20.2集群配置手册 一.软硬件环境的准备 下面的文章来自hadoopor.com,我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware ...

  3. nginx1.9.4 +php 5.5.29+yii2.0配置手册

    nginx1.9.4 +php 5.5.29+yii2.0配置手册 目录 一.    php5.5.29安装配置    2 二.    nginx1.9.4安装配置    2 三.    yii2.0 ...

  4. QC邮件转发工具Mail Direct安装配置手册

    QC邮件转发工具Mail Direct安装配置手册 2010-06-11 10:00:56| 分类: 软件测试 | 标签: |举报 |字号大中小 订阅 QC邮件转发工具安装配置手册 由于公司没有独立的 ...

  5. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  6. Git 安装配置手册

    Git 安装配置手册 首先我们要了解 Git 是类似于 SVN 用来管理项目的 首先要先下载 Git ,这个东西相当于一个核,是该功能的核心 下载地址(<https://gitforwindow ...

  7. 网站 HTTP 升级 HTTPS 完全配置手册

    网站 HTTP 升级 HTTPS 完全配置手册 今天,所有使用Google Chrome稳定版的用户迎来了v68正式版首个版本的发布,详细版本号为v68.0.3440.75,上一个正式版v67.0.3 ...

  8. 泛微云桥e-birdge之金蝶云之家集成配置手册

    最近在配置金蝶云之家与泛微ecology的打通,没有看官方文档,直接配置,一直配置不通,看了官方文档后知道了少配置参数了,转载一下,省得四处去找了. 泛微云桥e-birdge之金蝶云之家集成配置手册 ...

  9. linux服务器基本安全配置手册

    转:忘了在哪转的,直接复制到笔记里了,贴出来分享 假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素.一份正确的linux基本安全配置手册就显得格外重要. ...

随机推荐

  1. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

  2. Duplicate a whole line in Vim

    yy or Y to copy the line or dd to delete (cutting) the line then p to paste the copied or deleted te ...

  3. job中shell脚本异常(删除不存在容器),导致job被打断执行的问题 脚本优化方法

    参考:  主要是添加shell的异常处理 https://www.cnblogs.com/AmilyWilly/p/7211168.html?utm_source=itdadao&utm_me ...

  4. iOS9 CASpringAnimation 弹簧动画详解

    http://blog.csdn.net/zhao18933/article/details/47110469 1. CASpringAnimation iOS9才引入的动画类,它继承于CABaseA ...

  5. 2018-12-25-win10-uwp-release-因为-Entry-Point-Not-Found-无法启动

    title author date CreateTime categories win10 uwp release 因为 Entry Point Not Found 无法启动 lindexi 2018 ...

  6. USACO93网络流入门Drainage Ditches 排水渠(DCOJ 5130)

    题目描述 (传送门:http://poj.org/problem?id=1273翻译 by sxy(AFO的蒟蒻)) 每次约翰的农场下雨,Bessie的水池里的四叶草就会被弄破.这就意味着,这些四叶草 ...

  7. bzoj1179 Atm

    Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...

  8. Servlet会话跟踪和Cookies及HttpSession会话

    会话只是指一段指定的时间间隔. 会话跟踪是维护用户状态(数据)的一种方式.它也被称为servlet中的会话管理. Http协议是一个无状态的,所以我们需要使用会话跟踪技术来维护用户状态. 每次用户请求 ...

  9. 笔记: CC2540 和 CC2541 的区别

    CC2540 和 CC2541 的区别 CC2540 和 CC2541 是 BLE 低功耗蓝牙芯片,使用的是 51 内核. CC2540 有 USB 接口 CC2541 无. 价格上最早是 CC254 ...

  10. python列表、元组、字典、集合的简单操作

    一.列表.元组 1.常用操作函数 #Author:CGQ import copy #列表 ''' names=["ZhangYang","XiaoHei",&q ...