1 28 package net.sf.jguard.core.authorization.policy; 29 30 import java.security.AccessControlContext ; 31 import java.security.AccessControlException ; 32 import java.security.AccessController ; 33 import java.security.Permission ; 34 import java.security.PermissionCollection ; 35 import java.security.Policy ; 36 import java.security.ProtectionDomain ; 37 import java.util.Set ; 38 39 import javax.security.auth.Subject ; 40 41 42 49 public class LocalAccessController { 50 51 private Policy policy; 52 53 public LocalAccessController(Policy policy){ 54 this.policy = policy; 55 } 56 57 58 64 public void checkPermission(Permission permission){ 65 AccessControlContext acc = (AccessControlContext )AccessController.getContext(); 66 Subject subject = Subject.getSubject(acc); 67 if(acc==null){ 68 return; 70 } 71 if(subject==null){ 72 return; 78 } 79 if(permission == null){ 80 throw new NullPointerException (" permission provided is null "); 81 } 82 83 Set principals = subject.getPrincipals(); 84 ProtectionDomain domain = ProtectionDomainUtils.getEmptyProtectionDomain(principals); 85 PermissionCollection permColl = policy.getPermissions(domain); 86 if (!permColl.implies(permission)) { 87 StringBuffer sb = new StringBuffer (" permission "); 88 throw new AccessControlException (sb.append(permission.toString()).append(" is not granted ").toString(),permission); 89 } 90 } 91 92 } 93 | Popular Tags |