JAAS 인증 및 권한 부여 응용 프로그램을 설계하고 있습니다. 인증 부분에서 사용자가 입력 한 사용자 이름과 비밀번호가 데이터베이스에서 검색 한 값과 일치합니다. 각 사용자마다 세 가지 원칙이 있습니다 , 암호, 위치). 인증에 성공하면 주체가 제목에 추가됩니다.이 부분은 정상적으로 작동합니다.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";
};
내가 발생할 코드의 다음 줄을 추가하면입니다 java.util.PropertyPermission에 ""java.security.auth.login.config ""(거부 LoginContext의. 액세스를 만들 수 없습니다 " "write") "
System.setSecurityManager(new SecurityManager());
System.setProperty("java.security.auth.login.config", configFile);
System.setProperty("java.security.policy", policyFile);
configFile과 policyFile은 각각 jaas 구성 파일과 정책 파일입니다. 문제를 해결하기 위해 내 정책 파일에 무엇을 추가 할 수 있습니까? 사전에 감사드립니다. 그런 다음에야
System.setProperty("java.security.auth.login.config", configFile);
System.setProperty("java.security.policy", policyFile);
그리고 :
나는 발생 다른 오류 "LoginContext를 만들 수 없습니다. 액세스 거부 ("java.util.PropertyPermission ""user.dir ""읽기 ")"System.setProperty ("java.security.auth.login.config", path); System.setProperty ("java.security.policy", policy); System.setSecurityManager (새 SecurityManager()); –
정책 파일에 몇 가지 권한을 부여했지만 오류가 없습니다. 데이터베이스 연결에 JDBC를 사용하고 있습니다. SQLPermission을 아직 부여하지 않았습니다. 응용 프로그램을 데이터베이스에 연결하는 코드는 SecurityException없이 자동으로 건너 뜁니다. –