【发布时间】:2014-03-05 05:30:43
【问题描述】:
我正在设计一个 JAAS 身份验证和授权应用程序。在身份验证部分,用户输入的用户名和密码与从数据库中检索到的值进行匹配。每个用户有三个主体(用户名、密码、职位) .成功认证后,主体被添加到主题中。这部分工作正常。
问题出在授权部分(当我设置 SecurityManager 时),根据职位(经理或员工)授予权限。
政策文件是
grant codebase "/home/esamsar/NetBeansProjects/JAAS/*"
{
permission javax.security.auth.AuthPermission "createLoginContext.Sample";
permission javax.security.auth.AuthPermission "doAsPrivileged";
}
grant Principal PositionPrincipal "manager"
{
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "user.home", "read,write";
permission java.io.FilePermission "topsecurity.txt", "read";
};
grant Principal PositionPrincipal "employee"
{
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "user.home", "read,write";
};
添加以下代码行后,我遇到“无法创建 LoginContext。访问被拒绝(“java.util.PropertyPermission”“java.security.auth.login.config”“write”)”
System.setSecurityManager(new SecurityManager());
System.setProperty("java.security.auth.login.config", configFile);
System.setProperty( "java.security.policy", policyFile );
configFile 和policyFile 分别是jaas 配置文件和策略文件。 我可以在我的策略文件中添加什么来解决问题。提前致谢。
【问题讨论】:
-
当我在设置系统属性后最后设置安全管理器时遇到不同的错误“无法创建 LoginContext。访问被拒绝(“java.util.PropertyPermission”“user.dir”“read”) " System.setProperty("java.security.auth.login.config", 路径); System.setProperty(“java.security.policy”,策略); System.setSecurityManager(new SecurityManager());
-
我在策略文件中授予了更多权限,现在没有错误。我正在使用 JDBC 连接数据库。我还没有授予 SQLPermission。将应用程序连接到数据库的代码是在没有任何 SecurityException 的情况下静默跳过。
标签: java authorization jaas securitymanager