/******************************************************************************* * Copyright 2014 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. ******************************************************************************/ /* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moa.id.config; import java.util.Map; import java.util.Properties; import org.hibernate.cfg.Configuration; import at.gv.egovernment.moa.id.commons.api.ConfigurationProvider; import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException; import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils; import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils; import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore; import at.gv.egovernment.moa.id.commons.db.dao.session.AuthenticatedSessionStore; import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore; import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore; import at.gv.egovernment.moa.id.commons.db.dao.session.OldSSOSessionIDStore; import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog; import at.gv.egovernment.moa.id.data.IssuerAndSerial; import at.gv.egovernment.moa.id.protocols.pvp2x.config.MOADefaultBootstrap; import at.gv.egovernment.moa.logging.Logger; import at.gv.util.config.EgovUtilPropertiesConfiguration; /** * Base class for AuthConfigurationProvider and ProxyConfigurationProvider, * providing functions common to both of them. * * @author Paul Ivancsics * @version $Id$ */ public abstract class ConfigurationProviderImpl implements ConfigurationProvider{ /** * Constructor */ public ConfigurationProviderImpl() { super(); } private EgovUtilPropertiesConfiguration eGovUtilsConfig = null; /** * The name of the system property which contains the file name of the * configuration file. */ public static final String CONFIG_PROPERTY_NAME = "moa.id.configuration"; /** * The name of the system property which contains the file name of the * configuration file. */ public static final String PROXY_CONFIG_PROPERTY_NAME = "moa.id.proxy.configuration"; /** * The name of the generic configuration property giving the certstore directory path. */ public static final String DIRECTORY_CERTSTORE_PARAMETER_PROPERTY = "DirectoryCertStoreParameters.RootDir"; /** * The name of the generic configuration property switching the ssl revocation checking on/off */ public static final String TRUST_MANAGER_REVOCATION_CHECKING = "TrustManager.RevocationChecking"; /** * A Map which contains generic configuration information. Maps a * configuration name (a String) to a configuration value (also a * String). */ protected Map genericConfiguration; /** The default chaining mode. */ protected String defaultChainingMode = "pkix"; /** * A Map which contains the IssuerAndSerial to * chaining mode (a String) mapping. */ protected Map chainingModes; /** * the URL for the trusted CA Certificates */ protected String trustedCACertificates; /** * main configuration file directory name used to configure MOA-ID */ protected String rootConfigFileDir; protected String certstoreDirectory; protected boolean trustmanagerrevoationchecking = true; protected Properties configProp = null; /** * Returns the main configuration file directory used to configure MOA-ID * * @return the directory */ public String getRootConfigFileDir() { return rootConfigFileDir; } public String getDefaultChainingMode() { return defaultChainingMode; } /** * Get the DB configuration properties from MOA-ID-Auth configuration file * * @return */ public Properties getDBConnectionConfiguration() { return this.configProp; } /** * @param properties * @throws ConfigurationException * @throws org.opensaml.xml.ConfigurationException */ public void initial(Properties props) throws ConfigurationException, org.opensaml.xml.ConfigurationException { //Initial Hibernate Framework Logger.trace("Initializing Hibernate framework."); try { // read MOAID Session Hibernate properties Properties moaSessionProp = new Properties(); for (Object key : props.keySet()) { String propPrefix = "moasession."; if (key.toString().startsWith(propPrefix+"hibernate")) { String propertyName = key.toString().substring(propPrefix.length()); moaSessionProp.put(propertyName, props.get(key.toString())); } } // read Config Hibernate properties configProp = new Properties(); for (Object key : props.keySet()) { String propPrefix = "configuration."; if (key.toString().startsWith(propPrefix+"hibernate")) { String propertyName = key.toString().substring(propPrefix.length()); configProp.put(propertyName, props.get(key.toString())); } } // read advanced logging properties Properties statisticProps = new Properties(); for (Object key : props.keySet()) { String propPrefix = "advancedlogging."; if (key.toString().startsWith(propPrefix+"hibernate")) { String propertyName = key.toString().substring(propPrefix.length()); statisticProps.put(propertyName, props.get(key.toString())); } } // initialize hibernate synchronized (ConfigurationProviderImpl.class) { //Initial config Database // ConfigurationDBUtils.initHibernate(configProp); //initial MOAID Session Database Configuration config = new Configuration(); config.addAnnotatedClass(AssertionStore.class); config.addAnnotatedClass(AuthenticatedSessionStore.class); config.addAnnotatedClass(OASessionStore.class); config.addAnnotatedClass(OldSSOSessionIDStore.class); config.addAnnotatedClass(InterfederationSessionStore.class); //config.addAnnotatedClass(ProcessInstanceStore.class); config.addProperties(moaSessionProp); MOASessionDBUtils.initHibernate(config, moaSessionProp); //initial advanced logging if (Boolean.valueOf(props.getProperty("configuration.advancedlogging.active", "false"))) { Logger.info("Advanced statistic log is activated, starting initialization process ..."); Configuration statisticconfig = new Configuration(); statisticconfig.addAnnotatedClass(StatisticLog.class); statisticconfig.addProperties(statisticProps); StatisticLogDBUtils.initHibernate(statisticconfig, statisticProps); Logger.info("Advanced statistic log is initialized."); } } Logger.trace("Hibernate initialization finished."); } catch (ExceptionInInitializerError e) { throw new ConfigurationException("config.17", null, e); } finally { } //Initialize OpenSAML for STORK Logger.info("Starting initialization of OpenSAML..."); MOADefaultBootstrap.bootstrap(); //DefaultBootstrap.bootstrap(); Logger.debug("OpenSAML successfully initialized"); //read eGovUtils client configuration Properties eGovUtilsConfigProp = new Properties(); for (Object key : props.keySet()) { String propPrefix = "service."; if (key.toString().startsWith(propPrefix+"egovutil")) { String propertyName = key.toString().substring(propPrefix.length()); eGovUtilsConfigProp.put(propertyName, props.get(key.toString())); } } if (!eGovUtilsConfigProp.isEmpty()) { Logger.info("Start eGovUtils client implementation configuration ..."); eGovUtilsConfig = new EgovUtilPropertiesConfiguration(eGovUtilsConfigProp, rootConfigFileDir); } } /** * @return the eGovUtilsConfig */ public EgovUtilPropertiesConfiguration geteGovUtilsConfig() { return eGovUtilsConfig; } }