From: Alexey L. <lou...@us...> - 2004-08-11 20:31:05
|
User: loubyansky Date: 04/08/11 13:30:54 Modified: src/main/org/jboss/proxy SecurityInterceptor.java Log: doPrivileged only if there is SecurityManager setup Revision Changes Path 1.10 +58 -29 jboss/src/main/org/jboss/proxy/SecurityInterceptor.java Index: SecurityInterceptor.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/proxy/SecurityInterceptor.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- SecurityInterceptor.java 9 Aug 2004 05:36:52 -0000 1.9 +++ SecurityInterceptor.java 11 Aug 2004 20:30:53 -0000 1.10 @@ -17,7 +17,7 @@ * The client-side proxy for an EJB Home object. * * @author <a href="mailto:mar...@jb...">Marc Fleury</a> -* @version $Revision: 1.9 $ +* @version $Revision: 1.10 $ */ public class SecurityInterceptor extends Interceptor @@ -37,14 +37,16 @@ public Object invoke(Invocation invocation) throws Throwable { - // Get Principal and credentials - Principal principal = GetPrincipalAction.getPrincipal(); + // Get Principal and credentials + SecurityActions sa = SecurityActions.UTIL.getSecurityActions(); + + Principal principal = sa.getPrincipal(); if (principal != null) { invocation.setPrincipal(principal); } - Object credential = GetCredentialAction.getCredential(); + Object credential = sa.getCredential(); if (credential != null) { invocation.setCredential(credential); @@ -53,33 +55,60 @@ return getNext().invoke(invocation); } - private static class GetPrincipalAction implements PrivilegedAction + interface SecurityActions { - static PrivilegedAction ACTION = new GetPrincipalAction(); - public Object run() - { - Principal principal = SecurityAssociation.getPrincipal(); - return principal; - } - static Principal getPrincipal() + class UTIL { - Principal principal = (Principal) AccessController.doPrivileged(ACTION); - return principal; - } - } + static SecurityActions getSecurityActions() + { + return System.getSecurityManager() == null ? NON_PRIVILEGED : PRIVILEGED; + } + } + + SecurityActions NON_PRIVILEGED = new SecurityActions() + { + public Principal getPrincipal() + { + return SecurityAssociation.getPrincipal(); + } + + public Object getCredential() + { + return SecurityAssociation.getCredential(); + } + }; + + SecurityActions PRIVILEGED = new SecurityActions() + { + private final PrivilegedAction getPrincipalAction = new PrivilegedAction() + { + public Object run() + { + return SecurityAssociation.getPrincipal(); + } + }; + + private final PrivilegedAction getCredentialAction = new PrivilegedAction() + { + public Object run() + { + return SecurityAssociation.getCredential(); + } + }; + + public Principal getPrincipal() + { + return (Principal)AccessController.doPrivileged(getPrincipalAction); + } + + public Object getCredential() + { + return AccessController.doPrivileged(getCredentialAction); + } + }; - private static class GetCredentialAction implements PrivilegedAction - { - static PrivilegedAction ACTION = new GetCredentialAction(); - public Object run() - { - Object credential = SecurityAssociation.getCredential(); - return credential; - } - static Object getCredential() - { - Object credential = AccessController.doPrivileged(ACTION); - return credential; - } + Principal getPrincipal(); + + Object getCredential(); } } |