【发布时间】:2015-11-03 08:44:34
【问题描述】:
我在问是否有任何方法可以让用户的权限继承自他分配的角色和组。
当我将权限分配给特定角色并将一个用户分配给该角色时,我无法获得从其角色继承的权限。
User john = new User("john");
john.setEmail("john@acme.com");
john.setFirstName("John");
john.setLastName("Smith");
IdentityManager identityManager = this.partitionManager.createIdentityManager();
identityManager.add(john);
identityManager.updateCredential(john, new Password("demo"));
Role superuser = new Role("superuser");
identityManager.add(superuser);
Role superuser = new Role("superuser");
identityManager.add(superuser);
// Create group "sales"
Group sales = new Group("sales");
identityManager.add(sales);
RelationshipManager relationshipManager = this.partitionManager.createRelationshipManager();
PermissionManager permissionManager = partitionManager.createPermissionManager();
// Make john a member of the "sales" group
addToGroup(relationshipManager, john, sales);
// Make mary a manager of the "sales" group
grantGroupRole(relationshipManager, john, superuser, sales);
// Grant the "superuser" application role to john
grantRole(relationshipManager, john, superuser);
// permissionManager.grantPermission(john, "ticket", "read");
//permissionManager.grantPermission(sales,"ticket", "read");
permissionManager.grantPermission(sales,"ticket", "read");
List<Permission> permissionsList=permissionManager.listPermissions(john);
if (permissionsList==null || permissionsList.isEmpty())
System.err.println("User John doesn't have a permission list");
for (Permission per:permissionsList){
System.out.println("User John permitted: "+per.getOperation()+" on "+per.getResource());
}
这是输出:
11:38:07,102 ERROR [stderr] (ServerService Thread Pool -- 110) User John doesn't have a permission list
有什么 API 可以解决这个问题吗?
【问题讨论】:
-
我可能是错的,但我认为
listPermissions(resource)会返回一个具有到指定资源权限的受让人列表(在你的例子中是用户“john”),不是该资源对其他资源拥有哪些权限; -
感谢@greenSocksRock 的回复,实际上我已经切换回 Apache shiro,但为什么不让我尝试测试一下您的解决方案。
-
如果您仍在评估不同的安全框架并需要丰富的 API 来检索权限或受保护的对象,请查看开源 OACC framework。刚刚在DZone 上发布了它与其他安全框架的比较说明。 (披露:我是合著者和维护者)
-
好的,谢谢,我去看看。
-
您好,我有一个关于 OACC 框架的问题,它是否支持集群部署?
标签: picketlink