上页 目录 下页
非角色权限 移植

保护应用安全

Ralasafe的GUI界面非常友好易用,也非常强大。因此,在生产环境我们必须要保证该界面的访问安全性。另外,ralasafe还自带有一些filter,可以帮助打造更好的安全系统,编写更少的代码。

Url 访问权限控制

当url地址如"/foo/bar.jsp"被访问的时候,我们其实可以判断这个url是否应该被保护。如果它应该被保护,在RBAC模型中势必有一个权限对应该url。换句话说,如果有个权限指向某url,那么该url是必须受到保护的,严禁未授权访问。

当您在ralasafe管理界面创建权限的时候,我们强烈建议您输入其对应的url。Ralasafe支持带有参数的url,如"employMng?op=add"。

只需将 org.ralasafe.webFilter.UrlAclFilter 配置到web.xml即可,ralasafe将替您检查url访问。如果该url是受保护的,ralasafe的处理步骤如下:

  1. 如果用户没有登录,转到登录界面;
  2. 如果用户已经登录,但没有授权访问该url,转到拒绝页面;
  3. 如果用户被授权访问该url,那么允许其访问,继续执行其他filters。

更多信息阅读 javadoc

登录控制

org.ralasafe.webFilter.LoginFilter 可以帮助您控制哪些页面需要用户登录后查看,如果没有登录转到登录页面。而且该filter还能帮助您验证用户名、密码。只需将该filter配置到web.xml即可。

更多信息阅读 javadoc

让Ralasafe安全!

在生产环境中,我们必须要保护ralasafe安全。只有被授权的用户才能访问ralasafe的GUI。

Ralasafe将GUI分为3大权限,如下图示:

  1. 如果登录用户具有 "Policy Admin" 权限,他/她就能设计策略,管理权限,给权限授权策略;这样面板将会显示:权限面板、用户分类面板、业务数据面板、查询面板和备份面板;
  2. 如果登录用户具有 "Assign Role To User" 权限,他/她就能给一些用户赋角色;
  3. 如果登录用户具有 "Role Admin" 权限,他/她就能管理角色。

我们进一步研究如果登录用户具有 "Assign Role To User" 权限,那么他/她能给哪些用户赋角色呢,全部用户还是部分?

Ralasafe将 "Assign Role To User" 看做查询权限。给该权限赋予查询策略,就能解决这个问题:“他/她能给哪些用户赋角色”。

以ralasafe demo应用为例,我们将实现这样的需求:

  1. 总部用户Alexis Stark,可以给所有人赋角色;
  2. 分公司用户像John Smith,能给其所在的分公司及下属子公司用户赋角色;
  3. 子公司用户像Camylle Boyd,只能给其所在的子公司用户赋角色。

采取以下步骤,我们就能做到:

步骤 屏幕截图

1, 在 {ralasafe-demo-webapp}/WEB-INF/classes目录下创建demo目录,在该目录下新建 DemoUser.java,并编辑它;

注意:

  1. 该类必须继承org.ralasafe.db.MapStorgeObject;
  2. 除了id字段外,它还还有指定在面板显示的用户字段;
  3. 每个字段的设置方法,都要调用父类的put方法: super.put( "..", ...)。
package demo;

import org.ralasafe.db.MapStorgeObject;

public class DemoUser extends MapStorgeObject {
	private Integer id;
	private String name;
	private String companyName;
	
	public Integer getId() {
		return id;
	}
	public void setId( Integer id ) {
		this.id=id;
		super.put( "id", id );
	}
	public String getName() {
		return name;
	}
	public void setName( String name ) {
		this.name=name;
		super.put( "name", name );
	}
	public String getCompanyName() {
		return companyName;
	}
	public void setCompanyName( String companyName ) {
		this.companyName=companyName;
		super.put( "companyName", companyName );
	}
}
2, 使用ralasafe-{version-number}.jar类库编译; javac -classpath .;../lib/ralasafe-1.0-rc1-v20100717.jar demo/DemoUser.java
3, 设计查询"All users";
4, 设计查询"Users in the same branch or sub-branches" 和查询 "Users in the same sub-branch";(您可以复制 "All users",然后做少量修改)  
5, 给 "Assign Role To User" 授权查询策略;
6, 将角色 "Ralasafe Administrator" 赋给用户 Alexis Stark、John Smith和Camylle Boyd;
7, 启用ralasafe的安全控制,在web.xml->StartupServlet->secured。将参数值改为true,重启tomcat;
<init-param>
<param-name>secured</param-name>
<param-value>true</param-value>
</init-param>
8, 使用demo的登录界面登录, 然后转到 ralasafe gui界面。右图表示John Smith在登录界面登录后,转到ralasafe gui界面,用户面板显示了27个用户,他能为这27名用户赋角色。
上页 目录 下页
非角色权限 移植