KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > ejb3 > test > dd > 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.ejb3.test.dd.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.SessionContext JavaDoc;
28 import javax.ejb.EJBException JavaDoc;
29 import javax.naming.InitialContext JavaDoc;
30 import javax.naming.Context JavaDoc;
31 import javax.naming.NamingException JavaDoc;
32
33 import org.jboss.logging.Logger;
34
35 /** A simple session bean for testing declarative security.
36
37  @author Scott.Stark@jboss.org
38  @version $Revision: 37459 $
39  */

40 public class RunAsTargetBean
41 {
42    static Logger log = Logger.getLogger(RunAsTargetBean.class);
43
44    private SessionContext JavaDoc sessionContext;
45
46    public void setSessionContext(SessionContext JavaDoc context)
47    {
48       sessionContext = context;
49    }
50
51    /**
52     * Validate the run-as principal and roles
53     */

54    public void checkRunAs()
55    {
56       Principal JavaDoc caller = sessionContext.getCallerPrincipal();
57       String JavaDoc callerName = caller.getName();
58       log.debug("checkRunAs, caller="+caller);
59       try
60       {
61          // Check the expected principal name
62
InitialContext JavaDoc ctx = new InitialContext JavaDoc();
63          Context JavaDoc enc = (Context JavaDoc) ctx.lookup("java:comp/env");
64          String JavaDoc name = (String JavaDoc) enc.lookup("runAsName");
65          if( name.equals(callerName) == false )
66             throw new EJBException JavaDoc("runAsName mismatch, "+name+"!="+callerName);
67          // Check the expected roles
68
String JavaDoc roles = (String JavaDoc) enc.lookup("runAsRoles");
69          StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(roles, ",");
70          while( st.hasMoreTokens() )
71          {
72             String JavaDoc role = st.nextToken();
73             boolean inRole = sessionContext.isCallerInRole(role);
74             String JavaDoc msg = "isCallerInRole("+role+"): "+inRole;
75             log.debug(msg);
76             if( inRole == false )
77                throw new EJBException JavaDoc("Failed check: "+msg);
78          }
79       }
80       catch(NamingException JavaDoc e)
81       {
82          throw new EJBException JavaDoc("Failed to access enc", e);
83       }
84    }
85
86 }
87
Popular Tags