[jboss-cvs] JBossAS SVN: r105904 - branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 9 15:59:59 EDT 2010


Author: mmoyses
Date: 2010-06-09 15:59:59 -0400 (Wed, 09 Jun 2010)
New Revision: 105904

Modified:
   branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/JndiLoginInitialContextFactory.java
   branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/SecurityAssociationActions.java
Log:
JBPAPP-4463: removing usage of legacy API

Modified: branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/JndiLoginInitialContextFactory.java
===================================================================
--- branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/JndiLoginInitialContextFactory.java	2010-06-09 19:46:57 UTC (rev 105903)
+++ branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/JndiLoginInitialContextFactory.java	2010-06-09 19:59:59 UTC (rev 105904)
@@ -22,6 +22,7 @@
 package org.jboss.security.jndi;
 
 import org.jboss.naming.NamingContextFactory;
+import org.jboss.security.SecurityContext;
 import org.jboss.security.SimplePrincipal;
 
 import javax.naming.Context;
@@ -84,6 +85,10 @@
       flag = (String) env.get("jnp.restoreLoginIdentity");
       if( flag != null )
          restoreLoginIdentity = Boolean.parseBoolean(flag);
+      SecurityContext initialSC = null;
+      if (restoreLoginIdentity)
+    	  initialSC = SecurityAssociationActions.getSecurityContext();
+      
       // See if the principal is a Principal or String
       if( principal instanceof Principal )
       {
@@ -95,14 +100,15 @@
          String username = principal.toString();
          securityPrincipal = new SimplePrincipal(username);
       }
-      SecurityAssociationActions.setPrincipalInfo(securityPrincipal, credentials, null);
+      SecurityContext sc = SecurityAssociationActions.createSecurityContext(securityPrincipal, credentials, null);
+      SecurityAssociationActions.setSecurityContext(sc);
       // Now return the context using the standard jnp naming context factory
       Context iniCtx = super.getInitialContext(env);
       if( restoreLoginIdentity )
       {
          // Use a proxy to pop the stack when the context is closed
          ClassLoader loader = SecurityAssociationActions.getContextClassLoader();
-         ContextProxy handler = new ContextProxy(iniCtx);
+         ContextProxy handler = new ContextProxy(iniCtx, initialSC);
          Class[] ifaces = {Context.class};
          iniCtx = (Context) Proxy.newProxyInstance(loader, ifaces, handler);
       }
@@ -115,9 +121,11 @@
    public static class ContextProxy implements InvocationHandler
    {
       private Context delegate;
-      ContextProxy(Context delegate)
+      private SecurityContext sc;
+      ContextProxy(Context delegate, SecurityContext sc)
       {
          this.delegate = delegate;
+         this.sc = sc;
       }
       public Object invoke(Object proxy, Method method, Object[] args)
          throws Throwable
@@ -139,7 +147,7 @@
                // Pop the security context on close
                try
                {
-                  SecurityAssociationActions.popPrincipalInfo();
+                  SecurityAssociationActions.setSecurityContext(sc);
                }
                catch(Throwable ignore)
                {

Modified: branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/SecurityAssociationActions.java
===================================================================
--- branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/SecurityAssociationActions.java	2010-06-09 19:46:57 UTC (rev 105903)
+++ branches/JBPAPP_5_1/security/src/main/org/jboss/security/jndi/SecurityAssociationActions.java	2010-06-09 19:59:59 UTC (rev 105904)
@@ -132,6 +132,26 @@
       });
    }
    
+   static SecurityContext createSecurityContext(final Principal p, final Object cred, final Subject subject)
+   {
+      return (SecurityContext) AccessController.doPrivileged(new PrivilegedAction<SecurityContext>()
+      {
+         public SecurityContext run()
+         {
+        	 SecurityContext sc = null;
+        	 try
+        	 {
+        		sc = SecurityContextFactory.createSecurityContext(p, cred, subject, "CLIENT_LOGIN_MODULE");
+        	 }
+        	 catch (Exception e)
+        	 {
+        		 throw new RuntimeException(e);
+        	 }
+            return sc;
+         }
+      });
+   }
+   
    static void pushSecurityContext(final Principal p, final Object cred, 
          final Subject subject, final String securityDomain)
    {



More information about the jboss-cvs-commits mailing list