[jboss-cvs] JBossAS SVN: r64560 - in trunk/security: src/main/org/jboss/security/auth/login and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 13 15:21:15 EDT 2007
Author: anil.saldhana at jboss.com
Date: 2007-08-13 15:21:15 -0400 (Mon, 13 Aug 2007)
New Revision: 64560
Removed:
trunk/security/src/main/org/jboss/security/auth/login/SunConfigParser.jj
trunk/security/src/main/org/jboss/security/auth/login/XMLLoginConfigImpl.java
Modified:
trunk/security/build.xml
Log:
move xmlloginconfigimpl and the sunconfig parser to JBossSX
Modified: trunk/security/build.xml
===================================================================
--- trunk/security/build.xml 2007-08-13 19:11:27 UTC (rev 64559)
+++ trunk/security/build.xml 2007-08-13 19:21:15 UTC (rev 64560)
@@ -172,25 +172,8 @@
<target name="compile"
description="Compile all source files."
- depends="compile-parsers,compile-classes,
-compile-rmi,
-compile-etc"/>
+ depends="compile-classes, compile-rmi, compile-etc"/>
- <!-- Compile parsers -->
- <target name="compile-parsers" depends="init">
- <property name="build.parsers" value="${module.output}/gen-parsers"/>
- <mkdir dir="${build.parsers}/org/jboss/security/auth/login"/>
-
- <echo>BASE=${basedir}</echo>
- <echo>PROJECTROOT=${project.root}</echo>
-
- <!-- Sun JAAS config file parser -->
- <javacc target="${source.java}/org/jboss/security/auth/login/SunConfigParser.jj"
- outputdirectory="${build.parsers}/org/jboss/security/auth/login"
- javacchome="${sun.javacc.lib}"
- static="false"/>
- </target>
-
<!-- Compile all class files -->
<target name="compile-classes" depends="init">
<mkdir dir="${build.classes}"/>
@@ -209,7 +192,6 @@
excludes="${javac.excludes}"
failonerror="${javac.fail.onerror}">
<src path="${source.java}"/>
- <src path="${build.parsers}"/>
<classpath refid="javac.classpath"/>
</javac>
</target>
Deleted: trunk/security/src/main/org/jboss/security/auth/login/SunConfigParser.jj
===================================================================
--- trunk/security/src/main/org/jboss/security/auth/login/SunConfigParser.jj 2007-08-13 19:11:27 UTC (rev 64559)
+++ trunk/security/src/main/org/jboss/security/auth/login/SunConfigParser.jj 2007-08-13 19:21:15 UTC (rev 64560)
@@ -1,265 +0,0 @@
-/* JBoss, the OpenSource J2EE WebOS
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-
-options {
- LOOKAHEAD=1;
- DEBUG_PARSER=true;
- DEBUG_LOOKAHEAD=true;
- DEBUG_TOKEN_MANAGER=false;
-}
-
-PARSER_BEGIN(SunConfigParser)
-
-package org.jboss.security.auth.login;
-
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import javax.security.auth.login.AppConfigurationEntry;
-import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
-
-/**
- * A JavaCC 2.1 grammar for the default JAAS configuration file provided by Sun.
- * The format of an entry is:
- Application {
- ModuleClass Flag ModuleOptions;
- ModuleClass Flag ModuleOptions;
- ModuleClass Flag ModuleOptions;
- };
-
- * @see http://www.webgain.com/products/metamata/java_doc.html
- *
- * @author Scott.Stark at jboss.org
- * @version $Revision: 16662 $
- */
-public class SunConfigParser
-{
- private XMLLoginConfigImpl loginConfig;
-
- public SunConfigParser()
- {
- // keep the parser from feaking out, init using one of
- // the JavaCC generated constructor
- this(new StringReader(""));
- }
-
- public void parse(Reader configFile, XMLLoginConfigImpl loginConfig)
- throws ParseException
- {
- parse(configFile, loginConfig, false);
- }
-
- public void parse(Reader configFile, XMLLoginConfigImpl loginConfig, boolean trace)
- throws ParseException
- {
- ReInit(configFile);
-
- // This will have no effect unless the debugging options are true
- if (trace)
- {
- this.enable_tracing();
- }
- else
- {
- this.disable_tracing();
- }
-
- this.loginConfig = loginConfig;
- this.config();
- }
-
- /**
- * Strip off the leading and trailing (quote) chars from the given string
- * and return it. Does not actually check to make sure they are '\'' chars.
- */
- private String stripQuotes(String image)
- {
- return image.substring(1, image.length() - 1);
- }
-
- public static void doParse(Reader configFile, XMLLoginConfigImpl loginConfig)
- throws ParseException
- {
- doParse(configFile, loginConfig, false);
- }
-
- public static void doParse(Reader configFile, XMLLoginConfigImpl loginConfig, boolean trace)
- throws ParseException
- {
- SunConfigParser parser = new SunConfigParser();
- parser.parse(configFile, loginConfig, trace);
- }
-}
-
-PARSER_END(SunConfigParser)
-
-/* IGNORE WHITESPACE */
-
-SKIP :
-{
- " "
- | "\r"
- | "\t"
- | "\n"
-}
-
-
-SPECIAL_TOKEN : /* COMMENTS */
-{
- <SINGLE_LINE_COMMENT: ("//"|"#") (~["\n","\r"])* ("\n"|"\r"|"\r\n")>
-| <MULTI_LINE_COMMENT: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/">
-}
-
-TOKEN :
-{
- < OPEN_BKT: "{" >
- | < CLOSE_BKT: "}" >
- | < SEMI_COLON: ";" >
- | < EQUALS: "=" >
-
-}
-
-/* Literals */
-
-TOKEN :
-{
- < LONG: ( ["0" - "9"] )+ >
- | < DOUBLE: <FLOAT>
- | <FLOAT> ( ["e","E"] ([ "-","+"])? <LONG> )?
- >
- | < #FLOAT: <LONG> ( "." (<LONG>)? )
- | "." <LONG>
- >
- | < STRING:
- (
- "'"
- ( (~["'","\n","\r"])
- | ("''")
- )*
- "'"
- )
- |
- (
- "\""
- ( (~["\"","\n","\r"])
- | ("\"\"")
- )*
- "\""
- ) >
-}
-
-TOKEN [IGNORE_CASE]:
-{
- <CONTROL_FLAG: "required" | "requisite" | "sufficient" | "optional">
-|
- <IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>|"-"|"_")* >
-|
- <CLASSNAME: <LETTER> (<LETTER>|<DIGIT>)* ("." <LETTER> (<LETTER>|<DIGIT>)*)* >
-|
- <#LETTER: [ "_","$", "a"-"z", "A"-"Z" ] >
-|
- <#DIGIT: ["0" - "9"] >
-|
- <ANY: (<NOTSPACE_EQUALS>)+ >
-|
- <#NOTSPACE_EQUALS: (~[" ","\t","\n","\r","=",";"]) >
-}
-
-/** Start of the grammar */
-
-void config() :
-{
-}
-{
- ( appConfig() )* <EOF>
-}
-
-void appConfig() :
-{
- Token t = null;
- String appName;
- AppConfigurationEntry entry;
- ArrayList entries = new ArrayList();
-}
-{
- t=<IDENTIFIER> { appName = t.image; } <OPEN_BKT>
- (
- entry = loginModuleConfig()
- {
- entries.add(entry);
- }
- ) +
- <CLOSE_BKT> <SEMI_COLON>
- {
- AppConfigurationEntry[] appConfig = new AppConfigurationEntry[entries.size()];
- entries.toArray(appConfig);
- loginConfig.addAppConfig(appName, appConfig);
- }
-}
-
-AppConfigurationEntry loginModuleConfig() :
-{
- Token t = null;
- String loginModuleClassName;
- HashMap options = new HashMap();
- LoginModuleControlFlag controlFlag;
- AppConfigurationEntry entry;
-}
-{
- t=<CLASSNAME> { loginModuleClassName = t.image; }
- controlFlag = controlFlag()
- ( moduleOptions(options) )*
- <SEMI_COLON>
- {
- entry = new AppConfigurationEntry(loginModuleClassName, controlFlag, options);
- return entry;
- }
-}
-
-LoginModuleControlFlag controlFlag() :
-{
- Token t;
- LoginModuleControlFlag flag = null;
-}
-{
- t=<CONTROL_FLAG>
- {
- if( LoginModuleControlFlag.REQUIRED.toString().indexOf(t.image) > 0 )
- flag = LoginModuleControlFlag.REQUIRED;
- else if( LoginModuleControlFlag.REQUISITE.toString().indexOf(t.image) > 0 )
- flag = LoginModuleControlFlag.REQUISITE;
- else if( LoginModuleControlFlag.SUFFICIENT.toString().indexOf(t.image) > 0 )
- flag = LoginModuleControlFlag.SUFFICIENT;
- else if( LoginModuleControlFlag.OPTIONAL.toString().indexOf(t.image) > 0 )
- flag = LoginModuleControlFlag.OPTIONAL;
- return flag;
- }
-}
-
-void moduleOptions(HashMap options) :
-{
- Token t;
- String name, value;
-}
-{
- ( t=<IDENTIFIER> | t=<CLASSNAME> )
- { name = t.image; }
- <EQUALS>
- (
- ( t=<IDENTIFIER> | t=<CLASSNAME> | t=<DOUBLE> | t=<LONG> | t=<ANY> )
- {
- value = t.image;
- options.put(name, value);
- }
- | t=<STRING>
- {
- value = stripQuotes(t.image);
- options.put(name, value);
- }
- )
-}
-
Deleted: trunk/security/src/main/org/jboss/security/auth/login/XMLLoginConfigImpl.java
===================================================================
--- trunk/security/src/main/org/jboss/security/auth/login/XMLLoginConfigImpl.java 2007-08-13 19:11:27 UTC (rev 64559)
+++ trunk/security/src/main/org/jboss/security/auth/login/XMLLoginConfigImpl.java 2007-08-13 19:21:15 UTC (rev 64560)
@@ -1,419 +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.login;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Serializable;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Set;
-
-import javax.security.auth.AuthPermission;
-import javax.security.auth.login.AppConfigurationEntry;
-import javax.security.auth.login.Configuration;
-
-import org.jboss.logging.Logger;
-import org.jboss.security.auth.spi.UsersObjectModelFactory;
-import org.jboss.security.authorization.config.SecurityConfigObjectModelFactory;
-import org.jboss.security.config.ApplicationPolicy;
-import org.jboss.security.config.ApplicationPolicyRegistration;
-import org.jboss.security.config.PolicyConfig;
-import org.jboss.security.config.SecurityConfiguration;
-import org.jboss.xb.binding.JBossXBException;
-import org.jboss.xb.binding.Unmarshaller;
-import org.jboss.xb.binding.UnmarshallerFactory;
-
-/** An concrete implementation of the javax.security.auth.login.Configuration
- class that parses an xml configuration of the form:
-
- <policy>
- <application-policy name = "test-domain">
- <authentication>
- <login-module code = "org.jboss.security.plugins.samples.IdentityLoginModule"
- flag = "required">
- <module-option name = "principal">starksm</module-option>
- </login-module>
- </authentication>
- </application-policy>
- </policy>
-
- @see javax.security.auth.login.Configuration
-
- @author Scott.Stark at jboss.org
- @author Anil.Saldhana at jboss.org
- @version $Revision: 57482 $
- */
-public class XMLLoginConfigImpl extends Configuration implements Serializable, ApplicationPolicyRegistration
-{
- /** The serialVersionUID */
- private static final long serialVersionUID = -8965860493224188277L;
- private static final String DEFAULT_APP_CONFIG_NAME = "other";
- private static final AuthPermission REFRESH_PERM = new AuthPermission("refreshLoginConfiguration");
- private static Logger log = Logger.getLogger(XMLLoginConfigImpl.class);
- /** A mapping of application name to AppConfigurationEntry[]
- protected Map appConfigs = Collections.synchronizedMap(new HashMap());
- */
- PolicyConfig appConfigs = new PolicyConfig();
- /** The URL to the XML or Sun login configuration */
- protected URL loginConfigURL;
- /** The inherited configuration we delegate to */
- protected Configuration parentConfig;
- /** A flag indicating if XML configs should be validated */
- private boolean validateDTD = true;
-
- // --- Begin Configuration method overrrides
- public void refresh()
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(REFRESH_PERM);
- if (log.isTraceEnabled())
- log.trace("Begin refresh");
- appConfigs.clear();
- loadConfig();
- if (log.isTraceEnabled())
- log.trace("End refresh");
- }
-
- public AppConfigurationEntry[] getAppConfigurationEntry(String appName)
- {
- if (log.isTraceEnabled())
- log.trace("Begin getAppConfigurationEntry("+appName+"), size="+appConfigs.size());
-
- //Load the config if PolicyConfig is empty
- if(this.appConfigs.size() == 0)
- this.loadConfig();
-
- AppConfigurationEntry[] entry = null;
- ApplicationPolicy aPolicy = this.getApplicationPolicy(appName);
- AuthenticationInfo authInfo = aPolicy != null ? (AuthenticationInfo)aPolicy.getAuthenticationInfo()
- : null;
-
- if (authInfo == null)
- {
- if (log.isTraceEnabled())
- log.trace("getAppConfigurationEntry("+appName+"), no entry in appConfigs, tyring parentCont: "+parentConfig);
- if (parentConfig != null)
- entry = parentConfig.getAppConfigurationEntry(appName);
- if (entry == null)
- {
- if (log.isTraceEnabled())
- log.trace("getAppConfigurationEntry("+appName+"), no entry in parentConfig, trying: "+DEFAULT_APP_CONFIG_NAME);
- }
- ApplicationPolicy defPolicy = (ApplicationPolicy)appConfigs.get(DEFAULT_APP_CONFIG_NAME);
- authInfo = defPolicy != null ?(AuthenticationInfo) defPolicy.getAuthenticationInfo() : null;
- }
-
- if (authInfo != null)
- {
- if (log.isTraceEnabled())
- log.trace("End getAppConfigurationEntry("+appName+"), authInfo=" + authInfo);
- // Make a copy of the authInfo object
- final AuthenticationInfo theAuthInfo = authInfo;
- PrivilegedAction action = new PrivilegedAction()
- {
- public Object run()
- {
- return theAuthInfo.copyAppConfigurationEntry();
- }
- };
- entry = (AppConfigurationEntry[]) AccessController.doPrivileged(action);
- }
- else
- {
- if (log.isTraceEnabled())
- log.trace("End getAppConfigurationEntry("+appName+"), failed to find entry");
- }
-
- return entry;
- }
- // --- End Configuration method overrrides
-
- /** Set the URL of the XML login configuration file that should
- be loaded by this mbean on startup.
- */
- public URL getConfigURL()
- {
- return loginConfigURL;
- }
-
- /** Set the URL of the XML login configuration file that should
- be loaded by this mbean on startup.
- */
- public void setConfigURL(URL loginConfigURL)
- {
- this.loginConfigURL = loginConfigURL;
- }
-
- public void setConfigResource(String resourceName)
- throws IOException
- {
- ClassLoader tcl = Thread.currentThread().getContextClassLoader();
- loginConfigURL = tcl.getResource(resourceName);
- if (loginConfigURL == null)
- throw new IOException("Failed to find resource: " + resourceName);
- }
-
- public void setParentConfig(Configuration parentConfig)
- {
- this.parentConfig = parentConfig;
- }
-
- /** Get whether the login config xml document is validated againsts its DTD
- */
- public boolean getValidateDTD()
- {
- return this.validateDTD;
- }
-
- /** Set whether the login config xml document is validated againsts its DTD
- */
- public void setValidateDTD(boolean flag)
- {
- this.validateDTD = flag;
- }
-
- /**
- * @see ApplicationPolicyRegistration#addApplicationPolicy(String, ApplicationPolicy)
- */
- public void addApplicationPolicy(String appName, ApplicationPolicy aPolicy)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(REFRESH_PERM);
- appConfigs.add(aPolicy);
- SecurityConfiguration.addApplicationPolicy(aPolicy);
- }
-
- /** Add an application configuration
- */
- public void addAppConfig(String appName, AppConfigurationEntry[] entries)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(REFRESH_PERM);
- AuthenticationInfo authInfo = new AuthenticationInfo(appName);
- authInfo.setAppConfigurationEntry(entries);
- if (log.isTraceEnabled())
- log.trace("addAppConfig("+appName+"), authInfo=" + authInfo);
- ApplicationPolicy aPolicy = new ApplicationPolicy(appName, authInfo);
- appConfigs.add(aPolicy);
- SecurityConfiguration.addApplicationPolicy(aPolicy);
- }
-
- /**
- * @deprecated
- * @see #removeApplicationPolicy(String)
- * @param appName
- */
- public void removeAppConfig(String appName)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(REFRESH_PERM);
- if (log.isTraceEnabled())
- log.trace("removeAppConfig, appName="+appName);
- appConfigs.remove(appName);
- }
-
-
- /**
- * @see ApplicationPolicyRegistration#getApplicationPolicy(String)
- */
- public ApplicationPolicy getApplicationPolicy(String domainName)
- {
- if(appConfigs == null || appConfigs.size() == 0)
- loadConfig();
- ApplicationPolicy aPolicy = (ApplicationPolicy)appConfigs.get(domainName);
- if(aPolicy != null)
- SecurityConfiguration.addApplicationPolicy(aPolicy);
- return aPolicy;
- }
-
-
- /**
- * @see ApplicationPolicyRegistration#removeApplicationPolicy(String)
- */
- public boolean removeApplicationPolicy(String appName)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(REFRESH_PERM);
- if (log.isTraceEnabled())
- log.trace("removeAppConfig, appName="+appName);
- appConfigs.remove(appName);
- return true;
- }
-
- /**
- * Method that returns the parsed AuthenticationInfo needed by
- * the JASPI framework until a seperate Configuration mechanism
- * for JASPI is established
- *
- * @return the parsed AuthenticationInfo object
- */
- public BaseAuthenticationInfo getAuthenticationInfo(String domainName)
- {
- ApplicationPolicy aPolicy = getApplicationPolicy( domainName);
- return aPolicy != null ? aPolicy.getAuthenticationInfo() : null;
- }
-
- public void clear()
- {
-
- }
-
- /** Called to try to load the config from the java.security.auth.login.config
- * property value when there is no loginConfigURL.
- */
- public void loadConfig()
- {
- // Try to load the java.security.auth.login.config property
- String loginConfig = System.getProperty("java.security.auth.login.config");
- if (loginConfig == null)
- loginConfig = "login-config.xml";
-
- // If there is no loginConfigURL build it from the loginConfig
- if (loginConfigURL == null)
- {
- try
- {
- // Try as a URL
- loginConfigURL = new URL(loginConfig);
- }
- catch (MalformedURLException e)
- {
- // Try as a resource
- try
- {
- setConfigResource(loginConfig);
- }
- catch (IOException ignore)
- {
- // Try as a file
- File configFile = new File(loginConfig);
- try
- {
- setConfigURL(configFile.toURL());
- }
- catch (MalformedURLException ignore2)
- {
- }
- }
- }
- }
-
- if (loginConfigURL == null)
- {
- log.warn("Failed to find config: " + loginConfig);
- return;
- }
-
- if (log.isTraceEnabled())
- log.trace("Begin loadConfig, loginConfigURL="+loginConfigURL);
- // Try to load the config if found
- try
- {
- loadConfig(loginConfigURL);
- if (log.isTraceEnabled())
- log.trace("End loadConfig, loginConfigURL="+loginConfigURL);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- log.warn("End loadConfig, failed to load config: " + loginConfigURL, e);
- }
- }
-
- protected String[] loadConfig(URL config) throws Exception
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(REFRESH_PERM);
-
- ArrayList configNames = new ArrayList();
- log.debug("Try loading config as XML, url=" + config);
- try
- {
- loadXMLConfig(config, configNames);
- }
- catch(Throwable e)
- {
- log.debug("Failed to load config as XML", e);
- log.debug("Try loading config as Sun format, url=" + config);
- loadSunConfig(config, configNames);
- }
- String[] names = new String[configNames.size()];
- configNames.toArray(names);
- return names;
- }
-
- private void loadSunConfig(URL sunConfig, ArrayList configNames)
- throws Exception
- {
- InputStream is = sunConfig.openStream();
- if (is == null)
- throw new IOException("InputStream is null for: " + sunConfig);
-
- InputStreamReader configFile = new InputStreamReader(is);
- boolean trace = log.isTraceEnabled();
- SunConfigParser.doParse(configFile, this, trace);
- }
-
- private void loadXMLConfig(URL loginConfigURL, ArrayList configNames)
- throws IOException, JBossXBException
- {
- LoginConfigObjectModelFactory lcomf = new SecurityConfigObjectModelFactory();
- UsersObjectModelFactory uomf = new UsersObjectModelFactory();
-
- InputStreamReader xmlReader = loadURL(loginConfigURL);
- Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
- unmarshaller.mapFactoryToNamespace(uomf, "http://www.jboss.org/j2ee/schemas/XMLLoginModule");
- Object root = null;
- PolicyConfig config = (PolicyConfig) unmarshaller.unmarshal(xmlReader, lcomf, root);
- Set<String> cnames = config.getConfigNames();
- configNames.addAll(cnames);
- appConfigs.copy(config);
- //Add the config to SecurityConfiguration
- for(String cname:cnames)
- {
- SecurityConfiguration.addApplicationPolicy(config.get(cname));
- }
- }
-
- private InputStreamReader loadURL(URL configURL)
- throws IOException
- {
- InputStream is = configURL.openStream();
- if (is == null)
- throw new IOException("Failed to obtain InputStream from url: " + configURL);
- InputStreamReader xmlReader = new InputStreamReader(is);
- return xmlReader;
- }
-
-}
More information about the jboss-cvs-commits
mailing list