1

我能够连接到 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",它工作正常。但是当我指定委托人时,它会通过抛出一个停止工作AccessControlException(即使我登录为“john”)。我想授予某些用户特定的权限,例如授予管理员对文件的读写权限。为什么它不起作用?

我试图不使用证书,因为我不希望用户与任何东西交互。

4

1 回答 1

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为您的操作类。

于 2015-05-13T17:36:42.260 回答