1
4 package org.jyperion.j2ee.sample.sfsb;
5
6 import java.lang.reflect.Method;
7 import java.security.Principal;
8 import java.security.acl.Group;
9 import java.util.Enumeration;
10import java.util.Iterator;
11
12import javax.ejb.EJBContext;
13import javax.naming.InitialContext;
14import javax.naming.NamingException;
15import javax.security.auth.Subject;
16
17import org.jboss.security.SecurityProxy;
18
19
22public class CartBeanSecurityProxy implements SecurityProxy {
23
26 private ThreadLocal threadLocal = new ThreadLocal();
27
28
31 public void init(
32 Class arg0,
33 Class arg1,
34 Class arg2,
35 Class arg3,
36 Object arg4)
37 throws InstantiationException {
38 System.out.println("Initializing CartBeanSecurityProxy (5 args)...");
39 }
40
41
44 public void init(Class beanHome, Class beanRemote, Object securityManager)
45 throws InstantiationException {
46 System.out.println("!! Initializing CartBeanSecurityProxy (3 args)...");
47 }
48
49
52 public void invoke(Method method, Object[] args, Object bean)
53 throws Exception {
54 if (!(bean instanceof CartBean))
55 throw new SecurityException("Invalid bean instance for security proxy");
56
57 System.out.println("CartBeanSecurityProxy:: Methode: " + method.getName());
58
59 try {
60 InitialContext ic = new InitialContext();
61 Subject subject =
62 (Subject) ic.lookup("java:comp/env/security/subject");
63 Iterator principals = subject.getPrincipals().iterator();
64 while (principals.hasNext()) {
65 Principal p = (Principal) principals.next();
66 System.out.println(
67 "!! Principal ("
68 + p.getClass().getName()
69 + ") : "
70 + p.getName());
71 }
72 principals =
74 subject.getPrincipals(java.security.acl.Group.class).iterator();
75 if (principals.hasNext()) {
76 Group roles = (Group) principals.next();
77 Enumeration roleEnum = roles.members();
78 while (roleEnum.hasMoreElements()) {
79 System.out.println("!! Role: " + roleEnum.nextElement());
80 }
81 }
82 } catch (NamingException ne) {
83 System.out.println("Lookup on Subject failed " + ne.getLocalizedMessage());
84 throw new SecurityException("Unable to obtain active Subject");
85 }
86
87 }
93
94
97 public void invokeHome(Method method, Object[] args) throws Exception {
98 System.out.println("InvokeHome on " + method.getName());
99 }
00
01
04 public void setEJBContext(EJBContext ejbContext) {
05 System.out.println("Setting EJBContext ...");
06 this.threadLocal.set(ejbContext);
07 }
08}
09