1 /** 2 * EasyBeans 3 * Copyright (C) 2006 Bull S.A.S. 4 * Contact: easybeans@objectweb.org 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 19 * USA 20 * 21 * -------------------------------------------------------------------------- 22 * $Id: StatelessRunAsBean.java 1151 2006-10-11 13:37:06Z benoitf $ 23 * -------------------------------------------------------------------------- 24 */ 25 26 package org.objectweb.easybeans.examples.security; 27 28 import javax.annotation.Resource; 29 import javax.annotation.security.DeclareRoles; 30 import javax.annotation.security.RunAs; 31 import javax.ejb.EJB; 32 import javax.ejb.Remote; 33 import javax.ejb.SessionContext; 34 import javax.ejb.Stateless; 35 36 /** 37 * Stateless Bean with secured methods. 38 * Two roles are declared : user and admin. 39 * @author Florent Benoit 40 */ 41 @Stateless 42 @Remote(StatelessRunAsRemote.class) 43 @DeclareRoles({"admin"}) 44 @RunAs("admin") 45 public class StatelessRunAsBean implements StatelessRunAsRemote { 46 47 /** 48 * SessionContext used to get current caller. 49 */ 50 @Resource 51 private SessionContext sessionContext; 52 53 /** 54 * Link to bean. 55 */ 56 @EJB 57 private StatelessRemote other; 58 59 60 /** 61 * Prints the current caller. 62 */ 63 public void printCurrentCaller() { 64 System.out.println("Caller is '" + sessionContext.getCallerPrincipal()); 65 } 66 67 /** 68 * Call method that is allowed only for admin. (but use run-as role). 69 */ 70 public void callBeanWithRunAsAdmin() { 71 other.onlyAdminAllowed(); 72 73 // Also call a method that permit two roles 74 other.someRolesAllowed(); 75 76 } 77 78 79 } 80