[jboss-cvs] JBossAS SVN: r67682 - trunk/ejb3/src/main/org/jboss/ejb3.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Dec 1 02:25:39 EST 2007
Author: anil.saldhana at jboss.com
Date: 2007-12-01 02:25:39 -0500 (Sat, 01 Dec 2007)
New Revision: 67682
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java
Log:
EJBTHREE-1140: introduce a bean principal for the call
Modified: trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java 2007-12-01 01:35:13 UTC (rev 67681)
+++ trunk/ejb3/src/main/org/jboss/ejb3/EJBContextImpl.java 2007-12-01 07:25:39 UTC (rev 67682)
@@ -67,6 +67,9 @@
protected transient T container;
protected transient RealmMapping rm;
protected B beanContext;
+
+ /** Principal for the bean associated with the call **/
+ private Principal beanPrincipal;
protected EJBContextImpl(B beanContext)
{
@@ -145,38 +148,42 @@
public Principal getCallerPrincipal()
{
- Principal principal = null;
-
- RealmMapping rm = container.getSecurityManager(RealmMapping.class);
-
- SecurityContext sc = SecurityContextAssociation.getSecurityContext();
- EJBAuthorizationHelper helper = new EJBAuthorizationHelper(sc);
-
- principal = helper.getCallerPrincipal(rm);
-
- if(principal == null)
+ if(beanPrincipal == null)
{
- //try the incoming principal
- principal = sc.getUtil().getUserPrincipal();
- if(rm != null)
- principal = rm.getPrincipal(principal);
- }
-
- if(principal == null)
- {
- EJBContainer ec = (EJBContainer) container;
- SecurityDomain domain =(SecurityDomain)ec.resolveAnnotation(SecurityDomain.class);
- String unauth = domain.unauthenticatedPrincipal();
- if(unauth != null && unauth.length() > 0)
- if(domain.unauthenticatedPrincipal() != null)
- principal = new SimplePrincipal(unauth);
- }
-
- // This method never returns null.
- if (principal == null)
- throw new java.lang.IllegalStateException("No valid security context for the caller identity");
-
- return principal;
+ Principal callerPrincipal = null;
+
+ RealmMapping rm = container.getSecurityManager(RealmMapping.class);
+
+ SecurityContext sc = SecurityContextAssociation.getSecurityContext();
+ EJBAuthorizationHelper helper = new EJBAuthorizationHelper(sc);
+
+ callerPrincipal = helper.getCallerPrincipal(rm);
+
+ if(callerPrincipal == null)
+ {
+ //try the incoming principal
+ callerPrincipal = sc.getUtil().getUserPrincipal();
+ if(rm != null)
+ callerPrincipal = rm.getPrincipal(callerPrincipal);
+ }
+
+ if(callerPrincipal == null)
+ {
+ EJBContainer ec = (EJBContainer) container;
+ SecurityDomain domain =(SecurityDomain)ec.resolveAnnotation(SecurityDomain.class);
+ String unauth = domain.unauthenticatedPrincipal();
+ if(unauth != null && unauth.length() > 0)
+ if(domain.unauthenticatedPrincipal() != null)
+ callerPrincipal = new SimplePrincipal(unauth);
+ }
+
+ // This method never returns null.
+ if (callerPrincipal == null)
+ throw new java.lang.IllegalStateException("No valid security context for the caller identity");
+
+ beanPrincipal = callerPrincipal;
+ }
+ return beanPrincipal;
}
More information about the jboss-cvs-commits
mailing list