[jboss-cvs] JBossAS SVN: r105902 - trunk/security/src/main/java/org/jboss/security/jndi.

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


Author: mmoyses
Date: 2010-06-09 15:25:53 -0400 (Wed, 09 Jun 2010)
New Revision: 105902

Modified:
   trunk/security/src/main/java/org/jboss/security/jndi/JndiLoginInitialContextFactory.java
   trunk/security/src/main/java/org/jboss/security/jndi/SecurityAssociationActions.java
Log:
JBAS-8089: removing usage of legacy API

Modified: trunk/security/src/main/java/org/jboss/security/jndi/JndiLoginInitialContextFactory.java
===================================================================
--- trunk/security/src/main/java/org/jboss/security/jndi/JndiLoginInitialContextFactory.java	2010-06-09 18:52:11 UTC (rev 105901)
+++ trunk/security/src/main/java/org/jboss/security/jndi/JndiLoginInitialContextFactory.java	2010-06-09 19:25:53 UTC (rev 105902)
@@ -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: trunk/security/src/main/java/org/jboss/security/jndi/SecurityAssociationActions.java
===================================================================
--- trunk/security/src/main/java/org/jboss/security/jndi/SecurityAssociationActions.java	2010-06-09 18:52:11 UTC (rev 105901)
+++ trunk/security/src/main/java/org/jboss/security/jndi/SecurityAssociationActions.java	2010-06-09 19:25:53 UTC (rev 105902)
@@ -131,6 +131,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