[jboss-cvs] Picketbox SVN: r258 - in trunk/security-jboss-sx: jbosssx/src/main/java/org/jboss/security/auth/message/config and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Sep 21 18:01:09 EDT 2011
Author: sguilhen at redhat.com
Date: 2011-09-21 18:01:09 -0400 (Wed, 21 Sep 2011)
New Revision: 258
Removed:
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java
Modified:
trunk/security-jboss-sx/jbosssx/pom.xml
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java
trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java
trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java
trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java
trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java
trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java
trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java
trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java
trunk/security-jboss-sx/parent/pom.xml
Log:
SECURITY-621: Updated JASPI dependency and adapted code to the new API
Modified: trunk/security-jboss-sx/jbosssx/pom.xml
===================================================================
--- trunk/security-jboss-sx/jbosssx/pom.xml 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/pom.xml 2011-09-21 22:01:09 UTC (rev 258)
@@ -116,8 +116,8 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-jaspi-api</artifactId>
+ <groupId>org.jboss.spec.javax.security.auth.message</groupId>
+ <artifactId>jboss-jaspi-api_1.0_spec</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
Deleted: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -1,304 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.security.auth.message.config;
-
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.UUID;
-
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.config.AuthConfigFactory;
-import javax.security.auth.message.config.AuthConfigProvider;
-import javax.security.auth.message.config.RegistrationListener;
-import javax.security.auth.message.config.AuthConfigFactory.RegistrationContext;
-
-import org.jboss.logging.Logger;
-
-//$Id$
-
-/**
- * Delegate that handles the AuthProvider registration for a
- * layer and an Application Context
- * @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
- * @since May 15, 2006
- * @version $Revision$
- */
-public class AuthProviderRegistrationDelegate
-{
- private static Logger log = Logger.getLogger(AuthProviderRegistrationDelegate.class);
-
- //TODO: Improve the data structures
-
- /**
- * Map of String key to provider
- */
- private Map<String,AuthConfigProvider> keyProviderMap = new HashMap<String,AuthConfigProvider>();
-
- /**
- * Map of key to listener
- */
- private Map<String,RegistrationListener> keyListenerMap = new HashMap<String,RegistrationListener>();
-
- /**
- * Map of registration id to description
- */
- private Map<String,String> idToDescriptionMap = new HashMap<String,String>();
-
- /**
- * Map of registration id to key
- */
- private Map<String,String> idKeyMap = new HashMap<String,String>();
-
- /**
- * Map of provider to a list of registration ids
- */
- private Map<AuthConfigProvider,List<String>> providerToIDListMap =
- new HashMap<AuthConfigProvider,List<String>>();
-
-
- public AuthProviderRegistrationDelegate()
- {
- }
-
- /**
- * @see AuthConfigFactory#detachListener(RegistrationListener, String, String)
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public String[] detachListener(RegistrationListener listener, String layer,
- String appContext)
- {
- if(listener == null)
- throw new IllegalArgumentException("listener is null");
- String[] arr = new String[0];
- String input = (layer + "_" + appContext).toUpperCase();
- String allLayer = ("NULL" + "_" + appContext).toUpperCase();
- String allContext = (layer + "_" + "NULL").toUpperCase();
- String general = "NULL" + "_" + "NULL";
-
- RegistrationListener origListener = null;
- String key = null;
- for(int i = 0 ; i < 4 && origListener == null; i++)
- {
- if(i == 0) key = input;
- if(i == 1) key = allLayer;
- if(i == 2) key = allContext;
- if(i == 3) key = general;
- origListener = (RegistrationListener)keyListenerMap.get(key);
- }
-
- if(origListener == listener)
- {
- keyListenerMap.remove(key);
- //Get the ID List
- AuthConfigProvider provider = (AuthConfigProvider)keyProviderMap.get(key);
- if(provider != null)
- {
- List list = (List)providerToIDListMap.get(provider);
- arr = new String[list.size()];
- list.toArray(arr);
- }
- }
- return arr;
- }
-
- /**
- * @see AuthConfigFactory#getConfigProvider(String, String, RegistrationListener)
- */
- public AuthConfigProvider getConfigProvider(String layer, String appContext,
- RegistrationListener listener)
- {
- if(appContext == null)
- appContext = " ";
- String input = (layer + "_" + appContext).toUpperCase();
- String allLayer = ("NULL" + "_" + appContext).toUpperCase();
- String allContext = (layer + "_" + "NULL").toUpperCase();
- String general = "NULL" + "_" + "NULL";
- String blank = (layer + "_" + " ").toUpperCase();
-
- AuthConfigProvider acp = null;
- String key = null;
- for(int i = 0 ; i < 5 && acp == null; i++)
- {
- if(i == 0) key = input;
- if(i == 1) key = allLayer;
- if(i == 2) key = allContext;
- if(i == 3) key = general;
- if(i == 4) key = blank;
- acp = (AuthConfigProvider)keyProviderMap.get(key);
- }
- if(acp != null && listener != null)
- this.keyListenerMap.put(key,listener);
-
- return acp;
- }
-
- /**
- * @see AuthConfigFactory#getRegistrationContext(String)
- */
- public RegistrationContext getRegistrationContext(String registrationID)
- {
- final String description = (String)idToDescriptionMap.get(registrationID);
- String key = (String)idKeyMap.get(registrationID);
- StringTokenizer st = new StringTokenizer(key, "_");
- if(st.countTokens() < 2)
- throw new IllegalStateException("Invalid key obtained="+key);
- final String layer = st.nextToken();
- final String appCtx = st.nextToken();
-
- return new RegistrationContext()
- {
- public String getAppContext()
- {
- return appCtx.equals("NULL") ? null : appCtx;
- }
-
- public String getDescription()
- {
- return description;
- }
-
- public String getMessageLayer()
- {
- return layer.equals("NULL")? null : layer;
- }
-
- public boolean isPersistent()
- {
- return false;
- }
- };
- }
-
- /**
- * @see AuthConfigFactory#getRegistrationIDs(AuthConfigProvider)
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public String[] getRegistrationIDs(AuthConfigProvider provider)
- {
- List al = new ArrayList();
- if(provider == null)
- {
- al.addAll(idToDescriptionMap.keySet());
- }
- else
- {
- List list = (List)this.providerToIDListMap.get(provider);
- if(list != null)
- al.addAll(list);
- }
- String[] sarr = new String[al.size()];
- al.toArray(sarr);
- return sarr;
- }
-
- /**
- * @see AuthConfigFactory#registerConfigProvider(String, Map, String, String, String)
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public String registerConfigProvider(String className, Map properties,
- String layer, String appContext, String description)
- throws AuthException, SecurityException
- {
- if(className == null || className.length() == 0)
- throw new IllegalArgumentException("className is null or zero length");
-
- //Instantiate the provider
- AuthConfigProvider acp = null;
- try
- {
- Class provClass = SecurityActions.getContextClassLoader().loadClass(className);
- Constructor ctr = provClass.getConstructor(new Class[] {Map.class});
- acp = (AuthConfigProvider)ctr.newInstance(new Object[] {properties});
- }
- catch(Exception e)
- {
- log.error("Cannot register provider:"+className+":",e);
- throw new AuthException("Cannot register Provider "+ className + ":reason="+e);
- }
-
- return this.registerConfigProvider(acp, layer, appContext, description);
- }
-
- @SuppressWarnings({"unchecked", "rawtypes"})
- public String registerConfigProvider(AuthConfigProvider provider,
- String layer, String appContext, String description)
- {
- if(provider == null)
- throw new IllegalArgumentException("provider is null");
-
- StringBuilder key = new StringBuilder();
- key.append(layer == null ? "NULL" : layer.toUpperCase());
- key.append("_");
- key.append(appContext == null ? "NULL" : appContext.toUpperCase());
-
- String keystr = key.toString();
- keyProviderMap.put(keystr,provider);
-
- //Generate a GUID
- UUID guid = UUID.randomUUID();
- String providerID = guid.toString();
- this.idKeyMap.put(providerID, keystr);
- List list = (List)this.providerToIDListMap.get(provider);
- if(list == null)
- {
- list = new ArrayList();
- }
- list.add(providerID);
- this.providerToIDListMap.put(provider,list);
- if(description != null)
- this.idToDescriptionMap.put(providerID, description);
-
- //Check if their is a pre-existing listener
- RegistrationListener listener = (RegistrationListener)keyListenerMap.get(keystr);
- if(listener != null)
- listener.notify(layer,appContext);
-
- return providerID;
- }
-
- /**
- * @see AuthConfigFactory#removeRegistration(String)
- */
- public boolean removeRegistration(String registrationID)
- {
- if(registrationID == null)
- throw new IllegalArgumentException("registrationID is null");
-
- String key = (String)idKeyMap.get(registrationID);
- if(key != null)
- {
- RegistrationListener listener = (RegistrationListener)this.keyListenerMap.get(key);
- RegistrationContext rc = this.getRegistrationContext(registrationID);
-
- this.keyProviderMap.remove(key);
- //Notify the listener of the change
- if(listener != null)
- listener.notify(rc.getMessageLayer(),rc.getAppContext());
- return true;
- }
- return false;
- }
-}
\ No newline at end of file
Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -1,121 +1,331 @@
/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.security.auth.message.config;
-
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.UUID;
-import javax.security.auth.message.AuthException;
import javax.security.auth.message.config.AuthConfigFactory;
import javax.security.auth.message.config.AuthConfigProvider;
import javax.security.auth.message.config.RegistrationListener;
+import org.jboss.logging.Logger;
+
//$Id$
/**
- * Default Authentication Configuration Factory
- * @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
- * @since May 15, 2006
- * @version $Revision$
+ * Default Authentication Configuration Factory
+ *
+ * @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
+ * @since May 15, 2006
+ * @version $Revision$
*/
public class JBossAuthConfigFactory extends AuthConfigFactory
-{
- private AuthProviderRegistrationDelegate delegate = null;
-
+{
+ private static Logger log = Logger.getLogger(JBossAuthConfigFactory.class);
+
+ /**
+ * Map of String key to provider
+ */
+ private Map<String, AuthConfigProvider> keyProviderMap = new HashMap<String, AuthConfigProvider>();
+
+ /**
+ * Map of key to listener
+ */
+ private Map<String, RegistrationListener> keyListenerMap = new HashMap<String, RegistrationListener>();
+
+ /**
+ * Map of registration id to description
+ */
+ private Map<String, String> idToDescriptionMap = new HashMap<String, String>();
+
+ /**
+ * Map of registration id to key
+ */
+ private Map<String, String> idKeyMap = new HashMap<String, String>();
+
+ /**
+ * Map of provider to a list of registration ids
+ */
+ private Map<AuthConfigProvider, List<String>> providerToIDListMap = new HashMap<AuthConfigProvider, List<String>>();
+
+ /**
+ * <p>
+ * Creates an instance of {@code JBossAuthConfigFactory}.
+ * </p>
+ */
public JBossAuthConfigFactory()
- {
- delegate = new AuthProviderRegistrationDelegate();
- Map<String,Object> props = new HashMap<String,Object>();
- JBossAuthConfigProvider provider = new JBossAuthConfigProvider(props);
- //register a few default providers for the layers
- delegate.registerConfigProvider(provider, "HTTP", " ", "Default Provider");
- delegate.registerConfigProvider(provider, "HttpServlet", " ", "Default Provider");
+ {
+ Map<String, Object> props = new HashMap<String, Object>();
+ JBossAuthConfigProvider provider = new JBossAuthConfigProvider(props, null);
+ // register a few default providers for the layers
+ this.registerConfigProvider(provider, "HTTP", " ", "Default Provider");
+ this.registerConfigProvider(provider, "HttpServlet", " ", "Default Provider");
}
-
- /**
- * @see AuthConfigFactory#detachListener(RegistrationListener, String, String)
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#detachListener(javax.security.auth.message.config.RegistrationListener, java.lang.String, java.lang.String)
*/
- public String[] detachListener(RegistrationListener listener, String layer,
- String appContext)
- {
- return delegate.detachListener(listener,layer,appContext);
+ public String[] detachListener(RegistrationListener listener, String layer, String appContext)
+ {
+
+ if (listener == null)
+ throw new IllegalArgumentException("listener is null");
+
+ String[] arr = new String[0];
+ String input = (layer + "_" + appContext).toUpperCase();
+ String allLayer = ("NULL" + "_" + appContext).toUpperCase();
+ String allContext = (layer + "_" + "NULL").toUpperCase();
+ String general = "NULL" + "_" + "NULL";
+
+ RegistrationListener origListener = null;
+ String key = null;
+ for (int i = 0; i < 4 && origListener == null; i++)
+ {
+ if (i == 0)
+ key = input;
+ if (i == 1)
+ key = allLayer;
+ if (i == 2)
+ key = allContext;
+ if (i == 3)
+ key = general;
+ origListener = (RegistrationListener) keyListenerMap.get(key);
+ }
+
+ if (origListener == listener)
+ {
+ keyListenerMap.remove(key);
+ // Get the ID List
+ AuthConfigProvider provider = (AuthConfigProvider) keyProviderMap.get(key);
+ if (provider != null)
+ {
+ List<String> list = providerToIDListMap.get(provider);
+ arr = new String[list.size()];
+ list.toArray(arr);
+ }
+ }
+ return arr;
}
-
- /**
- * @see AuthConfigFactory#getConfigProvider(String, String, RegistrationListener)
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#getConfigProvider(java.lang.String, java.lang.String, javax.security.auth.message.config.RegistrationListener)
*/
- public AuthConfigProvider getConfigProvider(String layer, String appContext,
- RegistrationListener listener)
- {
- return delegate.getConfigProvider(layer, appContext, listener);
+ public AuthConfigProvider getConfigProvider(String layer, String appContext, RegistrationListener listener)
+ {
+ if (appContext == null)
+ appContext = " ";
+ String input = (layer + "_" + appContext).toUpperCase();
+ String allLayer = ("NULL" + "_" + appContext).toUpperCase();
+ String allContext = (layer + "_" + "NULL").toUpperCase();
+ String general = "NULL" + "_" + "NULL";
+ String blank = (layer + "_" + " ").toUpperCase();
+
+ AuthConfigProvider acp = null;
+ String key = null;
+ for (int i = 0; i < 5 && acp == null; i++)
+ {
+ if (i == 0)
+ key = input;
+ if (i == 1)
+ key = allLayer;
+ if (i == 2)
+ key = allContext;
+ if (i == 3)
+ key = general;
+ if (i == 4)
+ key = blank;
+ acp = (AuthConfigProvider) keyProviderMap.get(key);
+ }
+
+ if (acp != null && listener != null)
+ this.keyListenerMap.put(key, listener);
+
+ return acp;
}
-
- /**
- * @see AuthConfigFactory#getRegistrationContext(String)
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#getRegistrationContext(java.lang.String)
*/
public RegistrationContext getRegistrationContext(String registrationID)
- {
- return delegate.getRegistrationContext(registrationID);
+ {
+ final String description = (String) idToDescriptionMap.get(registrationID);
+ String key = (String) idKeyMap.get(registrationID);
+ StringTokenizer st = new StringTokenizer(key, "_");
+ if (st.countTokens() < 2)
+ throw new IllegalStateException("Invalid key obtained=" + key);
+ final String layer = st.nextToken();
+ final String appCtx = st.nextToken();
+
+ return new RegistrationContext()
+ {
+ public String getAppContext()
+ {
+ return appCtx.equals("NULL") ? null : appCtx;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public String getMessageLayer()
+ {
+ return layer.equals("NULL") ? null : layer;
+ }
+
+ public boolean isPersistent()
+ {
+ return false;
+ }
+ };
}
-
- /**
- * @see AuthConfigFactory#getRegistrationIDs(AuthConfigProvider)
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#getRegistrationIDs(javax.security.auth.message.config.AuthConfigProvider)
*/
public String[] getRegistrationIDs(AuthConfigProvider provider)
- {
- return delegate.getRegistrationIDs(provider);
+ {
+ List<String> al = new ArrayList<String>();
+ if (provider == null)
+ {
+ al.addAll(idToDescriptionMap.keySet());
+ }
+ else
+ {
+ List<String> list = this.providerToIDListMap.get(provider);
+ if (list != null)
+ al.addAll(list);
+ }
+ String[] sarr = new String[al.size()];
+ al.toArray(sarr);
+ return sarr;
}
-
- /**
- * @see AuthConfigFactory#refresh()
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#refresh()
*/
- public void refresh() throws AuthException, SecurityException
- {
+ public void refresh()
+ {
}
-
- /**
- * @see AuthConfigFactory#registerConfigProvider(String, Map, String, String, String)
- */
- @SuppressWarnings("rawtypes")
- public String registerConfigProvider(String className, Map properties,
- String layer, String appContext, String description)
- throws AuthException, SecurityException
- {
- return delegate.registerConfigProvider(className, properties,
- layer, appContext, description);
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#registerConfigProvider(java.lang.String, java.util.Map, java.lang.String, java.lang.String, java.lang.String)
+ */
+ public String registerConfigProvider(String className, Map properties, String layer, String appContext,
+ String description)
+ {
+ if (className == null || className.length() == 0)
+ throw new IllegalArgumentException("className is null or zero length");
+
+ // Instantiate the provider
+ AuthConfigProvider acp = null;
+ try
+ {
+ // An AuthConfigProvider must have a two-argument constructor (Map properties, AuthConfigFactory factory).
+ Class<?> provClass = SecurityActions.getContextClassLoader().loadClass(className);
+ Constructor<?> ctr = provClass.getConstructor(new Class[] {Map.class, AuthConfigFactory.class});
+ acp = (AuthConfigProvider) ctr.newInstance(new Object[] {properties, null});
+ }
+ catch (Exception e)
+ {
+ log.error("Cannot register provider:" + className + ":", e);
+ throw new SecurityException("Cannot register Provider " + className + ":reason=" + e);
+ }
+
+ return this.registerConfigProvider(acp, layer, appContext, description);
}
-
- /**
- * @see AuthConfigFactory#removeRegistration(String)
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#registerConfigProvider(javax.security.auth.message.config.AuthConfigProvider, java.lang.String, java.lang.String, java.lang.String)
*/
+ public String registerConfigProvider(AuthConfigProvider provider, String layer, String appContext, String description)
+ {
+ if (provider == null)
+ throw new IllegalArgumentException("provider is null");
+
+ StringBuilder key = new StringBuilder();
+ key.append(layer == null ? "NULL" : layer.toUpperCase());
+ key.append("_");
+ key.append(appContext == null ? "NULL" : appContext.toUpperCase());
+
+ String keystr = key.toString();
+ keyProviderMap.put(keystr, provider);
+
+ // Generate a GUID
+ UUID guid = UUID.randomUUID();
+ String providerID = guid.toString();
+ this.idKeyMap.put(providerID, keystr);
+ List<String> list = this.providerToIDListMap.get(provider);
+ if (list == null)
+ {
+ list = new ArrayList<String>();
+ }
+ list.add(providerID);
+ this.providerToIDListMap.put(provider, list);
+ if (description != null)
+ this.idToDescriptionMap.put(providerID, description);
+
+ // Check if their is a pre-existing listener
+ RegistrationListener listener = keyListenerMap.get(keystr);
+ if (listener != null)
+ listener.notify(layer, appContext);
+
+ return providerID;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see javax.security.auth.message.config.AuthConfigFactory#removeRegistration(java.lang.String)
+ */
public boolean removeRegistration(String registrationID)
- {
- return delegate.removeRegistration(registrationID);
+ {
+ if (registrationID == null)
+ throw new IllegalArgumentException("registrationID is null");
+
+ String key = idKeyMap.get(registrationID);
+ if (key != null)
+ {
+ RegistrationListener listener = this.keyListenerMap.get(key);
+ RegistrationContext rc = this.getRegistrationContext(registrationID);
+
+ this.keyProviderMap.remove(key);
+ // Notify the listener of the change
+ if (listener != null)
+ listener.notify(rc.getMessageLayer(), rc.getAppContext());
+ return true;
+ }
+ return false;
}
-
- @Override
- public String registerConfigProvider(AuthConfigProvider provider,
- String layer, String appContext, String description)
- {
- return delegate.registerConfigProvider(provider, layer, appContext, description);
- }
}
\ No newline at end of file
Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -25,6 +25,7 @@
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.message.AuthException;
+import javax.security.auth.message.config.AuthConfigFactory;
import javax.security.auth.message.config.AuthConfigProvider;
import javax.security.auth.message.config.ClientAuthConfig;
import javax.security.auth.message.config.ServerAuthConfig;
@@ -50,9 +51,13 @@
*
* @param props Context Properties
*/
- public JBossAuthConfigProvider(Map<String,Object> props)
+ public JBossAuthConfigProvider(Map<String,Object> props, AuthConfigFactory factory)
{
this.contextProperties = props;
+
+ // if a factory has been supplied this provider needs to register itself.
+ if (factory != null)
+ factory.registerConfigProvider(this, null, null, "JBossAuthConfigProvider Self Registration");
}
/**
* @see AuthConfigProvider#getClientAuthConfig(String, String, CallbackHandler)
@@ -103,7 +108,7 @@
/**
* @see AuthConfigProvider#refresh()
*/
- public void refresh() throws AuthException, SecurityException
+ public void refresh()
{
}
Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -100,7 +100,7 @@
/**
* @see AuthConfig#refresh()
*/
- public void refresh() throws AuthException, SecurityException
+ public void refresh()
{
}
Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -193,7 +193,7 @@
/**
* @see AuthConfig#refresh()
*/
- public void refresh() throws AuthException, SecurityException
+ public void refresh()
{
}
Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -68,7 +68,8 @@
protected void setUp() throws Exception
{
factory = AuthConfigFactory.getFactory();
- factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap()), layer, appId, "Test Config Provider");
+ factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap(), null), layer, appId,
+ "Test Config Provider");
JBossSecurityContext jsc = new JBossSecurityContext("conf-jaspi-2");
SecurityContextAssociation.setSecurityContext(jsc);
Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -47,7 +47,7 @@
* @author Anil.Saldhana at redhat.com
*/
public class JASPIServerAuthenticationManagerUnitTestCase extends TestCase
-{
+{
AuthConfigFactory factory = null;
String layer = SecurityConstants.SERVLET_LAYER;
@@ -60,7 +60,8 @@
protected void setUp() throws Exception
{
factory = AuthConfigFactory.getFactory();
- factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap()), layer, appId, "Test Config Provider");
+ factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap(), null), layer, appId,
+ "Test Config Provider");
SecurityContext jsc = new JBossSecurityContext("conf-jaspi");
SecurityContextAssociation.setSecurityContext(jsc);
@@ -74,26 +75,22 @@
xli.setConfigURL(configURL);
xli.loadConfig();
}
-
+
public void testIsValid()
{
- CallbackHandler cbh = new AppCallbackHandler("anil",
- "anilpwd".toCharArray());
+ CallbackHandler cbh = new AppCallbackHandler("anil", "anilpwd".toCharArray());
MessageInfo messageInfo = new GenericMessageInfo(new Object(), new Object());
JASPIServerAuthenticationManager jaspiManager = new JASPIServerAuthenticationManager();
- boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer,
- cbh);
+ boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer, cbh);
assertTrue(valid);
}
-
+
public void testIsInValid()
{
- CallbackHandler cbh = new AppCallbackHandler("anil",
- "dead".toCharArray());
+ CallbackHandler cbh = new AppCallbackHandler("anil", "dead".toCharArray());
MessageInfo messageInfo = new GenericMessageInfo(new Object(), new Object());
JASPIServerAuthenticationManager jaspiManager = new JASPIServerAuthenticationManager();
- boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer,
- cbh);
+ boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer, cbh);
assertFalse(valid);
}
}
\ No newline at end of file
Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -48,7 +48,6 @@
import org.jboss.security.plugins.JBossSecurityContext;
import org.jboss.test.SecurityActions;
-
/**
* Test the Server side workflow for JASPI
*
@@ -71,7 +70,8 @@
protected void setUp() throws Exception
{
factory = AuthConfigFactory.getFactory();
- factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap()), layer, appId, "Test Config Provider");
+ factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap(), null), layer, appId,
+ "Test Config Provider");
SecurityContext jsc = new JBossSecurityContext("conf-jaspi");
SecurityContextAssociation.setSecurityContext(jsc);
@@ -126,31 +126,29 @@
AuthStatus status = sctx.validateRequest(mi, clientSubject, serviceSubject);
assertEquals(AuthStatus.FAILURE, status);
}
- catch(AuthException ae)
+ catch (AuthException ae)
{
//Ignore - we are fine
}
}
-
+
private void validateJAASConfiguration()
{
//Lets validate the configuration
Configuration config = Configuration.getConfiguration();
AppConfigurationEntry[] appConfigEntries = config.getAppConfigurationEntry("conf-jaspi");
assertTrue(appConfigEntries.length > 0);
- for(AppConfigurationEntry appConfigEntry: appConfigEntries)
+ for (AppConfigurationEntry appConfigEntry : appConfigEntries)
{
- assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule",
- appConfigEntry.getLoginModuleName());
+ assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule", appConfigEntry.getLoginModuleName());
assertEquals(LoginModuleControlFlag.OPTIONAL, appConfigEntry.getControlFlag());
}
-
+
appConfigEntries = config.getAppConfigurationEntry("lm-stack");
assertTrue(appConfigEntries.length > 0);
- for(AppConfigurationEntry appConfigEntry: appConfigEntries)
+ for (AppConfigurationEntry appConfigEntry : appConfigEntries)
{
- assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule",
- appConfigEntry.getLoginModuleName());
+ assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule", appConfigEntry.getLoginModuleName());
assertEquals(LoginModuleControlFlag.OPTIONAL, appConfigEntry.getControlFlag());
}
}
Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -50,7 +50,7 @@
return new TestServerAuthConfig() ;
}
- public void refresh() throws AuthException, SecurityException
+ public void refresh()
{
}
}
Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -66,7 +66,7 @@
return false;
}
- public void refresh() throws AuthException, SecurityException
+ public void refresh()
{
}
}
Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java 2011-09-21 22:01:09 UTC (rev 258)
@@ -65,7 +65,7 @@
return false;
}
- public void refresh() throws AuthException, SecurityException
+ public void refresh()
{
}
}
Modified: trunk/security-jboss-sx/parent/pom.xml
===================================================================
--- trunk/security-jboss-sx/parent/pom.xml 2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/parent/pom.xml 2011-09-21 22:01:09 UTC (rev 258)
@@ -105,9 +105,9 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-jaspi-api</artifactId>
- <version>1.0.0.${org.jboss.javaee.version}</version>
+ <groupId>org.jboss.spec.javax.security.auth.message</groupId>
+ <artifactId>jboss-jaspi-api_1.0_spec</artifactId>
+ <version>1.0.0.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
More information about the jboss-cvs-commits
mailing list