1 22 package org.jboss.ejb3.security; 23 24 import javax.naming.InitialContext ; 25 import javax.naming.NamingException ; 26 import org.jboss.aop.Advisor; 27 import org.jboss.aop.InstanceAdvisor; 28 import org.jboss.aop.advice.AspectFactory; 29 import org.jboss.aop.joinpoint.Joinpoint; 30 import org.jboss.security.AuthenticationManager; 31 import org.jboss.security.RealmMapping; 32 import org.jboss.ejb3.Container; 33 34 public class RoleBasedAuthorizationInterceptorFactory implements AspectFactory 35 { 36 public Object createPerVM() 37 { 38 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 39 } 40 41 public Object createPerClass(Advisor advisor) 42 { 43 Object domain = null; 44 Container container = (Container)advisor; 45 try 46 { 47 InitialContext ctx = container.getInitialContext(); 48 org.jboss.annotation.security.SecurityDomain securityAnnotation = (org.jboss.annotation.security.SecurityDomain) advisor.resolveAnnotation(org.jboss.annotation.security.SecurityDomain.class); 49 domain = ctx.lookup("java:/jaas/" + securityAnnotation.value()); 50 } 51 catch (NamingException e) 52 { 53 throw new RuntimeException (e); 54 } 55 AuthenticationManager manager = (AuthenticationManager) domain; 56 RealmMapping mapping = (RealmMapping) domain; 57 if (manager == null) throw new RuntimeException ("Unable to find Security Domain"); 58 return new RoleBasedAuthorizationInterceptor(manager, mapping, container); 59 } 60 61 public Object createPerInstance(Advisor advisor, InstanceAdvisor instanceAdvisor) 62 { 63 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 64 } 65 66 public Object createPerJoinpoint(Advisor advisor, Joinpoint jp) 67 { 68 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 69 } 70 71 public Object createPerJoinpoint(Advisor advisor, InstanceAdvisor instanceAdvisor, Joinpoint jp) 72 { 73 throw new RuntimeException ("PER_VM not supported for this interceptor factory, only PER_CLASS"); 74 } 75 76 public String getName() 77 { 78 return getClass().getName(); 79 } 80 } 81 82 | Popular Tags |