如何在Policy中授予用户权限?

时间:2015-05-06 18:35:57

标签: java policy principal

我可以连接到LDAP服务器并验证用户身份。我还使用了一个如下所示的策略文件:

grant codeBase "file:/C:/Codebase/-",
 principal java.security.Principal "john" {
  permission java.util.PropertyPermission "user.home", "read";
  permission java.util.PropertyPermission "java.home", "read";
  permission javax.security.auth.AuthPermission "createLoginContext.TestLdap";
};

如果我删除了行principal java.security.Principal "john",它就可以了。但是当我指定Principal时,它会通过抛出AccessControlException来停止工作(甚至我记录为" john")。我想授予一些用户特定的权限,例如授予管理员读取和写入文件的权限。为什么不起作用?

我正在尝试不使用证书,因为我不希望用户与任何内容进行交互。

1 个答案:

答案 0 :(得分:1)

我在阅读个人信息之前发现我正在使用java代码注销(忘记删除测试的那部分)。此外,上面的代码中还有另一个错误。应该是这样的:

grant codeBase "file:/C:/Codebase/-" {
   permission javax.security.auth.AuthPermission "doAsPrivileged";
   permission javax.security.auth.AuthPermission "createLoginContext.TestLdap";
};

grant codeBase "file:/C:/Deveop/Codebase2/-", 
principal com.sun.security.auth.UserPrincipal "john" {
  permission java.util.PropertyPermission "user.home", "read";
  permission java.util.PropertyPermission "java.home", "read";

};

此外,请务必致电Subject.doAsPrivileged(Subject subject, PrivilegedAction<Object> action, null)并实施PrivilegedAction作为您的操作类。