[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