diff options
Diffstat (limited to 'id/server/moa-id-commons/src')
33 files changed, 2401 insertions, 180 deletions
| diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDAuthConstants.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDAuthConstants.java new file mode 100644 index 000000000..8d893be9d --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDAuthConstants.java @@ -0,0 +1,193 @@ + + + +package at.gv.egovernment.moa.id.commons; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import iaik.asn1.ObjectID; + + +/** + * Constants used throughout moa-id-auth component. + *  + * @author Paul Ivancsics + * @version $Id$ + */ +public class MOAIDAuthConstants extends MOAIDConstants{ + +  /** servlet parameter "Target" */ +  public static final String PARAM_TARGET = "Target"; +  /** servlet parameter "useMandate" */ +  public static final String PARAM_USEMANDATE = "useMandate"; +  public static final String PARAM_USEMISMANDATE = "useMISMandate"; +  public static final String PARAM_USEELGAMANDATE = "useELGAMandate"; +  /** servlet parameter "OA" */ +  public static final String PARAM_OA = "OA"; +  /** servlet parameter "bkuURI" */ +  public static final String PARAM_BKU = "bkuURI"; +  public static final String PARAM_MODUL = "MODUL"; +  public static final String PARAM_ACTION = "ACTION"; +  public static final String PARAM_SSO = "SSO"; +  public static final String INTERFEDERATION_IDP = "interIDP"; +  public static final String PARAM_TARGET_PENDINGREQUESTID = "pendingid"; +   +  public static final String PARAM_SLOSTATUS = "status"; +  public static final String PARAM_SLORESTART = "restart"; +  public static final String SLOSTATUS_SUCCESS = "success"; +  public static final String SLOSTATUS_ERROR = "error"; +   +  /** servlet parameter "sourceID" */ +  public static final String PARAM_SOURCEID = "sourceID";   +  /** servlet parameter "BKUSelectionTemplate" */ +  public static final String PARAM_BKUTEMPLATE = "BKUSelectionTemplate"; +  /** servlet parameter "CCC (Citizen Country Code)" */ +  public static final String PARAM_CCC = "CCC";   +  /** servlet parameter "BKUSelectionTemplate" */ +  public static final String PARAM_INPUT_PROCESSOR_SIGN_TEMPLATE = "InputProcessorSignTemplate"; +  /** default BKU URL */ +  public static final String DEFAULT_BKU = "http://localhost:3495/http-security-layer-request"; +  /** default BKU URL for https connections*/ +  public static final String DEFAULT_BKU_HTTPS = "https://127.0.0.1:3496/https-security-layer-request"; +  /** servlet parameter "returnURI" */ +  public static final String PARAM_RETURN = "returnURI"; +  /** servlet parameter "Template" */ +  public static final String PARAM_TEMPLATE = "Template"; +  /** servlet parameter "MOASessionID" */ +  public static final String PARAM_SESSIONID = "MOASessionID"; +  /** servlet parameter "XMLResponse" */ +  public static final String PARAM_XMLRESPONSE = "XMLResponse"; +  /** servlet parameter "SAMLArtifact" */ +  public static final String PARAM_SAMLARTIFACT = "SAMLArtifact"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.StartAuthenticationServlet} is mapped to */ +  public static final String REQ_START_AUTHENTICATION = "StartAuthentication"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.VerifyIdentityLinkServlet} is mapped to */ +  public static final String REQ_VERIFY_IDENTITY_LINK = "VerifyIdentityLink"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.GetForeignIDServlet} is mapped to */ +  public static final String REQ_GET_FOREIGN_ID = "GetForeignID"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.VerifyCertificateServlet} is mapped to */ +  public static final String REQ_VERIFY_CERTIFICATE = "VerifyCertificate"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.GetMISSessionIDServlet} is mapped to */ +  public static final String GET_MIS_SESSIONID = "GetMISSessionID"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.ProcessValidatorInputServlet} is mapped to */ +  public static final String REQ_PROCESS_VALIDATOR_INPUT = "ProcessInput"; +  /** Request name {@link at.gv.egovernment.moa.id.auth.servlet.VerifyAuthenticationBlockServlet} is mapped to */ +  public static final String REQ_VERIFY_AUTH_BLOCK = "VerifyAuthBlock"; +  /** Logging hierarchy used for controlling debug output of XML structures to files */ +  public static final String DEBUG_OUTPUT_HIERARCHY = "moa.id.auth"; +  /** Header Name for controlling the caching mechanism of the browser */ +  public static final String HEADER_EXPIRES = "Expires"; +  /** Header Value for controlling the caching mechanism of the browser */ +  public static final String HEADER_VALUE_EXPIRES = "Sat, 6 May 1995 12:00:00 GMT"; +  /** Header Name for controlling the caching mechanism of the browser */ +  public static final String HEADER_PRAGMA = "Pragma"; +  /** Header Value for controlling the caching mechanism of the browser */ +  public static final String HEADER_VALUE_PRAGMA = "no-cache"; +  /** Header Name for controlling the caching mechanism of the browser */ +  public static final String HEADER_CACHE_CONTROL = "Cache-control"; +  /** Header Value for controlling the caching mechanism of the browser */ +  public static final String HEADER_VALUE_CACHE_CONTROL = "no-store, no-cache, must-revalidate"; +  /** Header Value for controlling the caching mechanism of the browser */ +  public static final String HEADER_VALUE_CACHE_CONTROL_IE = "post-check=0, pre-check=0"; +  /**  +   * the identity link signer X509Subject names of those identity link signer certificates  +   * not including the identity link signer OID. The authorisation for signing the identity +   * link must be checked by using their issuer names. After february 19th 2007 the OID of +   * the certificate will be used fo checking the authorisation for signing identity links. +   */  +  public static final String[] IDENTITY_LINK_SIGNERS_WITHOUT_OID =  +    new String[] {"T=Dr.,CN=Nikolaus Schwab,O=BM f. Inneres i.A. des gf. Mitgieds der Datenschutzkommission", +                  "T=Dr.,CN=Nikolaus Schwab,O=BM f. Inneres i.A. des gf. Mitglieds der Datenschutzkommission"}; +  				    +  /** the number of the certifcate extension "Eigenschaft zur Ausstellung von Personenbindungen" */ +  public static final String IDENTITY_LINK_SIGNER_OID_NUMBER = "1.2.40.0.10.1.7.1"; +  /**  +   * the OID of the identity link signer certificate (Eigenschaft zur Ausstellung von Personenbindungen); +   * used for checking the authorisation for signing the identity link for identity links signed after february 19th 2007 +   */ +  public static final ObjectID IDENTITY_LINK_SIGNER_OID = new ObjectID(IDENTITY_LINK_SIGNER_OID_NUMBER); +   +  /** the number of the certifcate extension for party representatives */ +  public static final String PARTY_REPRESENTATION_OID_NUMBER = "1.2.40.0.10.3"; +   +//  /** the number of the certifcate extension for party organ representatives */ +//  public static final String PARTY_ORGAN_REPRESENTATION_OID_NUMBER = PARTY_REPRESENTATION_OID_NUMBER + ".10"; +     +  /** OW */ +  public static final String OW_ORGANWALTER = PARTY_REPRESENTATION_OID_NUMBER + ".4"; +   +  /** List of OWs */ +  public static final List<ObjectID> OW_LIST = Arrays.asList(  +		  new ObjectID(OW_ORGANWALTER));   +   +  /**BKU type identifiers to use bkuURI from configuration*/  +  public static final String REQ_BKU_TYPE_LOCAL = "local"; +  public static final String REQ_BKU_TYPE_ONLINE = "online";  +  public static final String REQ_BKU_TYPE_HANDY = "handy";  +  public static final List<String> REQ_BKU_TYPES = Arrays.asList(REQ_BKU_TYPE_LOCAL, REQ_BKU_TYPE_ONLINE, REQ_BKU_TYPE_HANDY); + +  public static final List<String> LEGACYPARAMETERWHITELIST  +  	= Arrays.asList(PARAM_TARGET, PARAM_BKU, PARAM_OA, PARAM_TEMPLATE, PARAM_USEMANDATE, PARAM_CCC, PARAM_SOURCEID); + +  public final static String EXT_SAML_MANDATE_OIDTEXTUALDESCRIPTION = "OIDTextualDescription"; +  public final static String EXT_SAML_MANDATE_OID = "OID"; +  public final static String EXT_SAML_MANDATE_RAW = "Mandate"; +  public final static String EXT_SAML_MANDATE_NAME = "MandatorName"; +  public final static String EXT_SAML_MANDATE_DOB = "MandatorDateOfBirth"; +  public final static String EXT_SAML_MANDATE_WBPK = "MandatorWbpk"; +  public final static String EXT_SAML_MANDATE_REPRESENTATIONTYPE = "RepresentationType"; +  public final static String EXT_SAML_MANDATE_REPRESENTATIONTEXT = "Vollmachtsvertreter"; +  public final static String EXT_SAML_MANDATE_CB_BASE_ID = "MandatorDomainIdentifier"; +   +  public static final String PARAM_APPLET_HEIGTH = "heigth"; +  public static final String PARAM_APPLET_WIDTH = "width"; +   +  public static final Map<String, String> COUNTRYCODE_XX_TO_NAME =  +			Collections.unmodifiableMap(new HashMap<String, String>() { +				private static final long serialVersionUID = 1L; +				{ +					put("AT", "Other Countries");//"Workaround for PEPS Simulator" +					put("BE", "België/Belgique"); +					//put("CH", "Schweiz"); +					put("EE", "Eesti"); +					put("ES", "España"); +					put("FI", "Suomi"); +					put("IS", "Ísland"); +					put("IT", "Italia"); +					put("LI", "Liechtenstein"); +					put("LT", "Lithuania"); +					put("LU", "Luxemburg"); +					put("PT", "Portugal"); +					put("SE", "Sverige"); +					put("SI", "Slovenija"); +				} +			});	 +   +  public static final String COUNTRYCODE_AUSTRIA = "AT"; +   +  public static final String REGEX_PATTERN_TARGET = "^[A-Za-z]{2}(-.*)?$"; +   +  public static final String MDC_TRANSACTION_ID = "transactionId"; +  public static final String MDC_SESSION_ID = "sessionId"; +   +  //AuthnRequest IssueInstant validation +  public static final int TIME_JITTER = 5;  //all 5 minutes time jitter  +   +  public static final String PROCESSCONTEXT_PERFORM_INTERFEDERATION_AUTH = "interfederationAuthentication"; +  public static final String PROCESSCONTEXT_REQUIRELOCALAUTHENTICATION = "requireLocalAuthentication"; +  public static final String PROCESSCONTEXT_PERFORM_BKUSELECTION = "performBKUSelection"; +  public static final String PROCESSCONTEXT_ISLEGACYREQUEST = "isLegacyRequest"; +   +  //General protocol-request data-store keys +  public static final String AUTHPROCESS_DATA_TARGET = "authProces_Target"; +  public static final String AUTHPROCESS_DATA_TARGETFRIENDLYNAME = "authProces_TargetFriendlyName"; +  public static final String AUTHPROCESS_DATA_SECURITYLAYERTEMPLATE = "authProces_SecurityLayerTemplate"; +   +  //General MOASession data-store keys +  public static final String MOASESSION_DATA_HOLDEROFKEY_CERTIFICATE = "holderofkey_cert"; +   +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/AuthConfiguration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/AuthConfiguration.java new file mode 100644 index 000000000..fa08dcab6 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/AuthConfiguration.java @@ -0,0 +1,162 @@ +package at.gv.egovernment.moa.id.commons.api; + +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import at.gv.egovernment.moa.id.commons.api.data.ProtocolAllowed; +import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException; +import at.gv.util.config.EgovUtilPropertiesConfiguration; + +public interface AuthConfiguration extends ConfigurationProvider{ + +	public static final String DEFAULT_X509_CHAININGMODE = "pkix"; +	 +	public Properties getGeneralPVP2ProperiesConfig(); + +	public Properties getGeneralOAuth20ProperiesConfig(); + +	public ProtocolAllowed getAllowedProtocols(); +	 +	public Map<String, String> getConfigurationWithPrefix(final String Prefix); +	 +	public String getConfigurationWithKey(final String key); +	 +	/** +	 * Get a configuration value from basic file based MOA-ID configuration +	 *  +	 * @param key configuration key  +	 * @return configuration value  +	 */ +	public String getBasicMOAIDConfiguration(final String key); +	 +	public int getTransactionTimeOut(); +	public int getSSOCreatedTimeOut(); +	public int getSSOUpdatedTimeOut(); +	  +	public String getAlternativeSourceID() throws ConfigurationException; + +	public List<String> getLegacyAllowedProtocols(); + +	public IOAAuthParameters getOnlineApplicationParameter(String oaURL); + +	public String getMoaSpAuthBlockTrustProfileID(boolean useTestTrustStore) throws ConfigurationException; + +	public List<String> getMoaSpAuthBlockVerifyTransformsInfoIDs() throws ConfigurationException; + +	public ConnectionParameterInterface getMoaSpConnectionParameter() throws ConfigurationException; +  +	public ConnectionParameterInterface getForeignIDConnectionParameter() throws ConfigurationException; + +	public ConnectionParameterInterface getOnlineMandatesConnectionParameter() throws ConfigurationException; +	 +	public String getMoaSpIdentityLinkTrustProfileID(boolean useTestTrustStore) throws ConfigurationException; + +	public List<String> getTransformsInfos() throws ConfigurationException; + +	public List<String> getIdentityLinkX509SubjectNames() throws ConfigurationException; + +	public List<String> getSLRequestTemplates() throws ConfigurationException; + +	public String getSLRequestTemplates(String type) throws ConfigurationException; + +	public List<String> getDefaultBKUURLs() throws ConfigurationException; + +	public String getDefaultBKUURL(String type) throws ConfigurationException; + +	public String getSSOTagetIdentifier() throws ConfigurationException; + +	public String getSSOFriendlyName(); + +	public String getSSOSpecialText(); + +	public String getMOASessionEncryptionKey(); + +	public String getMOAConfigurationEncryptionKey(); + +	public boolean isIdentityLinkResigning(); + +	public String getIdentityLinkResigningKey(); + +	public boolean isMonitoringActive(); + +	public String getMonitoringTestIdentityLinkURL(); + +	public String getMonitoringMessageSuccess(); + +	public boolean isAdvancedLoggingActive(); + +	/** +	 * Returns the PublicURLPrefix. +	 *  +	 * @return the PublicURLPrefix (one or more) of this IDP instance. All publicURLPrefix URLs are ends without /  +	 * @throws ConfigurationException if no PublicURLPrefix is found. +	 */ +	public List<String> getPublicURLPrefix()  throws ConfigurationException; + +	public boolean isVirtualIDPsEnabled();  +	 +	public boolean isPVP2AssertionEncryptionActive(); + +	public boolean isCertifiacteQCActive(); + +	public IStorkConfig getStorkConfig() throws ConfigurationException; + +	public EgovUtilPropertiesConfiguration geteGovUtilsConfig(); + +	public String getDocumentServiceUrl(); + +	/** +	 * Notify, if the STORK fake IdentityLink functionality is active +	 *  +	 * @return true/false  +	 */ +	public boolean isStorkFakeIdLActive(); + +	/** +	 * Get a list of all STORK countries for which a faked IdentityLink should be created +	 *  +	 * @return {List<String>} of country codes +	 */ +	public List<String> getStorkFakeIdLCountries(); + +	/** +	 * Get a list of all STORK countries for which no signature is required +	 *  +	 * @return {List<String>} of country codes +	 */ +	public List<String> getStorkNoSignatureCountries(); +	 +	/** +	 * Get the MOA-SS key-group identifier for fake IdentityLink signing +	 *  +	 * @return MOA-SS key-group identifier {String} +	 */ +	public String getStorkFakeIdLResigningKey(); + +	 +	/** +	 * Notify, if the PVP2x metadata schema validation is active +	 *  +	 * @return true/false  +	 */ +	public boolean isPVPSchemaValidationActive(); + +	/** +	 * Get all configuration values with prefix and wildcard +	 *  +	 * @param key: Search key. * and % can be used as wildcards +	 * @return Key/Value pairs {Map<String, String>}, which key maps the search key +	 */ +	Map<String, String> getConfigurationWithWildCard(String key); + +	/** +	 * Get configured default revisions-log event codes which should be logged +	 *  +	 * @return {List<Integer>} if event codes or null +	 */ +	List<Integer> getDefaultRevisionsLogEventCodes(); +	 +	@Deprecated +	public boolean isHTTPAuthAllowed(); +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/ConfigurationProvider.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/ConfigurationProvider.java new file mode 100644 index 000000000..ca0a56049 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/ConfigurationProvider.java @@ -0,0 +1,66 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api; + +/** + * @author tlenz + * + */ +public interface ConfigurationProvider { + +	  /**  +	   * 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";    +		 +		public String getRootConfigFileDir(); +		 +		public String getDefaultChainingMode(); +	 +		public String getTrustedCACertificates(); +		 +		public String getCertstoreDirectory(); +		 +		public boolean isTrustmanagerrevoationchecking(); +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/ConnectionParameterInterface.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/ConnectionParameterInterface.java new file mode 100644 index 000000000..89a21661b --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/ConnectionParameterInterface.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * 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. + *******************************************************************************/ +package at.gv.egovernment.moa.id.commons.api; + +public interface ConnectionParameterInterface { + +	 +	public boolean isHTTPSURL(); +	public String getUrl(); +	public String getAcceptedServerCertificates(); +	 +	public String getClientKeyStore(); +	public String getClientKeyStorePassword(); +	 +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IOAAuthParameters.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IOAAuthParameters.java new file mode 100644 index 000000000..be6d34275 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IOAAuthParameters.java @@ -0,0 +1,222 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api; + +import java.security.PrivateKey; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import at.gv.egovernment.moa.id.commons.api.data.CPEPS; +import at.gv.egovernment.moa.id.commons.api.data.SAML1ConfigurationParameters; +import at.gv.egovernment.moa.id.commons.api.data.StorkAttribute; +import at.gv.egovernment.moa.id.commons.api.data.StorkAttributeProviderPlugin; + +/** + * @author tlenz + * + */ +public interface IOAAuthParameters { + +	public static final String ONLINEBKU = "online"; +	public static final String HANDYBKU = "handy"; +	public static final String LOCALBKU = "local"; +	public static final String INDERFEDERATEDIDP = "interfederated"; + +	/** +	 * Get the full key/value configuration for this online application +	 *  +	 * @return an unmodifiable map of key/value pairs +	 */ +	public Map<String, String> getFullConfiguration(); +	 +	  /** +	   * Get a configuration value from online application key/value configuration +	   *  +	   * @param key: The key identifier of a configuration value   *  +	   * @return The configuration value {String} or null if the key does not exist +	   */   +	public String getConfigurationValue(String key); +	 +	public String getFriendlyName(); +	 +	public String getPublicURLPrefix(); + +	public String getOaType(); +	 +	public boolean getBusinessService(); +	 +	/** +	 * Get target of a public service-provider +	 *  +	 * @return target identifier without prefix +	 */ +	public String getTarget(); +	 +	public String getTargetFriendlyName(); +	 +	public boolean isInderfederationIDP(); +	 +	public boolean isSTORKPVPGateway(); +	 +	public boolean isRemovePBKFromAuthBlock(); +	 +	/** +	 * Return the private-service domain-identifier with PreFix +	 *  +	 * @return the identityLinkDomainIdentifier +	 */ +	public String getIdentityLinkDomainIdentifier(); + +	/** +	 * @return the keyBoxIdentifier +	 */ +	public String getKeyBoxIdentifier(); + +	public SAML1ConfigurationParameters getSAML1Parameter(); + +	/** +	 * Get a list of online application specific trusted security layer templates  +	 *  +	 * @return a {List<String>} with template URLs, maybe empty but never null +	 */ +	public List<String> getTemplateURL(); + +	 +	/** +	 * Return the additional AuthBlock text for this online application +	 *  +	 * @return authblock text {String} or null if no text is configured +	 */ +	public String getAditionalAuthBlockText(); + +	/** +	 * Return an online application specific BKU URL for a requested BKU type +	 *  +	 * @param bkutype: defines the type of BKU  +	 * @return BKU URL {String} or null if no BKU URL is configured +	 */ +	public String getBKUURL(String bkutype); + +	/** +	 * Return a list of all configured BKU URLs for this online application +	 *  +	 * @return List<String> of BKU URLs or an empty list if no BKU is configured +	 */ +	public List<String> getBKUURL(); + +	public boolean useSSO(); + +	public boolean useSSOQuestion(); + +	/** +	 * Return all mandate-profile types configured for this online application +	 *  +	 * @return the mandateProfiles {List<String>} or null if no profile is defined +	 */ +	public List<String> getMandateProfiles(); + +	/** +	 * @return the identityLinkDomainIdentifierType +	 */ +	public String getIdentityLinkDomainIdentifierType(); + +	public boolean isShowMandateCheckBox(); + +	public boolean isOnlyMandateAllowed(); + +	/** +	 * Shall we show the stork login in the bku selection frontend? +	 *  +	 * @return true, if is we should show stork login +	 */ +	public boolean isShowStorkLogin(); + +	public Integer getQaaLevel(); + +	public boolean isRequireConsentForStorkAttributes(); + +	/** +	 * Return a {Collection} of requested STORK attributes +	 *  +	 * @return {Collection<StorkAttribute>} maybe empty but never null +	 */ +	public Collection<StorkAttribute> getRequestedSTORKAttributes(); + +	public byte[] getBKUSelectionTemplate(); + +	public byte[] getSendAssertionTemplate(); + +	/** +	 * Return a {Collection} of configured STORK CPEPS  +	 *  +	 * @return {Collection<CPEPS>} maybe empty but never null +	 */ +	public Collection<CPEPS> getPepsList(); + +	public String getIDPAttributQueryServiceURL(); + +	/** +	 * @return +	 */ +	boolean isInboundSSOInterfederationAllowed(); + +	/** +	 * @return +	 */ +	boolean isInterfederationSSOStorageAllowed(); + +	/** +	 * @return +	 */ +	boolean isOutboundSSOInterfederationAllowed(); +	 +	boolean isTestCredentialEnabled(); + +	List<String> getTestCredentialOIDs(); +	 +	boolean isUseIDLTestTrustStore(); +	boolean isUseAuthBlockTestTestStore(); +	 +	PrivateKey getBPKDecBpkDecryptionKey(); + +	/**  +	 * @return +	 */ +	boolean isPassivRequestUsedForInterfederation(); + +	/** +	 * @return +	 */ +	boolean isPerformLocalAuthenticationOnInterfederationError(); + +	/** +	 * Get a {Collection} of configured STORK attribute provider plug-ins +	 *  +	 * @return {Collection<StorkAttributeProviderPlugins>} maybe empty but never null +	 */ +	public Collection<StorkAttributeProviderPlugin> getStorkAPs(); +	 +	public List<Integer> getReversionsLoggingEventCodes(); +	 +}
\ No newline at end of file diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IRequest.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IRequest.java new file mode 100644 index 000000000..b23b4474b --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IRequest.java @@ -0,0 +1,201 @@ +/******************************************************************************* + * 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. + *******************************************************************************/ +package at.gv.egovernment.moa.id.commons.api; + +import java.util.Collection; + +import at.gv.egovernment.moa.id.commons.api.exceptions.SessionDataStorageException; + +public interface IRequest { +		 +	/** +	 * Indicates the module, which implements this authentication protocol. +	 * The class, which is referenced, had to implement the 'IModulInfo' interface. +	 *  +	 * @return Full-qualified name of the class which implements this protocol +	 */ +	public String requestedModule(); +	 +	/** +	 * Indicates the protocol specific action, which should executed if the request is processed.  +	 * The class, which is referenced, had to implement the 'IAction' interface. +	 *  +	 * @return Full-qualified name of the class which implements the action   +	 */ +	public String requestedAction(); +	 +	/** +	 * Unique identifier, which indicates the service provider.  +	 * In case of SAML1 protocol, it is the OA http-GET parameter +	 *  +	 * @return Unique identifier for the service provider +	 */ +	public String getOAURL(); +	 +	/** +	 * Indicates the passive flag in authentication requests. +	 * If the passive flag is set, the identification and authentication process  +	 * failed if no active SSO session is found.  +	 *  +	 * @return true, if the is passive flag is set in authentication request, otherwise false +	 */ +	public boolean isPassiv(); +	 +	/** +	 * Indicates the force authentication flag in authentication request +	 * If this flag is set, a new identification and authentication process +	 * is carried out in any case. +	 *  +	 * @return true, if the force authentication flag is set, otherwise false +	 */ +	public boolean forceAuth(); +	 +	 +	/** +	 * Returns a generic request-data object with is stored with a specific identifier  +	 *  +	 * @param key The specific identifier of the request-data object +	 * @return The request-data object or null if no data is found with this key +	 */ +	public Object getGenericData(String key); +	 +	/** +	 * Returns a generic request-data object with is stored with a specific identifier  +	 *  +	 * @param key The specific identifier of the request-data object +	 * @param clazz The class type which is stored with this key +	 * @return The request-data object or null if no data is found with this key +	 */ +	public <T> T getGenericData(String key, final Class<T> clazz); +	 +	/**  +	 * Store a generic data-object to request with a specific identifier +	 *  +	 * @param key Identifier for this data-object +	 * @param object Generic data-object which should be stored. This data-object had to be implement the 'java.io.Serializable' interface +	 * @throws SessionDataStorageException Error message if the data-object can not stored to generic request-data storage +	 */ +	public void setGenericDataToSession(String key, Object object) throws SessionDataStorageException; +		 +	/** +	 * Hold the identifier of this request object.  +	 * This identifier can be used to load the request from request storage  +	 *  +	 * @return Request identifier +	 */ +	public String getRequestID(); +	 + +	/** +	 * Hold the identifier of the MOASession which is associated with this request +	 *  +	 * @return MOASession identifier if a associated session exists, otherwise null +	 */ +	public String getMOASessionIdentifier(); + +	 +	/** +	 * Holds a unique transaction identifier, which could be used for looging +	 * This transaction identifier is unique for a single identification and authentication process +	 *  +	 * @return Unique transaction identifier.  +	 */ +	public String getUniqueTransactionIdentifier(); +	 +	/** +	 * Holds a unique session identifier, which could be used for logging  +	 * This session identifier is unique for the full Single Sign-On session time +	 *  +	 * @return Unique session identifier +	 */ +	public String getUniqueSessionIdentifier(); +	 +	 +	/** +	 * Hold the identifier if the process instance, which is associated with this request  +	 *  +	 * @return ProcessInstanceID if this request is associated with a authentication process, otherwise null +	 */ +	public String getProcessInstanceId(); +	 +	 +	/** +	 * get the IDP URL PreFix, which was used for authentication request +	 *  +	 * @return IDP URL PreFix <String>. The URL prefix always ends without / +	 */ +	public String getAuthURL(); +	public String getAuthURLWithOutSlash(); +	 +	/** +	 * Indicates if this pending request needs authentication +	 *  +	 * @return true if this request needs authentication, otherwise false +	 */ +	public boolean isNeedAuthentication(); +	 +	/** +	 * Indicates, if this pending request needs Single Sign-On (SSO) functionality  +	 *  +	 * @return true if this request needs SSO, otherwise false +	 */ +	public boolean needSingleSignOnFunctionality(); +	public void setNeedSingleSignOnFunctionality(boolean needSSO); +	 +	/** +	 * Indicates, if this pending request is already authenticated +	 *  +	 * @return true if this request is already authenticated, otherwise false +	 */ +	public boolean isAuthenticated(); +	public void setAuthenticated(boolean isAuthenticated); +	 +	/** +	 * Get get Service-Provider configuration which is associated with this request. +	 *  +	 * @return Service-Provider configuration +	 */ +	public IOAAuthParameters getOnlineApplicationConfiguration(); + +	/** +	 * Indicates, if this pending-request is aborted by the user +	 *  +	 * @return true, if it is aborted, otherwise false +	 */ +	public boolean isAbortedByUser(); + +	/** +	 * Set the 'isAboredByUser' flag of this pending-request +	 *  +	 * @param b true, if the user has abort the authentication process, otherwise false +	 */ +	public void setAbortedByUser(boolean isAborted); +	 +	/** +	 * This method get a Set of PVP 2.1 attribute, which are request by this pending-request. +	 *  +	 * @return A set of PVP attribute names or null if no attributes are requested  +	 * 			or the Service Provider, which sends this request needs no attributes +	 */ +	public Collection<String> getRequestedAttributes(); +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IStorkConfig.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IStorkConfig.java new file mode 100644 index 000000000..b2d90aed4 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/IStorkConfig.java @@ -0,0 +1,51 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api; + +import java.util.List; +import java.util.Map; + +import at.gv.egovernment.moa.id.commons.api.data.CPEPS; +import at.gv.egovernment.moa.id.commons.api.data.SignatureCreationParameter; +import at.gv.egovernment.moa.id.commons.api.data.SignatureVerificationParameter; +import at.gv.egovernment.moa.id.commons.api.data.StorkAttribute; + +/** + * @author tlenz + * + */ +public interface IStorkConfig { + +	SignatureCreationParameter getSignatureCreationParameter(); + +	SignatureVerificationParameter getSignatureVerificationParameter(); + +	Map<String, CPEPS> getCpepsMap(); + +	boolean isSTORKAuthentication(String ccc); + +	CPEPS getCPEPS(String ccc); + +	List<StorkAttribute> getStorkAttributes(); + +}
\ No newline at end of file diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/BPKDecryptionParameters.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/BPKDecryptionParameters.java new file mode 100644 index 000000000..cb81fe79e --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/BPKDecryptionParameters.java @@ -0,0 +1,135 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api.data; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.UnrecoverableKeyException; + +import org.apache.commons.lang3.SerializationUtils; + +import at.gv.egovernment.moa.logging.Logger; +import at.gv.egovernment.moa.util.KeyStoreUtils; + + +/** + * @author tlenz  + * + */ +public class BPKDecryptionParameters implements Serializable{ + +	private static final long serialVersionUID = 1L; +	 +	private byte[] keyStore = null; +	private String keyStorePassword = null; +	private String keyAlias = null; +	private String keyPassword = null; +	 +	/** +	 * @return +	 * @throws IOException  +	 */ +	public PrivateKey getPrivateKey() { +		InputStream in = null; +		try { +			in = new ByteArrayInputStream(keyStore); +			KeyStore store = KeyStoreUtils.loadKeyStore(in , keyStorePassword); +			 +		    char[] chPassword = " ".toCharArray(); +		    if (keyPassword != null) +		      chPassword = keyPassword.toCharArray(); +		     +//		    Certificate test = store.getCertificate(keyAlias); +//		    Base64Utils.encode(test.getPublicKey().getEncoded()); +		     +			return (PrivateKey) store.getKey(keyAlias, chPassword); +			 +			 +		} catch (KeyStoreException e) { +			Logger.error("Can not load private key from keystore.", e); +			 +		} catch (IOException e) { +			Logger.error("Can not load private key from keystore.", e); +			 +		} catch (UnrecoverableKeyException e) { +			Logger.error("Can not load private key from keystore.", e); + +		} catch (NoSuchAlgorithmException e) { +			Logger.error("Can not load private key from keystore.", e); +			 +		} finally { +			if (in != null) { +				try { +					in.close(); +				} catch (IOException e) { +					Logger.warn("Close InputStream failed." , e); +				} +			}			 +		} +		 +		return null;		 +	} +	 +	public byte[] serialize() { +		return SerializationUtils.serialize(this); +		 +	} + +	/** +	 * @param keyStore the keyStore to set +	 */ +	public void setKeyStore(byte[] keyStore) { +		this.keyStore = keyStore; +	} + +	/** +	 * @param keyStorePassword the keyStorePassword to set +	 */ +	public void setKeyStorePassword(String keyStorePassword) { +		this.keyStorePassword = keyStorePassword; +	} + +	/** +	 * @param keyAlias the keyAlias to set +	 */ +	public void setKeyAlias(String keyAlias) { +		this.keyAlias = keyAlias; +	} + +	/** +	 * @param keyPassword the keyPassword to set +	 */ +	public void setKeyPassword(String keyPassword) { +		this.keyPassword = keyPassword; +	} +	 +	 +	 +	 +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/CPEPS.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/CPEPS.java new file mode 100644 index 000000000..a88aa2171 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/CPEPS.java @@ -0,0 +1,138 @@ +/*******************************************************************************
 + * 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.
 + *******************************************************************************/
 +/**
 + * 
 + */
 +package at.gv.egovernment.moa.id.commons.api.data;
 +
 +import java.net.URL;
 +import java.util.ArrayList;
 +import java.util.List;
 +
 +import org.opensaml.saml2.metadata.RequestedAttribute;
 +
 +/**
 + * Encpasulates C-PEPS information according MOA configuration
 + * 
 + * @author bzwattendorfer
 + *
 + */
 +public class CPEPS {
 +	
 +	/**  Country Code of C-PEPS */
 +	private String countryCode;
 +	
 +	/**  URL of C-PEPS */
 +	private URL pepsURL;
 +	
 +	private Boolean isXMLSignatureSupported;
 +
 +	/** Specific attributes to be requested for this C-PEPS */
 +	private List<RequestedAttribute> countrySpecificRequestedAttributes = new ArrayList<RequestedAttribute>();
 +	
 +	/**
 +	 * Constructs a C-PEPS
 +	 * @param countryCode ISO Country Code of C-PEPS
 +	 * @param pepsURL URL of C-PEPS
 +	 */
 +	public CPEPS(String countryCode, URL pepsURL, Boolean isXMLSignatureSupported) {
 +		super();
 +		this.countryCode = countryCode;
 +		this.pepsURL = pepsURL;
 +		this.isXMLSignatureSupported = isXMLSignatureSupported;
 +	}
 +
 +	/**
 +	 * Gets the country code of this C-PEPS
 +	 * @return ISO country code
 +	 */
 +	public String getCountryCode() {
 +		return countryCode;
 +	}
 +
 +	/**
 +	 * Sets the country code of this C-PEPS
 +	 * @param countryCode ISO country code
 +	 */
 +	public void setCountryCode(String countryCode) {
 +		this.countryCode = countryCode;
 +	}
 +
 +	/**
 +	 * Gets the URL of this C-PEPS
 +	 * @return C-PEPS URL
 +	 */
 +	public URL getPepsURL() {
 +		return pepsURL;
 +	}
 +
 +	/**
 +	 * Sets the C-PEPS URL
 +	 * @param pepsURL C-PEPS URL
 +	 */
 +	public void setPepsURL(URL pepsURL) {
 +		this.pepsURL = pepsURL;
 +	}
 +
 +	/**
 +	 * Returns weather the C-PEPS supports XMl Signatures or not (important for ERnB)
 +	 */
 +	public Boolean isXMLSignatureSupported() {
 +		return isXMLSignatureSupported;
 +	}
 +
 +	/**
 +	 * Sets weather the C-PEPS supports XMl Signatures or not (important for ERnB)
 +	 * @param isXMLSignatureSupported C-PEPS XML Signature support
 +	 */
 +	public void setXMLSignatureSupported(boolean isXMLSignatureSupported) {
 +		this.isXMLSignatureSupported = isXMLSignatureSupported;
 +	}
 +	
 +	/**
 +	 * Gets the country specific attributes of this C-PEPS
 +	 * @return List of country specific attributes
 +	 */
 +	public List<RequestedAttribute> getCountrySpecificRequestedAttributes() {
 +		return countrySpecificRequestedAttributes;
 +	}
 +
 +	/**
 +	 * Sets the country specific attributes
 +	 * @param countrySpecificRequestedAttributes List of country specific requested attributes
 +	 */
 +	public void setCountrySpecificRequestedAttributes(
 +			List<RequestedAttribute> countrySpecificRequestedAttributes) {
 +		this.countrySpecificRequestedAttributes = countrySpecificRequestedAttributes;
 +	}
 +	
 +	/**
 +	 * Adds a Requested attribute to the country specific attribute List
 +	 * @param countrySpecificRequestedAttribute Additional country specific requested attribute to add 
 +	 */
 +	public void addCountrySpecificRequestedAttribute(RequestedAttribute countrySpecificRequestedAttribute) {
 +		this.countrySpecificRequestedAttributes.add(countrySpecificRequestedAttribute);
 +	}
 +	
 +
 +}
 diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/ProtocolAllowed.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/ProtocolAllowed.java new file mode 100644 index 000000000..4f63dca54 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/ProtocolAllowed.java @@ -0,0 +1,91 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api.data; + +/** + * @author tlenz + * + */ +public class ProtocolAllowed { + +	private boolean isSAML1Active = false; +	private boolean isPVP21Active = true; +	private boolean isOAUTHActive = true; +	 +	/** +	 *  +	 */ +	public ProtocolAllowed() { +		 +	} +	 +	/** +	 *  +	 */ +	public ProtocolAllowed(boolean saml1, boolean pvp21, boolean oauth) { +		this.isOAUTHActive = oauth; +		this.isPVP21Active = pvp21; +		this.isSAML1Active = saml1; +		 +	} +	 +	/** +	 * @return the isSAML1Active +	 */ +	public boolean isSAML1Active() { +		return isSAML1Active; +	} +	/** +	 * @param isSAML1Active the isSAML1Active to set +	 */ +	public void setSAML1Active(boolean isSAML1Active) { +		this.isSAML1Active = isSAML1Active; +	} +	/** +	 * @return the isPVP21Active +	 */ +	public boolean isPVP21Active() { +		return isPVP21Active; +	} +	/** +	 * @param isPVP21Active the isPVP21Active to set +	 */ +	public void setPVP21Active(boolean isPVP21Active) { +		this.isPVP21Active = isPVP21Active; +	} +	/** +	 * @return the isOAUTHActive +	 */ +	public boolean isOAUTHActive() { +		return isOAUTHActive; +	} +	/** +	 * @param isOAUTHActive the isOAUTHActive to set +	 */ +	public void setOAUTHActive(boolean isOAUTHActive) { +		this.isOAUTHActive = isOAUTHActive; +	} +	 +	 +	 +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SAML1ConfigurationParameters.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SAML1ConfigurationParameters.java new file mode 100644 index 000000000..eb709a6f1 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SAML1ConfigurationParameters.java @@ -0,0 +1,276 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api.data; + +/** + * @author tlenz + * + */ +public class SAML1ConfigurationParameters { + +		private boolean isActive = false; +		private boolean provideBaseId = false; +		private boolean provideAuthBlock = false; +		private boolean provideIdl = false; +		private boolean provideCertificate = false; +		private boolean provideMandate = false; +		private boolean provideAllErrors = true; +		private boolean useCondition = false; +		private String sourceID = null; +		private String condition = new String(); +		 +		 +		/** +		 *  +		 */ +		public SAML1ConfigurationParameters(boolean isActive, +				boolean provideBaseId, boolean provideAuthBlock, +				boolean provideIdl, boolean provideCertificate, +				boolean provideMandate, boolean provideAllErrors, +				boolean useCondition, String condition, +				String sourceID) { +			this.condition = condition; +			this.isActive = isActive; +			this.provideAllErrors = provideAllErrors; +			this.provideAuthBlock = provideAuthBlock; +			this.provideBaseId = provideBaseId; +			this.provideCertificate = provideCertificate; +			this.provideIdl = provideIdl; +			this.provideMandate = provideMandate; +			this.useCondition = useCondition; +			this.sourceID = sourceID; +			 +		} +		 +		 +		/** +		 *  +		 */ +		public SAML1ConfigurationParameters() { +			 +		} + + +		/** +		 * Gets the value of the isActive property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isIsActive() { +			return this.isActive; +		} + +		/** +		 * @param isActive the isActive to set +		 */ +		public void setActive(boolean isActive) { +			this.isActive = isActive; +		} + + +		/** +		 * @param provideBaseId the provideBaseId to set +		 */ +		public void setProvideBaseId(boolean provideBaseId) { +			this.provideBaseId = provideBaseId; +		} + + +		/** +		 * @param provideAuthBlock the provideAuthBlock to set +		 */ +		public void setProvideAuthBlock(boolean provideAuthBlock) { +			this.provideAuthBlock = provideAuthBlock; +		} + + +		/** +		 * @param provideIdl the provideIdl to set +		 */ +		public void setProvideIdl(boolean provideIdl) { +			this.provideIdl = provideIdl; +		} + + +		/** +		 * @param provideCertificate the provideCertificate to set +		 */ +		public void setProvideCertificate(boolean provideCertificate) { +			this.provideCertificate = provideCertificate; +		} + + +		/** +		 * @param provideMandate the provideMandate to set +		 */ +		public void setProvideMandate(boolean provideMandate) { +			this.provideMandate = provideMandate; +		} + + +		/** +		 * @param provideAllErrors the provideAllErrors to set +		 */ +		public void setProvideAllErrors(boolean provideAllErrors) { +			this.provideAllErrors = provideAllErrors; +		} + + +		/** +		 * @param useCondition the useCondition to set +		 */ +		public void setUseCondition(boolean useCondition) { +			this.useCondition = useCondition; +		} + + +		/** +		 * @param sourceID the sourceID to set +		 */ +		public void setSourceID(String sourceID) { +			this.sourceID = sourceID; +		} + + +		/** +		 * @param condition the condition to set +		 */ +		public void setCondition(String condition) { +			this.condition = condition; +		} + + +		/** +		 * Gets the value of the provideStammzahl property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isProvideStammzahl() { +			return this.provideBaseId; +		} +		 +		/** +		 * Gets the value of the provideAUTHBlock property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isProvideAUTHBlock() { +			return this.provideAuthBlock; +		} + +		/** +		 * Gets the value of the provideIdentityLink property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isProvideIdentityLink() { +			return this.provideIdl; +		} + +		/** +		 * Gets the value of the provideCertificate property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isProvideCertificate() { +			return this.provideCertificate; +		} + +		/** +		 * Gets the value of the provideFullMandatorData property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isProvideFullMandatorData() { +			return this.provideMandate; +		} + +		/** +		 * Gets the value of the useCondition property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isUseCondition() { +			return this.useCondition; +		} + +		/** +		 * Gets the value of the conditionLength property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link BigInteger } +		 *      +		 */ + +		public int getConditionLength() { +			return condition.length(); +		} + +		/** +		 * Gets the value of the sourceID property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public String getSourceID() { +			return this.sourceID; +		} + +		/** +		 * Gets the value of the provideAllErrors property. +		 *  +		 * @return +		 *     possible object is +		 *     {@link String } +		 *      +		 */ +		public Boolean isProvideAllErrors() { +			return this.provideAllErrors; +		} + +} + diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SignatureCreationParameter.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SignatureCreationParameter.java new file mode 100644 index 000000000..9bfd93977 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SignatureCreationParameter.java @@ -0,0 +1,103 @@ +/*******************************************************************************
 + * 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.commons.api.data;
 +
 +import java.util.Properties;
 +
 +/**
 + * Encapsulates signature creation parameters according MOA configuration
 + * 
 + * @author bzwattendorfer
 + *
 + */
 +public class SignatureCreationParameter {
 +	
 +	private static final String PROPS_PREFIX = "stork.samlsigningparameter.signaturecreation.";
 +	private static final String PROPS_KEYSTORE_FILE = "keystore.file";
 +	private static final String PROPS_KEYSTORE_PASS = "keystore.password";
 +	private static final String PROPS_KEYNAME_NAME = "keyname.name";
 +	private static final String PROPS_KEYNAME_PASS = "keyname.password";
 +	
 +	private Properties props;
 +	private String basedirectory;
 +	
 +	public SignatureCreationParameter(Properties props, String basedirectory) {
 +		this.props = props;
 +		this.basedirectory = basedirectory;
 +	}
 +	
 +	/**
 +	 * Gets the KeyStore Path
 +	 * @return File Path to KeyStore
 +	 */
 +	public String getKeyStorePath() {
 +		return basedirectory + props.getProperty(PROPS_PREFIX+PROPS_KEYSTORE_FILE);
 +	}
 +
 +	/**
 +	 * Gets the KeyStore Password
 +	 * @return Password to KeyStore
 +	 */
 +	public String getKeyStorePassword() {
 +		return props.getProperty(PROPS_PREFIX+PROPS_KEYSTORE_PASS);
 +	}
 +
 +	/**
 +	 * Gets the Signing Key Name
 +	 * @return Siging Key Name
 +	 */
 +	public String getKeyName() {
 +		return props.getProperty(PROPS_PREFIX+PROPS_KEYNAME_NAME);
 +	}
 +
 +	/**
 +	 * Gets the Signing Key Password
 +	 * @return Signing Key Password
 +	 */
 +	public String getKeyPassword() {
 +		return props.getProperty(PROPS_PREFIX+PROPS_KEYNAME_PASS);
 +	}
 +}
 diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SignatureVerificationParameter.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SignatureVerificationParameter.java new file mode 100644 index 000000000..f408ea7fe --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/SignatureVerificationParameter.java @@ -0,0 +1,53 @@ +/*******************************************************************************
 + * 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.
 + *******************************************************************************/
 +/**
 + * 
 + */
 +package at.gv.egovernment.moa.id.commons.api.data;
 +
 +/**
 + * Encapsulates Signature Verification data for STORK according MOA configuration
 + * 
 + * @author bzwattendorfer
 + *
 + */
 +public class SignatureVerificationParameter {
 +	
 +	/** ID of the MOA-SP TrustProfile to be used for STORK SAML signature verification */
 +	private String trustProfileID;
 +
 +	public SignatureVerificationParameter(String trustProfileID2) {
 +		this.trustProfileID = trustProfileID2;
 +	}
 +
 +	/**
 +	 * Gets the MOA-SP TrustProfileID
 +	 * @return TrustProfileID of MOA-SP for STORK signature verification
 +	 */
 +	public String getTrustProfileID() {
 +		return trustProfileID;
 +	}
 +
 +	
 +
 +}
 diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/StorkAttribute.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/StorkAttribute.java new file mode 100644 index 000000000..1bbb7d3fe --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/StorkAttribute.java @@ -0,0 +1,27 @@ +package at.gv.egovernment.moa.id.commons.api.data; + +public class StorkAttribute { + +	protected Boolean mandatory; +	protected String name; +	 +	public StorkAttribute(String name, boolean mandatory) { +		this.name = name; +		this.mandatory = mandatory; +	} +	 +	public Boolean getMandatory() { +		return mandatory; +	} +	public void setMandatory(Boolean mandatory) { +		this.mandatory = mandatory; +	} +	public String getName() { +		return name; +	} +	public void setName(String name) { +		this.name = name; +	} +	 +	 +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/StorkAttributeProviderPlugin.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/StorkAttributeProviderPlugin.java new file mode 100644 index 000000000..070d304a6 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/StorkAttributeProviderPlugin.java @@ -0,0 +1,81 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api.data; + +/** + * @author tlenz + * + */ +public class StorkAttributeProviderPlugin { +	private String name = null; +	private String url = null; +	private String attributes = null; +	 +	/** +	 *  +	 */ +	public StorkAttributeProviderPlugin(String name, String url, String attributes) { +		this.name = name; +		this.url = url; +		this.attributes = attributes; +	} +	 +	/** +	 * @return the name +	 */ +	public String getName() { +		return name; +	} +	/** +	 * @param name the name to set +	 */ +	public void setName(String name) { +		this.name = name; +	} +	/** +	 * @return the url +	 */ +	public String getUrl() { +		return url; +	} +	/** +	 * @param url the url to set +	 */ +	public void setUrl(String url) { +		this.url = url; +	} +	/** +	 * @return the attributes +	 */ +	public String getAttributes() { +		return attributes; +	} +	/** +	 * @param attributes the attributes to set +	 */ +	public void setAttributes(String attributes) { +		this.attributes = attributes; +	} +	 +	 +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/ConfigurationException.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/ConfigurationException.java new file mode 100644 index 000000000..e8f6da323 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/ConfigurationException.java @@ -0,0 +1,78 @@ +package at.gv.egovernment.moa.id.commons.api.exceptions; +/******************************************************************************* + * 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. + */ + +/** + * Exception signalling an error in the configuration. + *  + * @author Patrick Peck + * @version $Id$ + */ +public class ConfigurationException extends MOAIDException { + +  /** +	 *  +	 */ +	private static final long serialVersionUID = -7199539463319751278L; + +/** +   * Create a <code>MOAConfigurationException</code>. +   */ +  public ConfigurationException(String messageId, Object[] parameters) { +    super(messageId, parameters); +  } + +  /** +   * Create a <code>MOAConfigurationException</code>. +   */ +  public ConfigurationException( +    String messageId, +    Object[] parameters, +    Throwable wrapped) { + +    super(messageId, parameters, wrapped); +  } + +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/MOAIDException.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/MOAIDException.java new file mode 100644 index 000000000..6841be92b --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/MOAIDException.java @@ -0,0 +1,170 @@ +/******************************************************************************* + * 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.commons.api.exceptions; + +import java.io.PrintStream; +import java.io.PrintWriter; + +import at.gv.egovernment.moa.id.commons.utils.MOAIDMessageProvider; + +/** + * Base class of technical MOA exceptions. + *  + * Technical exceptions are exceptions that originate from system failure (e.g., + * a database connection fails, a component is not available, etc.) + *  + * @author Patrick Peck, Ivancsics Paul + * @version $Id$ + */ +public class MOAIDException extends Exception { +  /** +	 *  +	 */ +	private static final long serialVersionUID = -1507246171708083912L; +/** message ID */ +  private String messageId; +  /** wrapped exception */ +  private Throwable wrapped; + +  private Object[] parameters; +   +  /** +   * Create a new <code>MOAIDException</code>. +   *  +   * @param messageId The identifier of the message associated with this  +   * exception. +   * @param parameters Additional message parameters. +   */ +  public MOAIDException(String messageId, Object[] parameters) { +    super(MOAIDMessageProvider.getInstance().getMessage(messageId, parameters)); +    this.messageId = messageId; +    this.parameters = parameters; +  } + +  /** +   * Create a new <code>MOAIDException</code>. +   *  +   * @param messageId The identifier of the message associated with this  +   * <code>MOAIDException</code>. +   * @param parameters Additional message parameters. +   * @param wrapped The exception wrapped by this +   * <code>MOAIDException</code>. +   */ +  public MOAIDException( +    String messageId, +    Object[] parameters, +    Throwable wrapped) { +       +    super(MOAIDMessageProvider.getInstance().getMessage(messageId, parameters)); +    this.messageId = messageId; +    this.wrapped = wrapped; +    this.parameters = parameters; +  } + +  /** +   * Print a stack trace of this exception to <code>System.err</code>. +   *  +   * @see java.lang.Throwable#printStackTrace() +   */ +  public void printStackTrace() { +    printStackTrace(System.err); +  } + +  /** +   * Print a stack trace of this exception, including the wrapped exception. +   *  +   * @param s The stream to write the stack trace to. +   * @see java.lang.Throwable#printStackTrace(java.io.PrintStream) +   */ +  public void printStackTrace(PrintStream s) { +    if (getWrapped() == null) +      super.printStackTrace(s); +    else { +      s.print("Root exception: "); +      getWrapped().printStackTrace(s); +    } +  } + +  /** +   * Print a stack trace of this exception, including the wrapped exception. +   *  +   * @param s The stream to write the stacktrace to. +   * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter) +   */ +  public void printStackTrace(PrintWriter s) { +    if (getWrapped() == null) +      super.printStackTrace(s); +    else { +      s.print("Root exception: "); +      getWrapped().printStackTrace(s); +    } +  } + +  /** +   * @return message ID +   */ +  public String getMessageId() { +    return messageId; +  } + +  /** +   * @return wrapped exception +   */ +  public Throwable getWrapped() { +    return wrapped; +  } + +   +   +  /** + * @return the parameters + */ +public Object[] getParameters() { +	return parameters; +} + +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/SessionDataStorageException.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/SessionDataStorageException.java new file mode 100644 index 000000000..9414556a2 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/exceptions/SessionDataStorageException.java @@ -0,0 +1,45 @@ +/* + * 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. + */ +package at.gv.egovernment.moa.id.commons.api.exceptions; + +/** + * @author tlenz  + * + */ +public class SessionDataStorageException extends MOAIDException { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 5743057708136365929L; + +	/** +	 * @param messageId +	 * @param parameters +	 */ +	public SessionDataStorageException(String messageId, Object[] parameters) { +		super(messageId, parameters); +		 +	} + +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationMigrationUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationMigrationUtils.java index 63d8f463c..fb2ef456c 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationMigrationUtils.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationMigrationUtils.java @@ -22,8 +22,6 @@ moaidconfigmoaidconfigmoaidconfig * Copyright 2014 Federal Chancellery Austria   */  package at.gv.egovernment.moa.id.commons.config; -import iaik.x509.X509Certificate; -  import java.io.IOException;  import java.math.BigInteger;  import java.security.cert.CertificateException; @@ -88,6 +86,7 @@ import at.gv.egovernment.moa.id.commons.validation.TargetValidator;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.MiscUtil; +import iaik.x509.X509Certificate;  /**   * @author tlenz @@ -1259,10 +1258,16 @@ public class ConfigurationMigrationUtils {  						if (list.contains(MOA_CONFIG_PROTOCOL_SAML1))  							result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY,   									Boolean.TRUE.toString()); +						else +							result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY,  +									Boolean.FALSE.toString());  						if (list.contains(MOA_CONFIG_PROTOCOL_PVP2))  							result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY,   									Boolean.TRUE.toString()); +						else +							result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY,  +									Boolean.FALSE.toString());  					}  					SAML1 saml1 = protocols.getSAML1(); @@ -1277,14 +1282,18 @@ public class ConfigurationMigrationUtils {  							result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID,   									saml1.getSourceID()); -					} +					} else +						result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_ENABLED,  +								Boolean.FALSE.toString());  					OAuth oauth = protocols.getOAuth();  					if (oauth != null) {  						result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_ENABLED,   								String.valueOf(oauth.isIsActive())); -					} +					} else +						result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_ENABLED,  +								Boolean.FALSE.toString());  					PVP2 pvp2 = protocols.getPVP2();  					if (pvp2 != null) { @@ -1323,7 +1332,10 @@ public class ConfigurationMigrationUtils {  							result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL,   									org.getURL());  						} -					}	 +						 +					} else +						result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_ENABLED,  +								Boolean.FALSE.toString());  				}  				SecurityLayer seclayer = auth.getSecurityLayer(); diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java index 28c705c71..e2f793edf 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java @@ -248,30 +248,49 @@ public class NewConfigurationDBRead {  	 * @param id  	 * @return  	 */ -	public OnlineApplication getOnlineApplication(String id) { +	public List<OnlineApplication> getOnlineApplications(String id) {  		Logger.trace("Getting OnlineApplication with ID " + id + " from database.");  		// select onlineapplication from OnlineApplication onlineapplication  		// where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) -		OnlineApplication result = null; +		List<OnlineApplication> result = new ArrayList<OnlineApplication>();  		List<OnlineApplication> allOAs = getAllOnlineApplications();  		for (OnlineApplication oa : nullGuard(allOAs)) { -			String publicUrlPrefix = oa.getPublicURLPrefix(); -			if (publicUrlPrefix != null && publicUrlPrefix.length() <= id.length()) { -				if (id.substring(0, publicUrlPrefix.length()).equals(publicUrlPrefix)) { -					if (result != null) { -						Logger.warn("OAIdentifier match to more then one DB-entry!"); -						return null; -					} else { -						result = oa; -					} -				} +			String publicUrlPrefix = oa.getPublicURLPrefix();			 +			if (publicUrlPrefix != null && publicUrlPrefix.length() <= id.length()) {				 +				if (id.substring(0, publicUrlPrefix.length()).equals(publicUrlPrefix)) +					result.add(oa); +					  			}  		}  		return result;  	} +	 +	/** +	 *  +	 * @param id +	 * @return +	 */ +	public OnlineApplication getOnlineApplication(String id) { +		Logger.trace("Getting OnlineApplication with ID " + id + " from database."); + +		// select onlineapplication from OnlineApplication onlineapplication +		// where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) +		List<OnlineApplication> result = getOnlineApplications(id); + +		if (result != null && result.size() == 1) +			return result.get(0); +		 +		else if (result != null && result.size() > 1) +			Logger.warn("OAIdentifier match to more then one DB-entry!"); +		 +		else +			Logger.warn("no OA with OAIdentifier: "+ id); + +		return null; +	}  	/**  	 *  diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AssertionStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AssertionStore.java index a49142d87..c2f5ec962 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AssertionStore.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AssertionStore.java @@ -27,8 +27,6 @@ import java.util.Date;  import javax.persistence.Column;  import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.Lob;  import javax.persistence.NamedQueries; @@ -52,7 +50,7 @@ public class AssertionStore implements Serializable{  	private static final long serialVersionUID = 1L;  	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) +	//@GeneratedValue(strategy = GenerationType.AUTO)  	@Column(name = "id", unique=true, nullable=false)  	private long id; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AuthenticatedSessionStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AuthenticatedSessionStore.java index a8cc1928e..6333451b9 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AuthenticatedSessionStore.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AuthenticatedSessionStore.java @@ -31,8 +31,6 @@ import javax.persistence.CascadeType;  import javax.persistence.Column;  import javax.persistence.Entity;  import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.Lob;  import javax.persistence.NamedQueries; @@ -67,7 +65,7 @@ public class AuthenticatedSessionStore implements Serializable{  	private static final long serialVersionUID = 1L;  	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) +	//@GeneratedValue(strategy = GenerationType.AUTO)  	@Column(name = "id", unique=true, nullable=false)  	private long id; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/ExceptionStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/ExceptionStore.java deleted file mode 100644 index 0d56896ff..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/ExceptionStore.java +++ /dev/null @@ -1,125 +0,0 @@ -/******************************************************************************* - * 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. - *******************************************************************************/ -package at.gv.egovernment.moa.id.commons.db.dao.session; - -import java.io.Serializable; -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Lob; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; - -import org.hibernate.annotations.DynamicUpdate; - - - -@Entity -@DynamicUpdate(value=true) -@Table(name = "exceptionstore") -@NamedQueries({ -    @NamedQuery(name="getExceptionWithID", query = "select exceptionstore from ExceptionStore exceptionstore where exceptionstore.exid = :id"), -    @NamedQuery(name="getExceptionWithTimeOut", query = "select exceptionstore from ExceptionStore exceptionstore where exceptionstore.timestamp < :timeout") -}) - -public class ExceptionStore implements Serializable{ - -	private static final long serialVersionUID = 1L; - -	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) -	@Column(name = "id", unique=true, nullable=false) -	private long id; -	 -	@Column(name = "exid", unique=true, nullable=false) -	private String exid; -		 -	@Column(name = "exception", nullable=false) -	@Lob private byte [] exception; -	 -	@Column(name = "timestamp", nullable=false) -	private Date timestamp; - -	/** -	 * @return the id -	 */ -	public long getId() { -		return id; -	} - -	/** -	 * @param id the id to set -	 */ -	public void setId(long id) { -		this.id = id; -	} - -	/** -	 * @return the exid -	 */ -	public String getExid() { -		return exid; -	} - -	/** -	 * @param exid the exid to set -	 */ -	public void setExid(String exid) { -		this.exid = exid; -	} - -	/** -	 * @return the exception -	 */ -	public byte[] getException() { -		return exception; -	} - -	/** -	 * @param exception the exception to set -	 */ -	public void setException(byte[] exception) { -		this.exception = exception; -	} - -	/** -	 * @return the timestamp -	 */ -	public Date getTimestamp() { -		return timestamp; -	} - -	/** -	 * @param timestamp the timestamp to set -	 */ -	public void setTimestamp(Date timestamp) { -		this.timestamp = timestamp; -	} - -		 -} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/InterfederationSessionStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/InterfederationSessionStore.java index 54216edc4..c62e8be32 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/InterfederationSessionStore.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/InterfederationSessionStore.java @@ -28,8 +28,6 @@ import java.util.Date;  import javax.persistence.Column;  import javax.persistence.Entity;  import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.JoinColumn;  import javax.persistence.ManyToOne; @@ -46,7 +44,7 @@ public class InterfederationSessionStore implements Serializable{  	private static final long serialVersionUID = 1L;  	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) +	//@GeneratedValue(strategy = GenerationType.AUTO)  	@Column(name = "id", unique=true, nullable=false)  	private long id; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OASessionStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OASessionStore.java index 44ae43115..a11d94af4 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OASessionStore.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OASessionStore.java @@ -28,8 +28,6 @@ import java.util.Date;  import javax.persistence.Column;  import javax.persistence.Entity;  import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.JoinColumn;  import javax.persistence.ManyToOne; @@ -46,7 +44,7 @@ public class OASessionStore implements Serializable{  	private static final long serialVersionUID = 1L;  	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) +	//@GeneratedValue(strategy = GenerationType.AUTO)  	@Column(name = "idOASession", unique=true, nullable=false)  	private long idOASession; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OldSSOSessionIDStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OldSSOSessionIDStore.java index a85bdf2ca..195406a37 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OldSSOSessionIDStore.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/OldSSOSessionIDStore.java @@ -27,8 +27,6 @@ import java.io.Serializable;  import javax.persistence.Column;  import javax.persistence.Entity;  import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.JoinColumn;  import javax.persistence.ManyToOne; @@ -51,7 +49,7 @@ public class OldSSOSessionIDStore implements Serializable{  	private static final long serialVersionUID = 1L;  	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) +	//@GeneratedValue(strategy = GenerationType.AUTO)  	@Column(name = "idOldSSOSession", unique=true, nullable=false)  	private long idOldSSOSession; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/statistic/StatisticLog.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/statistic/StatisticLog.java index 97f26812f..6040d9870 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/statistic/StatisticLog.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/statistic/StatisticLog.java @@ -27,8 +27,6 @@ import java.util.Date;  import javax.persistence.Column;  import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.NamedQueries;  import javax.persistence.NamedQuery; @@ -50,7 +48,7 @@ public class StatisticLog implements Serializable{  	private static final long serialVersionUID = 1L;  	@Id -	@GeneratedValue(strategy = GenerationType.AUTO) +	//@GeneratedValue(strategy = GenerationType.AUTO)  	@Column(name = "id", unique=true, nullable=false)  	private long id; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAIDMessageProvider.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAIDMessageProvider.java new file mode 100644 index 000000000..4d8a07a55 --- /dev/null +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAIDMessageProvider.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * 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.commons.utils; + +import java.util.Locale; + +import at.gv.egovernment.moa.util.Messages; + +/** + * A singleton wrapper around a <code>Message</code> object, providing the messages used in MOA-ID. + *  + * @author Paul Ivancsics + * @version $Id$ + */ +public class MOAIDMessageProvider { +   +  /** DEFAULT_MESSAGE_RESOURCES are resources/properties/id_messages */ +  private static final String[] DEFAULT_MESSAGE_RESOURCES = +    { "resources/properties/id_messages" }; +  /** DEFAULT_MESSAGE_LOCALES are "de", "AT" */   +  private static final Locale[] DEFAULT_MESSAGE_LOCALES = +    new Locale[] { new Locale("de", "AT") }; +   /** The instance for our singleton */   +  private static MOAIDMessageProvider instance; +  /** The Messages */ +  private Messages messages; +   +  /** +   * Returns the single instance of <code>MOAIDMessageProvider</code>. +   *  +   * @return the single instance of <code>MOAIDMessageProvider</code> +   */ +  public static MOAIDMessageProvider getInstance() { +    if (instance == null) +      instance = new MOAIDMessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES); +    return instance; +  } +   +  /** +   * Create a <code>MOAIDMessageProvider</code>. +   *  +   * @param resourceNames The names of the resources containing the messages. +   * @param locales The corresponding locales. +   */ +  protected MOAIDMessageProvider(String[] resourceNames, Locale[] locales) { +    this.messages = new Messages(resourceNames, locales); +  } +   +  /** +   * Get the message corresponding to a given message ID. +   * +   * @param messageId The ID of the message. +   * @param parameters The parameters to fill in into the message arguments. +   * @return The formatted message.  +   */ +  public String getMessage(String messageId, Object[] parameters) { +    return messages.getMessage(messageId, parameters); +  } + +} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java index 0a07fc4a7..95cd63643 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java @@ -33,6 +33,7 @@ import java.util.HashSet;  import java.util.Iterator;  import java.util.List;  import java.util.Map; +import java.util.Map.Entry;  import java.util.Set;  import java.util.Vector; @@ -115,7 +116,7 @@ public class DOMUtils {    private static final String EXTERNAL_PARAMETER_ENTITIES_FEATURE =  	  "http://xml.org/sax/features/external-parameter-entities"; -  private static final String DISALLOW_DOCTYPE_FEATURE = +  public static final String DISALLOW_DOCTYPE_FEATURE =  		  "http://apache.org/xml/features/disallow-doctype-decl"; @@ -205,7 +206,8 @@ public class DOMUtils {      String externalSchemaLocations,      String externalNoNamespaceSchemaLocation,      EntityResolver entityResolver, -    ErrorHandler errorHandler) +    ErrorHandler errorHandler, +    Map<String, Object> parserFeatures)      throws  SAXException, IOException, ParserConfigurationException {      DOMParser parser; @@ -247,8 +249,25 @@ public class DOMUtils {  	    parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false);  	    parser.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, false); +	    //set external added parser features +	    if (parserFeatures != null) { +	    	for (Entry<String, Object> el : parserFeatures.entrySet()) { +	    		String key = el.getKey(); +	    		if (MiscUtil.isNotEmpty(key)) { +	    			Object value = el.getValue(); +	    			if (value != null && value instanceof Boolean)	    		 +	    				parser.setFeature(key, (boolean)value); +	    			 +	    			else +	    				Logger.warn("This XML parser only allows features with 'boolean' values"); +	    			 +	    		} else  +	    			Logger.warn("Can not set 'null' feature to XML parser"); +	    	} +	    } +	      	    //fix XXE problem -	    parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); +	    //parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);  	    if (validating) { @@ -346,6 +365,7 @@ public class DOMUtils {     * @param externalNoNamespaceSchemaLocation The schema location of the     * schema for elements without a namespace, the same way it is accepted by the     * <code>xsi:noNamespaceSchemaLocation</code> attribute. + * @param parserFeatures      * @return The parsed XML document as a DOM tree.     * @throws SAXException An error occurred parsing the document.     * @throws IOException An error occurred reading the document. @@ -356,7 +376,7 @@ public class DOMUtils {      InputStream inputStream,      boolean validating,      String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation) +    String externalNoNamespaceSchemaLocation, Map<String, Object> parserFeatures)      throws SAXException, IOException, ParserConfigurationException { @@ -367,7 +387,8 @@ public class DOMUtils {        externalSchemaLocations,        externalNoNamespaceSchemaLocation,        new MOAEntityResolver(), -      new MOAErrorHandler()); +      new MOAErrorHandler(), +      parserFeatures);    }    /** @@ -396,6 +417,46 @@ public class DOMUtils {      String encoding,      boolean validating,      String externalSchemaLocations, +    String externalNoNamespaceSchemaLocation, +    Map<String, Object> parserFeatures) +    throws SAXException, IOException, ParserConfigurationException { + +    InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding)); +    return parseDocument( +      in, +      validating, +      externalSchemaLocations, +      externalNoNamespaceSchemaLocation, +      parserFeatures); +  } +   +   +  /** +   * Parse an XML document from a <code>String</code>. +   *  +   * It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code> +   * and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>. +   *  +   * @param xmlString The <code>String</code> containing the XML document. +   * @param encoding The encoding of the XML document. +   * @param validating If <code>true</code>, parse validating. +   * @param externalSchemaLocations A <code>String</code> containing namespace +   * URI to schema location pairs, the same way it is accepted by the <code>xsi: +   * schemaLocation</code> attribute.  +   * @param externalNoNamespaceSchemaLocation The schema location of the +   * schema for elements without a namespace, the same way it is accepted by the +   * <code>xsi:noNamespaceSchemaLocation</code> attribute. +   * @return The parsed XML document as a DOM tree. +   * @throws SAXException An error occurred parsing the document. +   * @throws IOException An error occurred reading the document. +   * @throws ParserConfigurationException An error occurred configuring the XML +   * parser. +   */ +  public static Document parseDocument( +    String xmlString, +    String encoding, +    boolean validating, +    String externalSchemaLocations,      String externalNoNamespaceSchemaLocation)      throws SAXException, IOException, ParserConfigurationException { @@ -404,7 +465,8 @@ public class DOMUtils {        in,        validating,        externalSchemaLocations, -      externalNoNamespaceSchemaLocation); +      externalNoNamespaceSchemaLocation, +      null);    }    /** @@ -453,7 +515,26 @@ public class DOMUtils {    public static Element parseXmlValidating(InputStream inputStream)      throws ParserConfigurationException, SAXException, IOException {      return DOMUtils -      .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null) +      .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null, null) +      .getDocumentElement(); +  } +   +  /** +   * A convenience method to parse an XML document validating. +   *  +   * @param inputStream The <code>InputStream</code> containing the XML +   * document. +   * @param parserFeatures Set additional features to XML parser +   * @return The root element of the parsed XML document. +   * @throws SAXException An error occurred parsing the document. +   * @throws IOException An error occurred reading the document. +   * @throws ParserConfigurationException An error occurred configuring the XML +   * parser. +   */ +  public static Element parseXmlValidating(InputStream inputStream, Map<String, Object> parserFeatures) +    throws ParserConfigurationException, SAXException, IOException { +    return DOMUtils +      .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null, parserFeatures)        .getDocumentElement();    } @@ -471,7 +552,7 @@ public class DOMUtils {    public static Element parseXmlNonValidating(InputStream inputStream)      throws ParserConfigurationException, SAXException, IOException {      return DOMUtils -      .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null) +      .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null, null)        .getDocumentElement();    } diff --git a/id/server/moa-id-commons/src/main/resources/moaid.migration.beans.xml b/id/server/moa-id-commons/src/main/resources/moaid.migration.beans.xml index c758e230e..fd16e8f96 100644 --- a/id/server/moa-id-commons/src/main/resources/moaid.migration.beans.xml +++ b/id/server/moa-id-commons/src/main/resources/moaid.migration.beans.xml @@ -15,7 +15,7 @@  	<context:property-placeholder location="${moa.id.webconfig}"/>  -	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="true" destroy-method="close"> +	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" lazy-init="true" destroy-method="close">  		<aop:scoped-proxy/>  		<property name="driverClassName" value="${hibernate.connection.driver_class}" />  		<property name="url" value="${hibernate.connection.url}"/> @@ -24,10 +24,10 @@  		<property name="connectionProperties" value="${dbcp.connectionProperties}" />  		<property name="initialSize" value="${dbcp.initialSize}" />		 -		<property name="maxActive" value="${dbcp.maxActive}" /> +		<property name="maxTotal" value="${dbcp.maxActive}" />  		<property name="maxIdle" value="${dbcp.maxIdle}" />  		<property name="minIdle" value="${dbcp.minIdle}" /> -		<property name="maxWait" value="${dbcp.maxWaitMillis}" /> +		<!-- property name="maxWait" value="${dbcp.maxWaitMillis}" /-->  		<property name="testOnBorrow" value="${dbcp.testOnBorrow}" />  		<property name="testOnReturn" value="${dbcp.testOnReturn}" />  		<property name="testWhileIdle" value="${dbcp.testWhileIdle}" /> diff --git a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/AllTests.java b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/AllTests.java index a3ffbec17..df4fe807f 100644 --- a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/AllTests.java +++ b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/AllTests.java @@ -27,7 +27,7 @@ package test.at.gv.egovernment.moa;  import junit.awtui.TestRunner;  import junit.framework.Test;  import junit.framework.TestSuite; - +   /**   * @author patrick   * @version $Id$ diff --git a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java index 5d1c5371a..66bf1faff 100644 --- a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java +++ b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java @@ -26,18 +26,19 @@ package test.at.gv.egovernment.moa;  import java.io.FileInputStream;  import java.io.StringReader; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map;  import javax.xml.parsers.DocumentBuilder;  import javax.xml.parsers.DocumentBuilderFactory;  import org.w3c.dom.Document; -  import org.xml.sax.InputSource; -import junit.framework.TestCase; -  import at.gv.egovernment.moa.util.Constants;  import at.gv.egovernment.moa.util.DOMUtils; +import junit.framework.TestCase;  /**   * Base class for MOA test cases. @@ -51,6 +52,16 @@ public class MOATestCase extends TestCase {    protected static final String TESTDATA_ROOT = "data/test/"; +  protected static final Map<String, Object> parserFeatures = +		  Collections.unmodifiableMap(new HashMap<String, Object>() { +				private static final long serialVersionUID = 1L; +				{	 +					put(DOMUtils.DISALLOW_DOCTYPE_FEATURE, true); +					 +				} +		  }); +   +      /**     * Constructor for MOATestCase.     * @param arg0 @@ -67,7 +78,8 @@ public class MOATestCase extends TestCase {        new FileInputStream(fileName),        false,        null, -      null); +      null, +      parserFeatures);    }    /** @@ -80,7 +92,8 @@ public class MOATestCase extends TestCase {        new FileInputStream(fileName),        true,        Constants.ALL_SCHEMA_LOCATIONS, -      null); +      null, +      parserFeatures);    }    /** diff --git a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java index 1a2b6904d..7b1c0cb67 100644 --- a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java +++ b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java @@ -23,6 +23,7 @@  package test.at.gv.egovernment.moa.util; +  import java.io.FileInputStream;  import java.util.Map; @@ -30,10 +31,9 @@ import org.w3c.dom.Document;  import org.w3c.dom.Element;  import org.w3c.dom.NodeList; -import test.at.gv.egovernment.moa.*; -  import at.gv.egovernment.moa.util.Constants;  import at.gv.egovernment.moa.util.DOMUtils; +import test.at.gv.egovernment.moa.MOATestCase;  /**   * @author Patrick Peck @@ -78,7 +78,8 @@ public class DOMUtilsTest extends MOATestCase {        new FileInputStream(fileName),        true,        Constants.ALL_SCHEMA_LOCATIONS, -      null); +      null, +      parserFeatures);    }    public void testParseCreateXMLSignature() throws Exception { @@ -113,6 +114,7 @@ public class DOMUtilsTest extends MOATestCase {        new FileInputStream(fileName),        false,        null, +      null,         null);    } | 
