KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > web > ejb > RunAsTargetBean


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.test.web.ejb;
23
24 import java.security.Principal JavaDoc;
25 import java.util.StringTokenizer JavaDoc;
26 import javax.ejb.CreateException JavaDoc;
27 import javax.ejb.SessionBean JavaDoc;
28 import javax.ejb.SessionContext JavaDoc;
29 import javax.ejb.EJBException JavaDoc;
30 import javax.naming.InitialContext JavaDoc;
31 import javax.naming.Context JavaDoc;
32 import javax.naming.NamingException JavaDoc;
33
34 import org.jboss.logging.Logger;
35
36 /** A simple session bean for testing declarative security.
37
38  @author Scott.Stark@jboss.org
39  @version $Revision: 37406 $
40  */

41 public class RunAsTargetBean implements SessionBean JavaDoc
42 {
43    static Logger log = Logger.getLogger(RunAsTargetBean.class);
44
45    private SessionContext JavaDoc sessionContext;
46
47    public void ejbCreate() throws CreateException JavaDoc
48    {
49       log.debug("ejbCreate() called");
50    }
51
52    public void ejbActivate()
53    {
54       log.debug("ejbActivate() called");
55    }
56
57    public void ejbPassivate()
58    {
59       log.debug("ejbPassivate() called");
60    }
61
62    public void ejbRemove()
63    {
64       log.debug("ejbRemove() called");
65    }
66
67    public void setSessionContext(SessionContext JavaDoc context)
68    {
69       sessionContext = context;
70    }
71
72    /**
73     * Validate the run-as principal and roles
74     */

75    public void checkRunAs()
76    {
77       Principal JavaDoc caller = sessionContext.getCallerPrincipal();
78       String JavaDoc callerName = caller.getName();
79       log.debug("checkRunAs, caller="+caller);
80       try
81       {
82          // Check the expected principal name
83
InitialContext JavaDoc ctx = new InitialContext JavaDoc();
84          Context JavaDoc enc = (Context JavaDoc) ctx.lookup("java:comp/env");
85          String JavaDoc name = (String JavaDoc) enc.lookup("runAsName");
86          if( name.equals(callerName) == false )
87             throw new EJBException JavaDoc("runAsName mismatch, "+name+"!="+callerName);
88          // Check the expected roles
89
String JavaDoc roles = (String JavaDoc) enc.lookup("runAsRoles");
90          StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(roles, ",");
91          while( st.hasMoreTokens() )
92          {
93             String JavaDoc role = st.nextToken();
94             boolean inRole = sessionContext.isCallerInRole(role);
95             String JavaDoc msg = "isCallerInRole("+role+"): "+inRole;
96             log.debug(msg);
97             if( inRole == false )
98                throw new EJBException JavaDoc("Failed check: "+msg);
99          }
100       }
101       catch(NamingException JavaDoc e)
102       {
103          throw new EJBException JavaDoc("Failed to access enc", e);
104       }
105    }
106
107 }
108
Popular Tags