aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--id/ConfigWebTool/.gitignore1
-rw-r--r--id/ConfigWebTool/pom.xml26
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/AuthenticatedUser.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/MetaDataVerificationFilter.java1
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/PVP2Utils.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/Authenticate.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/BuildMetadata.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBackChannelServlet.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBasicServlet.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOFrontChannelServlet.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java134
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java370
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java6
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java35
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java87
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java40
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/AttributeHelper.java4
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/IOnlineApplicationData.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAAuthenticationData.java122
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OABPKEncryption.java8
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java4
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java4
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAOAuth20Config.java6
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java54
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OARevisionsLogData.java153
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASAML1Config.java6
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASSOConfig.java6
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java40
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java6
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java6
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/pvp2/ContactForm.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/AuthenticationFilter.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/LanguageHelper.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/MailHelper.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicAction.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicOAAction.java182
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java102
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java86
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ImportExportAction.java263
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java31
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java49
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java34
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java7
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/UserManagementAction.java40
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java116
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/utils/UserRequestCleaner.java14
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/UserDatabaseFormValidator.java23
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java47
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/StorkConfigValidator.java10
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java36
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OASTORKConfigValidation.java2
-rw-r--r--id/ConfigWebTool/src/main/resources/applicationResources_de.properties35
-rw-r--r--id/ConfigWebTool/src/main/resources/applicationResources_en.properties31
-rw-r--r--id/ConfigWebTool/src/main/resources/moaid.configurationtool.beans.xml20
-rw-r--r--id/ConfigWebTool/src/main/resources/struts.xml8
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp43
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp2
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/searchOAs.jsp4
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/authentication.jsp15
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvp2.jsp4
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/revisionslog.jsp23
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/stork.jsp9
-rw-r--r--id/assembly-auth.xml18
-rw-r--r--id/history.txt25
-rw-r--r--id/moa-id-webgui/pom.xml97
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDConfigurationModul.java277
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDSpringResourceProvider.java86
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDWebGUIConfiguration.java160
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationException.java (renamed from id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/exception/ConfigurationException.java)7
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationModulValidationException.java53
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationTaskValidationException.java54
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationValidationException.java74
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SchemaValidationException.java43
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SignatureValidationException.java58
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ValidationObjectIdentifier.java66
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java67
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/LanguageHelper.java81
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/MOAIDConfigurationValidator.java311
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/AbstractModuleValidator.java148
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/IModuleValidator.java79
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GatewayValidator.java58
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GeneralConfigurationValidator.java62
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/InterfederationIDPValidator.java57
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/OnlineApplicationValidator.java71
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/VIDPValidator.java61
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/AbstractTaskValidator.java106
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/IDynamicLoadableTaskValidator.java39
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/ITaskValidator.java79
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralMOAIDConfigurationTask.java615
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralOpenIDConfigurationTask.java95
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralPVP2XConfigurationTask.java236
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralRevisionLogTask.java152
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralSTORKConfigurationTask.java612
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationInformationTask.java246
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationSTORKTask.java301
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java426
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesGeneralInformationTask.java215
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesInterfederationIDPTask.java116
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesPVPGatewayTask.java121
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolOpenIDTask.java152
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolPVP2XTask.java338
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSAML1Task.java114
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSTORKTask.java273
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesReversionLogTask.java162
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesSSOAuthenticationTask.java101
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesTargetTask.java223
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesbPKDecryptionTask.java137
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/CompanyNumberValidator.java78
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/IdentificationNumberValidator.java29
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/MetaDataVerificationFilter.java122
-rw-r--r--id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/SchemaValidationFilter.java98
-rw-r--r--id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.configuration.meta.api.ConfigurationModul1
-rw-r--r--id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider1
-rw-r--r--id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator5
-rw-r--r--id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator5
-rw-r--r--id/moa-id-webgui/src/main/resources/applicationResources_de.properties525
-rw-r--r--id/moa-id-webgui/src/main/resources/applicationResources_en.properties522
-rw-r--r--id/moa-id-webgui/src/main/resources/gui/meta.properties76
-rw-r--r--id/moa-id-webgui/src/main/resources/gui/types/gateway.json50
-rw-r--r--id/moa-id-webgui/src/main/resources/gui/types/general.json480
-rw-r--r--id/moa-id-webgui/src/main/resources/gui/types/iidp.json124
-rw-r--r--id/moa-id-webgui/src/main/resources/gui/types/oa.json702
-rw-r--r--id/moa-id-webgui/src/main/resources/gui/types/vidp.json371
-rw-r--r--id/moa-id-webgui/src/main/resources/moaid.webgui.beans.xml24
-rw-r--r--id/moa-id-webgui/src/test/java/META-INF/MANIFEST.MF3
-rw-r--r--id/oa/pom.xml2
-rw-r--r--id/pom.xml2
-rw-r--r--id/readme_3.0.0.txt550
-rw-r--r--id/readme_3.0.1.txt585
-rw-r--r--id/server/auth/pom.xml2
-rw-r--r--id/server/auth/src/main/webapp/img/online-bku-deactivated.pngbin0 -> 5382 bytes
-rw-r--r--id/server/auth/src/main/webapp/index.html8
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer26
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer23
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer23
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cerbin0 -> 1485 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer21
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer23
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cerbin0 -> 1580 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cerbin0 -> 1580 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cerbin0 -> 1029 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cerbin0 -> 1159 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer26
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer23
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cerbin0 -> 1167 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cerbin0 -> 1159 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cerbin0 -> 1159 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crtbin0 -> 1185 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cerbin0 -> 1485 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer23
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03.cerbin0 -> 979 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer26
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.cerbin0 -> 1147 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/gateway.stammzahlenregister.gv.at.cerbin0 -> 1356 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/certs/truststore/szrgw.egiz.gv.at.crt33
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/htmlTemplates/loginFormFull.html101
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/log4j.properties39
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/logback_config.xml71
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/moa-id-configtool.properties42
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml (renamed from id/server/data/deploy/conf/moa-id-configuration/transforms/TransformsInfoAuthBlockTable_DE_2.1.xml)0
-rw-r--r--id/server/data/deploy/conf/moa-id-configuration/userdatabase.properties0
-rw-r--r--id/server/data/deploy/conf/moa-id/MOAIdentities.xsd59
-rw-r--r--id/server/data/deploy/conf/moa-id/SampleIdentities.xml34
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cerbin0 -> 1485 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/ca-certs/DigiCert High Assurance EV Root CA.crt23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/ca-certs/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt29
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/ca-certs/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer26
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer26
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cerbin0 -> 1485 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer21
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/DigiCert High Assurance EV Root CA.crt23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt29
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cerbin0 -> 1580 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cerbin0 -> 1580 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cerbin0 -> 1029 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cerbin0 -> 1159 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer26
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer23
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cerbin0 -> 1167 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cerbin0 -> 1159 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cerbin0 -> 1159 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crtbin0 -> 1185 bytes
-rw-r--r--id/server/data/deploy/conf/moa-id/htmlTemplates/loginFormFull.html117
-rw-r--r--id/server/data/deploy/conf/moa-id/log4j.properties18
-rw-r--r--id/server/data/deploy/conf/moa-id/logback_config.xml71
-rw-r--r--id/server/data/deploy/conf/moa-id/moa-id.properties31
-rw-r--r--id/server/data/deploy/conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml (renamed from id/server/data/deploy/conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_2.1.xml)0
-rw-r--r--id/server/data/deploy/conf/moa-spss/SampleMOASPSSConfiguration.xml4
-rw-r--r--id/server/data/deploy/conf/moa-spss/profiles/MOAIDTransformAuthBlockTable_DE_3.0.xml (renamed from id/server/data/deploy/conf/moa-spss/profiles/MOAIDTransformAuthBlockTable_DE_2.1.xml)0
-rw-r--r--id/server/data/deploy/tomcat/unix/tomcat-start.sh11
-rw-r--r--id/server/data/deploy/tomcat/win32/startTomcat.bat8
-rw-r--r--id/server/doc/handbook/additional/additional.html287
-rw-r--r--id/server/doc/handbook/config/config.html433
-rw-r--r--id/server/doc/handbook/index.html2
-rw-r--r--id/server/doc/handbook/install/install.html27
-rw-r--r--id/server/doc/htmlTemplates/BKU-selection.html101
-rw-r--r--id/server/idserverlib/pom.xml85
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventConstants.java97
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventLog.java47
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java265
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java110
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/TransactionIDUtils.java66
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java608
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthConstants.java16
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java95
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java25
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DataURLBuilder.java3
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DynamicOAAuthParameterBuilder.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java44
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilder.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SendAssertionFormBuilder.java5
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/StartAuthenticationBuilder.java3
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionExtensions.java52
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationInvoker.java10
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java22
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/FinalizeAuthenticationTask.java118
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java32
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java45
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java207
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java128
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java21
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java60
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java2
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java52
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetForeignIDServlet.java325
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetMISSessionIDServlet.java271
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/IDPSingleLogOutServlet.java19
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/LogOutServlet.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java774
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorWithLocalSigningServlet.java816
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java37
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/RedirectServlet.java29
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/SSOSendAssertionServlet.java13
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyAuthenticationBlockServlet.java342
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyCertificateServlet.java235
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyIdentityLinkServlet.java278
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/client/SZRGWClient.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProvider.java179
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java282
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationUtils.java28
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameter.java16
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterForeign.java5
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMOASP.java5
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMandate.java5
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/OAParameter.java172
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigLoader.java44
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfiguration.java149
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java2385
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java74
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/ConfigurationToJSONConverter.java155
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/IOAAuthParameters.java99
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java852
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java1113
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java184
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/SAML1ConfigurationParameters.java276
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/legacy/BuildFromLegacyConfig.java1130
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAConfiguration.java219
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAProxyParameter.java248
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationBuilder.java290
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationProvider.java260
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java115
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttribute.java27
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttributeProviderPlugin.java81
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java79
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/AuthenticationManager.java76
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IAction.java2
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IModulInfo.java2
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IRequest.java5
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestImpl.java20
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestStorage.java8
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java72
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java2
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Configuration.java12
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Constants.java1
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java29
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OpenIdNonceAttribute.java57
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthAction.java16
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthRequest.java41
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20BaseRequest.java22
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20Protocol.java9
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenAction.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenRequest.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/MetadataAction.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java74
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/SingleLogOutAction.java13
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java11
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java31
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/AuthResponseBuilder.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/assertion/PVP2AssertionBuilder.java8
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/attributes/IPVPAttributeBuilder.java3
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java330
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java435
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/signer/CredentialProvider.java3
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/MOASAMLSOAPClient.java11
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/EntityVerifier.java40
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerificationEngine.java50
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerifierMOASP.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/InterfederatedIDPPublicServiceFilter.java8
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MetadataSignatureFilter.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/SchemaValidationFilter.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetArtifactAction.java15
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java6
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1Protocol.java27
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1RequestImpl.java8
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java6
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java18
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java14
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/ConsentEvaluator.java6
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java10
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java19
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilder.java110
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilderFactory.java114
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultConnectionBuilder.java229
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultLoginParameterResolver.java187
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ElakConnectionBuilder.java303
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/EnhancedConnectionBuilder.java266
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolver.java133
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverException.java88
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverFactory.java128
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/MOAIDProxyInitializer.java141
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/NotAllowedException.java90
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverEncryptedData.java727
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverPlainData.java472
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilder.java101
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/invoke/GetAuthenticationDataInvoker.java206
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/AuthenticationDataAssertionParser.java210
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParser.java147
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ConfigurationServlet.java122
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyException.java86
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyServlet.java1008
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AssertionStorage.java7
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AuthenticationSessionStoreage.java103
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/AbstractEncrytionUtil.java1
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ConfigurationEncrytionUtil.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java2
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java17
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java2
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SSLUtils.java6
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SessionEncrytionUtil.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISMandate.java28
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/legacy/LegacyHelper.java2
-rw-r--r--id/server/idserverlib/src/main/resources/at/gv/egovernment/moa/id/auth/modules/internal/DefaultAuthentication.process.xml16
-rw-r--r--id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml42
-rw-r--r--id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties10
-rw-r--r--id/server/idserverlib/src/main/resources/resources/properties/protocol_response_statuscodes_de.properties4
-rw-r--r--id/server/idserverlib/src/main/resources/resources/templates/loginFormFull.html103
-rw-r--r--id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java6
-rw-r--r--id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java6
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilderTest.java139
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationTest.java216
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/AllTests.java77
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/DOMTreeCompare.java508
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilderTest.java78
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestCompare.java65
-rw-r--r--id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParserTest.java227
-rw-r--r--id/server/idserverlib/src/test/java/test/lasttest/Dispatcher.java110
-rw-r--r--id/server/idserverlib/src/test/java/test/lasttest/HostnameVerifierHack.java59
-rw-r--r--id/server/idserverlib/src/test/java/test/lasttest/LasttestClient.java264
-rw-r--r--id/server/idserverlib/src/test/java/test/lasttest/TestThread.java297
-rw-r--r--id/server/idserverlib/src/test/java/test/tlenz/simpletest.java46
-rw-r--r--id/server/idserverlib/src/test/resources/log4j.xml16
-rw-r--r--id/server/moa-id-commons/pom.xml171
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egiz/components/configuration/api/AbstractConfigurationImpl.java546
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java108
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationMigrationUtils.java1803
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationUtil.java277
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MOAIDConfigurationConstants.java271
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrateConfiguration.java103
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrationTest.java69
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/CLIConstants.java37
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java127
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MigrateConfigurationParams.java106
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/JsonMapper.java73
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfiguration.java64
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java200
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java795
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java452
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java301
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBWrite.java52
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java216
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/UserDatabase.java647
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AbstractSimpleIdentificationType.java161
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AttributeProviderPlugin.java254
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentGeneral.java80
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentOA.java735
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentType.java650
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionCustomizationType.java743
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionType.java58
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUURLS.java256
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKDecryption.java293
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKEncryption.java252
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BasicAuth.java214
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPS.java418
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPSAttributeValueItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModeType.java58
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModes.java242
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ClientKeyStore.java206
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Configuration.java364
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterClientAuthType.java143
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterServerAuthType.java214
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Contact.java484
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactMailItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactPhoneItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultBKUs.java256
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultTrustProfile.java164
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/EncBPKInformation.java257
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ForeignIdentities.java216
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GeneralConfiguration.java365
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GenericConfiguration.java216
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Header.java212
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/HeaderAuth.java185
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentificationNumber.java210
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSigners.java209
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSignersX509SubjectNameItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InputProcessorType.java206
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationGatewayType.java208
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationIDPType.java402
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyName.java206
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyStore.java208
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowed.java209
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowedProtocolNameItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LoginType.java58
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAAuthDataType.java82
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAIDConfiguration.java684
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAKeyBoxSelector.java58
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOASP.java281
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Mandates.java254
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MandatesProfileNameItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAOAUTH20.java254
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAPVP2.java274
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASAML1.java580
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASSO.java260
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASTORK.java495
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAStorkAttribute.java213
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAuth.java168
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ObjectFactory.java757
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplication.java545
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplicationType.java565
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineMandates.java168
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Organization.java254
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PVP2.java385
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ParamAuth.java185
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Parameter.java212
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentationType.java331
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentativeType.java457
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Protocols.java361
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAML1.java216
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAMLSigningParameter.java216
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SLRequestTemplates.java256
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SSO.java341
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/STORK.java342
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Schema.java205
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SchemaLocationType.java195
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SecurityLayer.java183
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureCreationParameterType.java218
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureVerificationParameterType.java168
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/StorkAttribute.java213
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplateType.java165
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplatesType.java367
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentials.java298
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentialsCredentialOIDItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TimeOuts.java253
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TransformsInfoType.java229
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TrustAnchor.java131
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/UserDatabase.java1077
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlock.java275
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlockVerifyTransformsInfoProfileIDItem.java93
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyIdentityLink.java182
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyInfoboxesType.java181
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/X509IssuerSerialType.java213
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/package-info.java9
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/session/AuthenticatedSessionStore.java23
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/JsonMapper.java73
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/KeyValueUtils.java259
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAHttpProtocolSocketFactory.java5
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/TargetValidator.java4
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/ValidationHelper.java2
-rw-r--r--id/server/moa-id-commons/src/main/resources/META-INF/persistence.xml16
-rw-r--r--id/server/moa-id-commons/src/main/resources/bindings.xjb (renamed from id/server/moa-id-commons/src/main/resources/config/bindings.xjb)4
-rw-r--r--id/server/moa-id-commons/src/main/resources/config/persistence_template.xml17
-rw-r--r--id/server/moa-id-commons/src/main/resources/configuration.beans.xml30
-rw-r--r--id/server/moa-id-commons/src/main/resources/hibernate_moasession.cfg.xml (renamed from id/server/moa-id-commons/src/main/resources/config/hibernate_moasession.cfg.xml)0
-rw-r--r--id/server/moa-id-commons/src/main/resources/hibernate_statistic.cfg.xml (renamed from id/server/moa-id-commons/src/main/resources/config/hibernate_statistic.cfg.xml)0
-rw-r--r--id/server/moa-id-commons/src/main/resources/moaid.migration.beans.xml44
-rw-r--r--id/server/moa-id-commons/src/main/resources/moaid_config_2.0.xsd (renamed from id/server/moa-id-commons/src/main/resources/config/moaid_config_2.0.xsd)0
-rw-r--r--id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java128
-rw-r--r--id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/configuration.beans-test.xml54
-rw-r--r--id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/hibernate.properties20
-rw-r--r--id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/testDatabase.properties7
-rw-r--r--id/server/moa-id-commons/src/test/resources/log4j.xml16
-rw-r--r--id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/auth/servlet/MonitoringServlet.java5
-rw-r--r--id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/DatabaseTestModule.java15
-rw-r--r--id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java7
-rw-r--r--id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/TestManager.java5
-rw-r--r--id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/AbstractPepsConnectorWithLocalSigningTask.java6
-rw-r--r--id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/CreateStorkAuthRequestFormTask.java345
-rw-r--r--id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleLocalSignResponseTask.java16
-rw-r--r--id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleResponseWithoutSignatureTask.java21
-rw-r--r--id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorTask.java30
-rw-r--r--id/server/modules/pom.xml2
-rw-r--r--id/server/pom.xml30
-rw-r--r--id/server/stork2-commons/pom.xml14
-rw-r--r--id/server/stork2-saml-engine/pom.xml2
-rw-r--r--id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java6
-rw-r--r--id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java10
-rw-r--r--pom.xml1500
-rw-r--r--repository/at/gv/egiz/components/egiz-configuration-meta-api/0.3/egiz-configuration-meta-api-0.3.jarbin0 -> 24396 bytes
-rw-r--r--spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java21
524 files changed, 53915 insertions, 17827 deletions
diff --git a/id/ConfigWebTool/.gitignore b/id/ConfigWebTool/.gitignore
index 4dc009173..0b1e2434c 100644
--- a/id/ConfigWebTool/.gitignore
+++ b/id/ConfigWebTool/.gitignore
@@ -1,2 +1,3 @@
/target
/bin
+/target
diff --git a/id/ConfigWebTool/pom.xml b/id/ConfigWebTool/pom.xml
index aa4c9055c..10262158e 100644
--- a/id/ConfigWebTool/pom.xml
+++ b/id/ConfigWebTool/pom.xml
@@ -3,15 +3,15 @@
<parent>
<groupId>MOA</groupId>
<artifactId>id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>MOA.id</groupId>
<artifactId>moa-id-configuration</artifactId>
<version>${configtool-version}</version>
- <name>MOA-ID 2.0 Configuration Tool</name>
- <description>Web based Configuration Tool for MOA-ID 2.x</description>
+ <name>MOA-ID 3.0 Configuration Tool</name>
+ <description>Web based Configuration Tool for MOA-ID 3.x</description>
<properties>
<repositoryPath>${basedir}/../../repository</repositoryPath>
@@ -69,7 +69,14 @@
<groupId>MOA.id.server</groupId>
<artifactId>moa-id-commons</artifactId>
</dependency>
+
<dependency>
+ <groupId>MOA.id</groupId>
+ <artifactId>moa-id-webgui</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
<groupId>MOA.id.server</groupId>
<artifactId>moa-id-lib</artifactId>
<exclusions>
@@ -145,9 +152,16 @@
</exclusions>
</dependency>
<dependency>
- <groupId>org.opensaml</groupId>
- <artifactId>openws</artifactId>
- <version>${openws-version}</version>
+ <groupId>org.opensaml</groupId>
+ <artifactId>openws</artifactId>
+ <!-- <version>${openws-version}</version> -->
+ <version>1.5.4</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>log4j-over-slf4j</artifactId>
+ <groupId>org.slf4j</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/AuthenticatedUser.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/AuthenticatedUser.java
index 3bfe409c0..bc964af4c 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/AuthenticatedUser.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/AuthenticatedUser.java
@@ -101,7 +101,7 @@ public class AuthenticatedUser {
this.familyName = userdb.getFamilyname();
this.givenName = userdb.getGivenname();
this.userName = userdb.getUsername();
- this.userID = userdb.getHjid();
+ this.userID = Long.valueOf(userdb.getHjid());
this.institute = userdb.getInstitut();
this.isAdmin = userdb.isIsAdmin();
this.isAuthenticated = isAuthenticated;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/MetaDataVerificationFilter.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/MetaDataVerificationFilter.java
index 104ea51f5..12016a2bf 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/MetaDataVerificationFilter.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/MetaDataVerificationFilter.java
@@ -26,7 +26,6 @@ import java.util.Iterator;
import org.opensaml.saml2.metadata.EntitiesDescriptor;
import org.opensaml.saml2.metadata.EntityDescriptor;
-import org.opensaml.saml2.metadata.provider.FilterException;
import org.opensaml.saml2.metadata.provider.MetadataFilter;
import org.opensaml.xml.XMLObject;
import org.opensaml.xml.security.x509.BasicX509Credential;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/PVP2Utils.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/PVP2Utils.java
index 3b2e0bd08..0f21a9d0d 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/PVP2Utils.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/PVP2Utils.java
@@ -75,8 +75,8 @@ import org.opensaml.xml.validation.ValidationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.exception.PVP2Exception;
import at.gv.egovernment.moa.id.configuration.utils.SAML2Utils;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/Authenticate.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/Authenticate.java
index a511a3c88..84fbec0e8 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/Authenticate.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/Authenticate.java
@@ -60,10 +60,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.pvp2.PVP2Utils;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.utils.SAML2Utils;
import at.gv.egovernment.moa.util.MiscUtil;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/BuildMetadata.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/BuildMetadata.java
index 5265aed86..5b413567a 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/BuildMetadata.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/BuildMetadata.java
@@ -75,10 +75,10 @@ import org.opensaml.xml.signature.SignatureException;
import org.opensaml.xml.signature.Signer;
import org.w3c.dom.Document;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.pvp2.AttributeListBuilder;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.utils.SAML2Utils;
import at.gv.egovernment.moa.util.MiscUtil;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBackChannelServlet.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBackChannelServlet.java
index 4b23089c4..cff08740b 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBackChannelServlet.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBackChannelServlet.java
@@ -52,7 +52,7 @@ import org.opensaml.xml.security.x509.X509Credential;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
/**
* @author tlenz
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBasicServlet.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBasicServlet.java
index dfcde4624..2a35e50b1 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBasicServlet.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOBasicServlet.java
@@ -46,11 +46,11 @@ import org.opensaml.saml2.metadata.provider.MetadataProviderException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticationManager;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.exception.PVP2Exception;
import at.gv.egovernment.moa.id.configuration.exception.SLOException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOFrontChannelServlet.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOFrontChannelServlet.java
index 67921c689..8df7f9d5a 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOFrontChannelServlet.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/auth/pvp2/servlets/SLOFrontChannelServlet.java
@@ -61,11 +61,11 @@ import org.opensaml.xml.validation.ValidationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticationManager;
import at.gv.egovernment.moa.id.configuration.auth.pvp2.PVP2Utils;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.exception.PVP2Exception;
import at.gv.egovernment.moa.id.configuration.exception.SLOException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java
index 8ac7b40d4..849e81967 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java
@@ -29,6 +29,8 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.security.KeyStore;
import java.security.KeyStoreException;
@@ -47,19 +49,24 @@ import org.opensaml.DefaultBootstrap;
import org.opensaml.saml2.metadata.provider.HTTPMetadataProvider;
import org.opensaml.xml.parse.BasicParserPool;
import org.opensaml.xml.security.x509.BasicX509Credential;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory;
+import at.gv.egovernment.moa.id.config.webgui.MOAIDConfigurationModul;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.pvp2.MetaDataVerificationFilter;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
+import at.gv.egovernment.moa.id.configuration.config.usermanagement.FileBasedUserConfiguration;
import at.gv.egovernment.moa.id.configuration.utils.UserRequestCleaner;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
+import at.gv.egovernment.moa.id.commons.db.NewConfigurationDBRead;
+
public class ConfigurationProvider {
@@ -82,6 +89,11 @@ public class ConfigurationProvider {
private boolean pvp2logininitialzied = false;
+ private ApplicationContext context = null;
+ private MOAIDConfigurationModul configModule = null;
+ private NewConfigurationDBRead deprecatedDBRead = null;
+ private FileBasedUserConfiguration userManagement = null;
+
public static ConfigurationProvider getInstance() throws ConfigurationException {
if (instance == null) {
@@ -100,34 +112,40 @@ public class ConfigurationProvider {
if (configFileName == null) {
throw new ConfigurationException("config.05");
}
+ try {
+ URI fileURI = new URI(configFileName);
+ File propertiesFile = new File(fileURI);
+
+ // determine the directory of the root config file
+ String rootConfigFileDir = propertiesFile.getParent();
+ configRootDir = new File(rootConfigFileDir).toURI().toURL().toString();;
- // determine the directory of the root config file
- configRootDir = new File(configFileName).getParent();
-
- log.info("Loading MOA-ID-AUTH configuration " + configFileName);
+ log.info("Loading MOA-ID-AUTH configuration " + configFileName);
- //Initial Hibernate Framework
- log.trace("Initializing Hibernate framework.");
+ //Initial Hibernate Framework
+ log.trace("Initializing Hibernate framework.");
- //Load MOAID-2.0 properties file
- File propertiesFile = new File(configFileName);
- FileInputStream fis;
- props = new Properties();
-
-
- try {
- fis = new FileInputStream(propertiesFile);
- props.load(fis);
+ //Load MOAID-2.0 properties file
+
+ FileInputStream fis;
+ props = new Properties();
+
+ fis = new FileInputStream(propertiesFile);
+ props.load(fis);
fis.close();
- // initialize hibernate
- synchronized (ConfigurationProvider.class) {
-
- //Initial config Database
- ConfigurationDBUtils.initHibernate(props);
- }
- log.trace("Hibernate initialization finished.");
+ context = new ClassPathXmlApplicationContext(
+ new String[] { "configuration.beans.xml",
+ "moaid.webgui.beans.xml",
+ "moaid.migration.beans.xml",
+ "moaid.configurationtool.beans.xml"
+ });
+ AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory();
+ acbFactory.autowireBean(this);
+
+
+ log.info("Hibernate initialization finished.");
DefaultBootstrap.bootstrap();
log.info("OPENSAML initialized");
@@ -143,15 +161,48 @@ public class ConfigurationProvider {
} catch (IOException e) {
throw new ConfigurationException("config.02", new Object[]{configFileName}, e);
- } catch (MOADatabaseException e) {
- throw new ConfigurationException("config.03", e);
-
} catch (org.opensaml.xml.ConfigurationException e) {
throw new ConfigurationException("config.04", e);
+
+ } catch (URISyntaxException e) {
+ throw new ConfigurationException("config.01", new Object[]{configFileName}, e);
}
}
+ @Autowired(required = true)
+ public void setMOAIDConfigurationModul(MOAIDConfigurationModul module) {
+ this.configModule = module;
+ }
+
+
+
+ /**
+ * @param dbRead the dbRead to set
+ */
+ @Autowired(required = true)
+ public void setDbRead(NewConfigurationDBRead dbRead) {
+ this.deprecatedDBRead = dbRead;
+ }
+
+
+
+ /**
+ * @return the deprecatedDBWrite
+ */
+ public FileBasedUserConfiguration getUserManagement() {
+ return userManagement;
+ }
+
+ /**
+ * @param deprecatedDBWrite the deprecatedDBWrite to set
+ */
+ @Autowired(required = true)
+ public void setUserManagement(FileBasedUserConfiguration userManagement) {
+ this.userManagement = userManagement;
+ }
+
+
public String getPublicUrlPreFix(HttpServletRequest request) {
publicURLPreFix = props.getProperty("general.publicURLContext");
@@ -467,6 +518,29 @@ public class ConfigurationProvider {
}
+ /**
+ * @return the context
+ */
+ public ApplicationContext getContext() {
+ return context;
+ }
+
+ /**
+ * @return the configModule
+ */
+ public MOAIDConfigurationModul getConfigModule() {
+ return configModule;
+ }
+
+
+
+ /**
+ * @return the dbRead
+ */
+ public NewConfigurationDBRead getDbRead() {
+ return deprecatedDBRead;
+ }
+
private void initalPVP2Login() throws ConfigurationException {
try {
@@ -499,7 +573,7 @@ public class ConfigurationProvider {
ConfigurationProvider.getInstance().getCertStoreDirectory(),
ConfigurationProvider.getInstance().getTrustStoreDirectory(),
null,
- ChainingModeType.PKIX,
+ "pkix",
true);
httpClient.setCustomSSLTrustStore(metadataurl, protoSocketFactory);
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java
new file mode 100644
index 000000000..b1bba7289
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java
@@ -0,0 +1,370 @@
+package at.gv.egovernment.moa.id.configuration.config.usermanagement;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.commons.collections4.map.HashedMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egiz.components.configuration.file.PropertiesBasedConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+
+public class FileBasedUserConfiguration
+ implements UserConfiguration {
+
+ private static final Logger logger = LoggerFactory.getLogger(FileBasedUserConfiguration.class);
+ public static final String CONFIG_FILE_PROPERTY = "user.properties";
+
+ private Configuration userconfig;
+
+ public FileBasedUserConfiguration() {
+ String cfgFile = System.getProperty(CONFIG_FILE_PROPERTY);
+ if(cfgFile == null) {
+ throw new RuntimeException("Please configure " + CONFIG_FILE_PROPERTY + " to provide user database");
+ }
+
+ try {
+ userconfig = new PropertiesBasedConfiguration(new File(cfgFile));
+
+ } catch (IOException | ConfigurationException e) {
+ logger.error("Failed to build configuration in user modul!");
+ throw new RuntimeException(e);
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<UserDatabase> getAllUsers() {
+ logger.trace("Get All Users from database.");
+
+ // select userdatabase from UserDatabase userdatabase
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ try {
+ String[] userIDs = userconfig.getConfigurationIdNextLevel(UserDatabase.PREFIX);
+ for (String userID : userIDs) {
+ String[] userKeys = userconfig.findConfigurationId(UserDatabase.PREFIX + "." + userID + ".*");
+ Map<String, String> keyValue = new HashMap<String, String>();
+ if (userKeys.length > 0) {
+ for (String key : userKeys) {
+ keyValue.put(
+ KeyValueUtils.removePrefixFromKey(
+ key, UserDatabase.PREFIX + "." + userID + "."),
+ userconfig.getStringValue(key));
+ }
+ UserDatabase userDAO = new UserDatabase(keyValue);
+ userDAO.setHjid(userID);
+ result.add(userDAO);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+ return null;
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<UserDatabase> getAllOpenUsersRequests() {
+ logger.trace("Get all new Users from Database");
+
+ // select userdatabase from UserDatabase userdatabase
+ // where userdatabase.userRequestTokken is not null
+ // and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ // TODO check result of query "... userdatabase.userRequestTokken is not null" if Tokken is null -> (null, "NULL", "", ... ?)
+ if ((user.getUserRequestTokken() != null && !user.getUserRequestTokken().isEmpty() && !user.getUserRequestTokken().equals("NULL"))
+ && (user.isIsAdminRequest()) && (!user.isIsMailAddressVerified())) {
+ result.add(user);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param tokken
+ * @return
+ */
+ public UserDatabase getNewUserWithTokken(String tokken) {
+ logger.trace("Getting Userinformation with Tokken " + tokken + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getUserRequestTokken() != null &&
+ user.getUserRequestTokken().equals(tokken)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public UserDatabase getUsersWithOADBID(long id) {
+ logger.trace("Getting Userinformation with OADBID " + id + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase
+ // inner join userdatabase.onlineApplication oa where oa.hjid = :id
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ boolean quit = false;
+ for (UserDatabase user : nullGuard(allUsers)) {
+
+ for (String oa : user.getOnlineApplication()) {
+
+ if (oa.equals(String.valueOf(id))) {
+ result = user;
+ quit = true;
+ break;
+ }
+ }
+
+ if (quit) {
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public UserDatabase getUserWithID(long id) {
+ logger.trace("Getting Userinformation with ID " + id + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getHjid().equals(String.valueOf(id))) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param username
+ * @return
+ */
+ public UserDatabase getUserWithUserName(String username) {
+ logger.trace("Getting Userinformation with ID " + username + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.username = :username
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getUsername().equals(username)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param bpkwbpk
+ * @return
+ */
+ public UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) {
+ logger.trace("Getting Userinformation with ID " + bpkwbpk + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getBpk() != null &&
+ user.getBpk().equals(bpkwbpk)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * @return
+ */
+ public List<UserDatabase> getAllNewUsers() {
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ // TODO check result of query "... userdatabase.userRequestTokken is not null" if Tokken is null -> (null, "NULL", "", ... ?)
+ if (((user.getUserRequestTokken() == null || user.getUserRequestTokken().isEmpty() || user.getUserRequestTokken().equals("NULL")))
+ && (user.isIsAdminRequest()) && (user.isIsMailAddressVerified())) {
+ result.add(user);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+
+ /**
+ * @param user
+ */
+ public void saveOrUpdate(UserDatabase user) throws MOADatabaseException{
+ List<UserDatabase> allUsers = getAllUsers();
+
+ if (allUsers == null) {
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue())) {
+ userconfig.setStringValue(UserDatabase.PREFIX + ".0." + el.getKey(),
+ el.getValue());
+ }
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + ".0." + el.getKey(), e);
+ }
+
+ }
+
+
+ } else {
+ boolean isUpdated = false;
+ for (UserDatabase dbUser : allUsers) {
+ if (dbUser.getHjid().equals(user.getHjid())) {
+ logger.debug("User is already stored -> start update process ...");
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue()))
+ userconfig.setStringValue(UserDatabase.PREFIX + "." + user.getHjid() + "." + el.getKey(),
+ el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + "." + user.getHjid() + "." + el.getKey(), e);
+ }
+
+ }
+ isUpdated = true;
+ break;
+ }
+ }
+ if (!isUpdated) {
+ try {
+ String[] temp = userconfig.findConfigurationId(UserDatabase.PREFIX + ".*." + UserDatabase.ISACTIVE);
+ int newID = KeyValueUtils.findNextFreeListCounter(temp, UserDatabase.PREFIX);
+
+ logger.debug("Add new User with ID:" + String.valueOf(newID));
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue()))
+ userconfig.setStringValue(UserDatabase.PREFIX + "." + String.valueOf(newID) + "." + el.getKey(),
+ el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + "." + String.valueOf(newID) + "." + el.getKey(), e);
+ }
+
+ }
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+
+ }
+ }
+ }
+
+ try {
+ userconfig.synchronize();
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+ }
+
+ }
+
+ /**
+ * @param dbuser
+ */
+ public void delete(UserDatabase dbuser) {
+ try {
+ logger.debug("Delete User with ID: " + dbuser.getHjid());
+ userconfig.deleteIds(UserDatabase.PREFIX + "." + dbuser.getHjid() + "*");
+ userconfig.synchronize();
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserManagement Database FAILED!", e);
+
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends Iterable<?>> T nullGuard(T item) {
+ if (item == null) {
+ return (T) Collections.emptyList();
+ } else {
+ return item;
+ }
+
+ }
+
+}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java
new file mode 100644
index 000000000..f894b510b
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java
@@ -0,0 +1,6 @@
+package at.gv.egovernment.moa.id.configuration.config.usermanagement;
+
+
+public interface UserConfiguration {
+
+}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java
index 504a38800..ecf0d19d7 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java
@@ -36,11 +36,12 @@ import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BKUSelectionCustomizationType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.BKUSelectionCustomizationType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TemplatesType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TransformsInfoType;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
@@ -137,12 +138,18 @@ public class FormularCustomization implements IOnlineApplicationData {
aditionalAuthBlockText = templates.getAditionalAuthBlockText();
TransformsInfoType bkuSelectTemplate = templates.getBKUSelectionTemplate();
- if (bkuSelectTemplate != null && MiscUtil.isNotEmpty(bkuSelectTemplate.getFilename())) {
+ if (bkuSelectTemplate != null
+ && MiscUtil.isNotEmpty(bkuSelectTemplate.getFilename())
+ && !bkuSelectTemplate.getFilename().equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT)
+ && !bkuSelectTemplate.getFilename().equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT_EMPTY)) {
bkuSelectionFileUploadFileName.add(bkuSelectTemplate.getFilename());
}
TransformsInfoType sendAssertionTemplate = templates.getSendAssertionTemplate();
- if (sendAssertionTemplate != null && MiscUtil.isNotEmpty(sendAssertionTemplate.getFilename())) {
+ if (sendAssertionTemplate != null
+ && MiscUtil.isNotEmpty(sendAssertionTemplate.getFilename())
+ && !sendAssertionTemplate.getFilename().equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT)
+ && !sendAssertionTemplate.getFilename().equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT_EMPTY)) {
sendAssertionFileUploadFileName.add(sendAssertionTemplate.getFilename());
}
@@ -247,12 +254,16 @@ public class FormularCustomization implements IOnlineApplicationData {
//store BKU-selection and send-assertion templates
if (authUser.isAdmin()) {
- if (isDeleteBKUTemplate())
- templates.setBKUSelectionTemplate(null);
-
- if (isDeleteSendAssertionTemplate())
- templates.setSendAssertionTemplate(null);
+ if (isDeleteBKUTemplate() && templates.getBKUSelectionTemplate() != null) {
+ //templates.setBKUSelectionTemplate(null);
+ templates.getBKUSelectionTemplate().setDelete(true);
+ }
+ if (isDeleteSendAssertionTemplate() && templates.getSendAssertionTemplate() != null) {
+ //templates.setSendAssertionTemplate(null);
+ templates.getSendAssertionTemplate().setDelete(true);
+ }
+
if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) {
TransformsInfoType template = new TransformsInfoType();
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java
index def880da8..83795567c 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java
@@ -28,34 +28,32 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModes;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
-import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
-import at.gv.egovernment.moa.id.commons.db.dao.config.GeneralConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.LegacyAllowed;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOASP;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAuth;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineMandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Organization;
-import at.gv.egovernment.moa.id.commons.db.dao.config.PVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Protocols;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SLRequestTemplates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.STORK;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SecurityLayer;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TimeOuts;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TrustAnchor;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;
-import at.gv.egovernment.moa.id.config.legacy.ConfigurationBuilder;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentGeneral;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModeType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModes;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ConnectionParameterClientAuthType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Contact;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.DefaultBKUs;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ForeignIdentities;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.GeneralConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.LegacyAllowed;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOASP;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAuth;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineMandates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Organization;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.PVP2;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Protocols;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SAML1;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SLRequestTemplates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SSO;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.STORK;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SecurityLayer;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TimeOuts;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TransformsInfoType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TrustAnchor;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyAuthBlock;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyIdentityLink;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.data.pvp2.ContactForm;
import at.gv.egovernment.moa.util.MiscUtil;
@@ -83,6 +81,9 @@ public class GeneralMOAIDConfig {
private List<String> authTransformList = null;
private String moaspssIdlTrustProfile = null;
+ private String moaspssIdlTrustProfileTest = null;
+ private String moaspssAuthTrustProfileTest = null;
+
private String mandateURL = null;
private boolean protocolActiveSAML1 = false;
@@ -186,6 +187,7 @@ public class GeneralMOAIDConfig {
VerifyAuthBlock authblock = moaspss.getVerifyAuthBlock();
if (authblock != null) {
moaspssAuthTrustProfile = authblock.getTrustProfileID();
+ moaspssAuthTrustProfileTest = authblock.getTestTrustProfileID();
List<String> list = authblock.getVerifyTransformsInfoProfileID();
if (list.size() == 1)
@@ -199,6 +201,7 @@ public class GeneralMOAIDConfig {
VerifyIdentityLink idl = moaspss.getVerifyIdentityLink();
if (idl != null) {
moaspssIdlTrustProfile = idl.getTrustProfileID();
+ moaspssIdlTrustProfileTest = idl.getTestTrustProfileID();
}
}
@@ -930,6 +933,34 @@ public class GeneralMOAIDConfig {
public void setPublicURLPrefix(String publicURLPrefix) {
this.publicURLPrefix = publicURLPrefix;
}
+
+ /**
+ * @return the moaspssIdlTrustProfileTest
+ */
+ public String getMoaspssIdlTrustProfileTest() {
+ return moaspssIdlTrustProfileTest;
+ }
+
+ /**
+ * @param moaspssIdlTrustProfileTest the moaspssIdlTrustProfileTest to set
+ */
+ public void setMoaspssIdlTrustProfileTest(String moaspssIdlTrustProfileTest) {
+ this.moaspssIdlTrustProfileTest = moaspssIdlTrustProfileTest;
+ }
+
+ /**
+ * @return the moaspssAuthTrustProfileTest
+ */
+ public String getMoaspssAuthTrustProfileTest() {
+ return moaspssAuthTrustProfileTest;
+ }
+
+ /**
+ * @param moaspssAuthTrustProfileTest the moaspssAuthTrustProfileTest to set
+ */
+ public void setMoaspssAuthTrustProfileTest(String moaspssAuthTrustProfileTest) {
+ this.moaspssAuthTrustProfileTest = moaspssAuthTrustProfileTest;
+ }
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java
index 975f627d4..d8bb0179c 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java
@@ -25,14 +25,14 @@ package at.gv.egovernment.moa.id.configuration.data;
import java.util.ArrayList;
import java.util.List;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.STORK;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentGeneral;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.CPEPS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ForeignIdentities;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.STORK;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
+import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import org.apache.log4j.Logger;
@@ -48,17 +48,17 @@ public class GeneralStorkConfig {
/**
*
*/
- public GeneralStorkConfig() {
- dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
-
+ public GeneralStorkConfig() {
+ try {
+ dbconfig = ConfigurationProvider.getInstance().getDbRead().getMOAIDConfiguration();
+
+ } catch (ConfigurationException e) {
+ log.error("MOA-ID-Configuration initialization FAILED.", e);
+
+ }
+
}
-
- @Override
- protected void finalize() throws Throwable {
- ConfigurationDBUtils.closeSession();
- super.finalize();
- }
-
+
public void parse(MOAIDConfiguration config) {
log.info("Initializing general Stork config");
@@ -106,6 +106,10 @@ public class GeneralStorkConfig {
}
}
+ public List<CPEPS> getRawCPEPSList() {
+ return cpepslist;
+ }
+
public List<CPEPS> getCpepslist() {
if (null == cpepslist)
return null;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/AttributeHelper.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/AttributeHelper.java
index 012e8121f..63c82037f 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/AttributeHelper.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/AttributeHelper.java
@@ -1,7 +1,7 @@
package at.gv.egovernment.moa.id.configuration.data.oa;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAStorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
public class AttributeHelper {
private boolean isUsed = false;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/IOnlineApplicationData.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/IOnlineApplicationData.java
index 37f8fbc07..8195c993d 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/IOnlineApplicationData.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/IOnlineApplicationData.java
@@ -26,7 +26,7 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
/**
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAAuthenticationData.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAAuthenticationData.java
index a9c914f74..9b0172a24 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAAuthenticationData.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAAuthenticationData.java
@@ -29,20 +29,18 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAKeyBoxSelector;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Mandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TestCredentials;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TestCredentialsCredentialOIDItem;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.BKUURLS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.DefaultBKUs;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAKeyBoxSelector;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Mandates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TemplateType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TemplatesType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TestCredentials;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TestCredentialsCredentialOIDItem;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TransformsInfoType;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.validation.oa.OAAuthenticationDataValidation;
@@ -72,7 +70,9 @@ public class OAAuthenticationData implements IOnlineApplicationData {
private Map<String, byte[]> transformations;
private boolean enableTestCredentials = false;
- private List<String> testCredentialOIDs = null;
+ private List<String> testCredentialOIDs = null;
+ private boolean useTestIDLValidationTrustStore = false;
+ private boolean useTestAuthblockValidationTrustStore = false;
/**
*
@@ -86,18 +86,18 @@ public class OAAuthenticationData implements IOnlineApplicationData {
keyBoxIdentifier = MOAKeyBoxSelector.SECURE_SIGNATURE_KEYPAIR.value();
- bkuLocalURL = Constants.DEFAULT_LOCALBKU_URL;
- bkuHandyURL = Constants.DEFAULT_HANDYBKU_URL;
-
- MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
- if (moaidconfig != null) {
- DefaultBKUs defaultbkus = moaidconfig.getDefaultBKUs();
- if (defaultbkus != null) {
- setBkuHandyURL(defaultbkus.getHandyBKU());
- setBkuLocalURL(defaultbkus.getLocalBKU());
- setBkuOnlineURL(defaultbkus.getOnlineBKU());
- }
- }
+// bkuLocalURL = Constants.DEFAULT_LOCALBKU_URL;
+// bkuHandyURL = Constants.DEFAULT_HANDYBKU_URL;
+//
+// MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
+// if (moaidconfig != null) {
+// DefaultBKUs defaultbkus = moaidconfig.getDefaultBKUs();
+// if (defaultbkus != null) {
+// setBkuHandyURL(defaultbkus.getHandyBKU());
+// setBkuLocalURL(defaultbkus.getLocalBKU());
+// setBkuOnlineURL(defaultbkus.getOnlineBKU());
+// }
+// }
}
/* (non-Javadoc)
@@ -123,15 +123,15 @@ public class OAAuthenticationData implements IOnlineApplicationData {
String defaultlocal = "";
String defaultonline = "";
- MOAIDConfiguration dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
- if (dbconfig != null) {
- DefaultBKUs defaultbkus = dbconfig.getDefaultBKUs();
- if (defaultbkus != null) {
- defaulthandy = defaultbkus.getHandyBKU();
- defaultlocal = defaultbkus.getLocalBKU();
- defaultonline = defaultbkus.getOnlineBKU();
- }
- }
+// MOAIDConfiguration dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
+// if (dbconfig != null) {
+// DefaultBKUs defaultbkus = dbconfig.getDefaultBKUs();
+// if (defaultbkus != null) {
+// defaulthandy = defaultbkus.getHandyBKU();
+// defaultlocal = defaultbkus.getLocalBKU();
+// defaultonline = defaultbkus.getOnlineBKU();
+// }
+// }
if (bkuurls != null) {
@@ -212,7 +212,9 @@ public class OAAuthenticationData implements IOnlineApplicationData {
enableTestCredentials = oaauth.getTestCredentials().isEnableTestCredentials();
testCredentialOIDs = new ArrayList<String>();
testCredentialOIDs.addAll(oaauth.getTestCredentials().getCredentialOID());
-
+
+ useTestAuthblockValidationTrustStore = oaauth.getTestCredentials().isUseTestAuthBlockTrustStore();
+ useTestIDLValidationTrustStore = oaauth.getTestCredentials().isUseTestIDLTrustStore();
}
return null;
@@ -318,8 +320,8 @@ public class OAAuthenticationData implements IOnlineApplicationData {
if (enableTestCredentials) {
TestCredentials testing = authoa.getTestCredentials();
- if (testing != null)
- ConfigurationDBUtils.delete(testing);
+// if (testing != null)
+// ConfigurationDBUtils.delete(testing);
testing = new TestCredentials();
authoa.setTestCredentials(testing);
@@ -334,6 +336,17 @@ public class OAAuthenticationData implements IOnlineApplicationData {
}
+ TestCredentials testing = authoa.getTestCredentials();
+ if (testing == null) {
+ testing = new TestCredentials();
+ authoa.setTestCredentials(testing);
+
+ }
+ testing.setUseTestAuthBlockTrustStore(useTestAuthblockValidationTrustStore);
+ testing.setUseTestIDLTrustStore(useTestIDLValidationTrustStore);
+
+
+
return null;
}
@@ -616,5 +629,36 @@ public class OAAuthenticationData implements IOnlineApplicationData {
this.testCredentialOIDs.add(oidList[i].trim());
}
}
+
+ /**
+ * @return the useTestIDLValidationTrustStore
+ */
+ public boolean isUseTestIDLValidationTrustStore() {
+ return useTestIDLValidationTrustStore;
+ }
+
+ /**
+ * @param useTestIDLValidationTrustStore the useTestIDLValidationTrustStore to set
+ */
+ public void setUseTestIDLValidationTrustStore(
+ boolean useTestIDLValidationTrustStore) {
+ this.useTestIDLValidationTrustStore = useTestIDLValidationTrustStore;
+ }
+
+ /**
+ * @return the useTestAuthblockValidationTrustStore
+ */
+ public boolean isUseTestAuthblockValidationTrustStore() {
+ return useTestAuthblockValidationTrustStore;
+ }
+
+ /**
+ * @param useTestAuthblockValidationTrustStore the useTestAuthblockValidationTrustStore to set
+ */
+ public void setUseTestAuthblockValidationTrustStore(
+ boolean useTestAuthblockValidationTrustStore) {
+ this.useTestAuthblockValidationTrustStore = useTestAuthblockValidationTrustStore;
+ }
+
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OABPKEncryption.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OABPKEncryption.java
index 6782987e5..58b0b9d17 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OABPKEncryption.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OABPKEncryption.java
@@ -36,10 +36,10 @@ import org.apache.commons.lang.SerializationUtils;
import org.apache.log4j.Logger;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BPKDecryption;
-import at.gv.egovernment.moa.id.commons.db.dao.config.EncBPKInformation;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.BPKDecryption;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.EncBPKInformation;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.config.auth.data.BPKDecryptionParameters;
import at.gv.egovernment.moa.id.configuration.Constants;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java
index 05e163c23..22a978014 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java
@@ -29,8 +29,8 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java
index 2f9df18aa..a4d71f0ed 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java
@@ -29,8 +29,8 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.InterfederationIDPType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.InterfederationIDPType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAOAuth20Config.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAOAuth20Config.java
index b95090a55..ce50c847a 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAOAuth20Config.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAOAuth20Config.java
@@ -32,9 +32,9 @@ import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAOAUTH20;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAOAUTH20;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java
index bcac63a5f..4be1a81de 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java
@@ -35,12 +35,15 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import iaik.x509.X509Certificate;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAPVP2;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
+import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
import at.gv.egovernment.moa.id.configuration.validation.oa.OAPVP2ConfigValidation;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.MiscUtil;
public class OAPVP2Config implements IOnlineApplicationData{
@@ -56,6 +59,8 @@ public class OAPVP2Config implements IOnlineApplicationData{
private String fileUploadContentType;
private String fileUploadFileName;
+ private byte[] storedCert = null;
+
public OAPVP2Config() {
}
@@ -88,7 +93,9 @@ public class OAPVP2Config implements IOnlineApplicationData{
if (getFileUpload() != null) {
pvp2.setCertificate(getCertificate());
setReLoad(true);
- }
+
+ } else if (storedCert != null)
+ pvp2.setCertificate(storedCert);
} catch (CertificateException e) {
log.info("Uploaded Certificate can not be found", e);
@@ -133,16 +140,33 @@ public class OAPVP2Config implements IOnlineApplicationData{
if (pvp2 != null) {
metaDataURL = pvp2.getMetadataURL();
- try {
- byte[] cert = pvp2.getCertificate();
-
- if (MiscUtil.isNotEmpty(cert)) {
- X509Certificate x509 = new X509Certificate(cert);
- certificateDN = x509.getSubjectDN().getName();
+ if (pvp2.getCertificate() != null &&
+ !(new String(pvp2.getCertificate())).equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT)) {
+ try {
+ //byte[] cert = pvp2.getCertificate();
+ byte[] cert = Base64Utils.decode(new String(pvp2.getCertificate()), false);
+ if (MiscUtil.isNotEmpty(cert)) {
+ X509Certificate x509 = new X509Certificate(cert);
+ certificateDN = x509.getSubjectDN().getName();
+ }
+ } catch (CertificateException e) {
+ try {
+ byte[] cert = pvp2.getCertificate();
+ if (MiscUtil.isNotEmpty(cert)) {
+ X509Certificate x509 = new X509Certificate(cert);
+ certificateDN = x509.getSubjectDN().getName();
+ }
+
+ } catch (CertificateException e1) {
+ log.warn("PVP2 certificate can not be loaded from Online-Applikation with ID " + dbOAConfig.getPublicURLPrefix(), e1);
+ errors.add(LanguageHelper.getErrorString("error.oa.pvp2.certificate", request));
+
+ }
+
+ } catch (IOException e) {
+ log.warn("PVP2 certificate can not be loaded from Online-Applikation with ID " + dbOAConfig.getPublicURLPrefix());
+ errors.add(LanguageHelper.getErrorString("error.oa.pvp2.certificate", request));
}
- } catch (CertificateException e) {
- log.warn("PVP2 certificate can not be loaded from Online-Applikation with ID " + dbOAConfig.getPublicURLPrefix());
- errors.add(LanguageHelper.getErrorString("error.oa.pvp2.certificate", request));
}
}
}
@@ -156,6 +180,10 @@ public class OAPVP2Config implements IOnlineApplicationData{
return x509.getEncoded();
}
+ public void setStoredCert(byte[] storedCert) {
+ this.storedCert = storedCert;
+ }
+
public String getMetaDataURL() {
return metaDataURL;
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OARevisionsLogData.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OARevisionsLogData.java
new file mode 100644
index 000000000..441c879be
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OARevisionsLogData.java
@@ -0,0 +1,153 @@
+/*
+ * 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.configuration.data.oa;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class OARevisionsLogData implements IOnlineApplicationData {
+
+ private boolean active = false;
+ private String eventCodes = null;
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName()
+ */
+ @Override
+ public String getName() {
+ return "OARevisionsLogging";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest)
+ */
+ @Override
+ public List<String> parse(OnlineApplication dbOA,
+ AuthenticatedUser authUser, HttpServletRequest request) {
+
+ if (dbOA.getIsRevisionsLogActive() != null)
+ active = dbOA.getIsRevisionsLogActive();
+
+ if (MiscUtil.isNotEmpty(dbOA.getEventCodes()))
+ eventCodes = dbOA.getEventCodes();
+
+ return null;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#store(at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest)
+ */
+ @Override
+ public String store(OnlineApplication dbOA, AuthenticatedUser authUser,
+ HttpServletRequest request) {
+
+ dbOA.setIsRevisionsLogActive(active);
+
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ dbOA.setEventCodes(KeyValueUtils.normalizeCSVValueString(eventCodes));
+
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#validate(at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest)
+ */
+ @Override
+ public List<String> validate(OAGeneralConfig general,
+ AuthenticatedUser authUser, HttpServletRequest request) {
+ List<String> errors = new ArrayList<String>();
+
+ if (active && MiscUtil.isEmpty(eventCodes)) {
+ errors.add(LanguageHelper.getErrorString(
+ "error.oa.reversion.log.enabled"));
+
+ }
+
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ String[] codes = eventCodes.split(",");
+ for (String el: codes) {
+ try {
+ Integer.parseInt(el.trim());
+
+ } catch (NumberFormatException e) {
+ errors.add(LanguageHelper.getErrorString(
+ "error.oa.reversion.log.eventcodes"));
+ break;
+
+ }
+
+ }
+
+ }
+
+ return errors;
+ }
+
+ /**
+ * @return the active
+ */
+ public boolean isActive() {
+ return active;
+ }
+
+ /**
+ * @param active the active to set
+ */
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ /**
+ * @return the eventCodes
+ */
+ public String getEventCodes() {
+ return eventCodes;
+ }
+
+ /**
+ * @param eventCodes the eventCodes to set
+ */
+ public void setEventCodes(String eventCodes) {
+ this.eventCodes = eventCodes;
+ }
+
+
+
+}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASAML1Config.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASAML1Config.java
index 7b5575a90..2922231b3 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASAML1Config.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASAML1Config.java
@@ -27,9 +27,9 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OASAML1;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.validation.oa.OASAML1ConfigValidation;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASSOConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASSOConfig.java
index 28144666b..1baefe4b8 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASSOConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASSOConfig.java
@@ -26,9 +26,9 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OASSO;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.validation.oa.OASSOConfigValidation;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java
index e0a312c09..d26fe8a89 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java
@@ -29,17 +29,17 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASTORK;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AttributeProviderPlugin;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.CPEPS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OASTORK;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAStorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
+import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.validation.oa.OASTORKConfigValidation;
import at.gv.egovernment.moa.id.protocols.stork2.AttributeProviderFactory;
@@ -66,25 +66,23 @@ public class OASTORKConfig implements IOnlineApplicationData{
public OASTORKConfig() {
// fetch available citizen countries
citizenCountries = new ArrayList<String>();
+ try {
+ dbconfig = ConfigurationProvider.getInstance().getDbRead().getMOAIDConfiguration();
- dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
- try {
for(CPEPS current : dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS()) {
citizenCountries.add(current.getCountryCode());
}
}catch (NullPointerException e) {
+ } catch (ConfigurationException e) {
+ log.error("MOA-ID-Configuration initialization FAILED.", e);
+
}
}
- @Override
- protected void finalize() throws Throwable {
- ConfigurationDBUtils.closeSession();
- super.finalize();
- }
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName()
@@ -111,7 +109,13 @@ public class OASTORKConfig implements IOnlineApplicationData{
setQaa(config.getQaa());
} catch(NullPointerException e) {
// if there is no configuration available for the OA, get the default qaa level
- setQaa(dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getQualityAuthenticationAssuranceLevel());
+ try {
+ setQaa(dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getQualityAuthenticationAssuranceLevel());
+
+ } catch (NullPointerException e1) {
+ setQaa(4);
+
+ }
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java
index bb7bac4f8..19671e502 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java
@@ -27,9 +27,9 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.IdentificationNumber;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.validation.TargetValidator;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java
index 23af59d8e..e27c55c90 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java
@@ -29,9 +29,9 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.InterfederationGatewayType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.InterfederationIDPType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.InterfederationGatewayType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.InterfederationIDPType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/pvp2/ContactForm.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/pvp2/ContactForm.java
index 01615a056..664e94377 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/pvp2/ContactForm.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/pvp2/ContactForm.java
@@ -25,7 +25,7 @@ package at.gv.egovernment.moa.id.configuration.data.pvp2;
import java.util.ArrayList;
import java.util.List;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Contact;
public class ContactForm {
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/AuthenticationFilter.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/AuthenticationFilter.java
index 8ddeb9ebc..67fef3b1d 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/AuthenticationFilter.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/filter/AuthenticationFilter.java
@@ -42,11 +42,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticationManager;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.util.MiscUtil;
import at.gv.util.ToStringUtil;
import at.gv.util.WebAppUtil;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java
index e5ee5ac09..b4afcb5f2 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java
@@ -26,7 +26,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.data.OAListElement;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/LanguageHelper.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/LanguageHelper.java
index 263743dd0..29ab75b3e 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/LanguageHelper.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/LanguageHelper.java
@@ -23,9 +23,9 @@
package at.gv.egovernment.moa.id.configuration.helper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.util.MiscUtil;
import javax.servlet.http.HttpServletRequest;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/MailHelper.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/MailHelper.java
index 3c1c2f141..0fb41189d 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/MailHelper.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/MailHelper.java
@@ -44,9 +44,9 @@ import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicAction.java
index 9630bc232..0d0cda246 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicAction.java
@@ -32,11 +32,11 @@ import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
/**
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicOAAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicOAAction.java
index 82390c49c..45674a283 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicOAAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicOAAction.java
@@ -36,14 +36,20 @@ import java.util.Map;
import org.apache.log4j.Logger;
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+import at.gv.egiz.components.configuration.meta.api.ConfigurationStorageException;
import at.gv.egovernment.moa.id.auth.builder.LoginFormBuilder;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.config.ConfigurationMigrationUtils;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.STORK;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData;
@@ -51,7 +57,6 @@ import at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig;
import at.gv.egovernment.moa.id.configuration.data.oa.OAPVP2Config;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
import at.gv.egovernment.moa.id.configuration.exception.BasicOAActionException;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
import at.gv.egovernment.moa.id.configuration.helper.MailHelper;
import at.gv.egovernment.moa.id.util.FormBuildUtils;
@@ -100,10 +105,10 @@ public class BasicOAAction extends BasicAction {
OnlineApplication onlineapplication = null;
if (authUser.isAdmin())
- onlineapplication = ConfigurationDBRead.getOnlineApplication(oaid);
+ onlineapplication = configuration.getDbRead().getOnlineApplication(oaid);
else {
- userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ userdb = configuration.getUserManagement().getUserWithID(authUser.getUserID());
if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null && !userdb.isIsMailAddressVerified()) {
log.info("Online-Applikation managemant disabled. Mail address is not verified.");
@@ -114,10 +119,10 @@ public class BasicOAAction extends BasicAction {
}
// TODO: change to direct Database operation
- List<OnlineApplication> oas = userdb.getOnlineApplication();
- for (OnlineApplication oa : oas) {
- if (oa.getHjid() == oaid) {
- onlineapplication = oa;
+ List<String> oas = userdb.getOnlineApplication();
+ for (String oa : oas) {
+ if (oa.equals(oaid)) {
+ onlineapplication = configuration.getDbRead().getOnlineApplication(oaid);
break;
}
}
@@ -173,7 +178,7 @@ public class BasicOAAction extends BasicAction {
UserDatabase userdb = null;
if (onlineapplication.getHjid() != null)
- userdb = ConfigurationDBRead.getUsersWithOADBID(onlineapplication.getHjid());
+ userdb = configuration.getUserManagement().getUsersWithOADBID(onlineapplication.getHjid());
if (userdb != null && !userdb.isIsAdmin()) {
try {
@@ -197,27 +202,27 @@ public class BasicOAAction extends BasicAction {
throw new BasicOAActionException(error, Constants.STRUTS_ERROR_VALIDATION);
}
- //set metadata reload flag if reload is required
-
- if (getPvp2OA() != null && getPvp2OA().getMetaDataURL() != null) {
-
- try {
- if (isMetaDataRefreshRequired
- || !getPvp2OA().getMetaDataURL().equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())
- || getPvp2OA().getFileUpload() != null
- || getPvp2OA().isReLoad()) {
-
- log.debug("Set PVP2 Metadata refresh flag.");
- MOAIDConfiguration moaconfig = ConfigurationDBRead.getMOAIDConfiguration();
- moaconfig.setPvp2RefreshItem(new Date());
- ConfigurationDBUtils.saveOrUpdate(moaconfig);
-
- }
- } catch (Throwable e) {
- log.info("Found no MetadataURL in OA-Databaseconfig!", e);
- }
-
- }
+// //set metadata reload flag if reload is required
+//
+// if (getPvp2OA() != null && getPvp2OA().getMetaDataURL() != null) {
+//
+// try {
+// if (isMetaDataRefreshRequired
+// || !getPvp2OA().getMetaDataURL().equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())
+// || getPvp2OA().getFileUpload() != null
+// || getPvp2OA().isReLoad()) {
+//
+// log.debug("Set PVP2 Metadata refresh flag.");
+// MOAIDConfiguration moaconfig = configuration.getDbRead().getMOAIDConfiguration();
+// moaconfig.setPvp2RefreshItem(new Date());
+// ConfigurationDBUtils.saveOrUpdate(moaconfig);
+//
+// }
+// } catch (Throwable e) {
+// log.info("Found no MetadataURL in OA-Databaseconfig!", e);
+// }
+//
+// }
return onlineapplication;
}
@@ -242,7 +247,7 @@ public class BasicOAAction extends BasicAction {
}
session.setAttribute(Constants.SESSION_FORMID, null);
- UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase userdb = configuration.getUserManagement().getUserWithID(authUser.getUserID());
if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null && !userdb.isIsMailAddressVerified()) {
log.info("Online-Applikation managemant disabled. Mail address is not verified.");
throw new BasicOAActionException(
@@ -292,7 +297,7 @@ public class BasicOAAction extends BasicAction {
} else {
if (oaid == -1) {
- List<OnlineApplication> oaList = ConfigurationDBRead.getAllOnlineApplications();
+ List<OnlineApplication> oaList = configuration.getDbRead().getAllOnlineApplications();
if (oaList != null) {
for (OnlineApplication el : oaList) {
@@ -303,7 +308,7 @@ public class BasicOAAction extends BasicAction {
}
if (onlineapplication == null) {
- onlineapplication = ConfigurationDBRead.getOnlineApplication(oaidentifier);
+ onlineapplication = configuration.getDbRead().getOnlineApplication(oaidentifier);
}
setNewOA(true);
@@ -316,18 +321,18 @@ public class BasicOAAction extends BasicAction {
}
} else {
- onlineapplication = ConfigurationDBRead.getOnlineApplication(oaid);
+ onlineapplication = configuration.getDbRead().getOnlineApplication(oaid);
if (!oaidentifier.equals(onlineapplication.getPublicURLPrefix())) {
OnlineApplication dbOA = null;
- List<OnlineApplication> oaList = ConfigurationDBRead.getAllOnlineApplications();
+ List<OnlineApplication> oaList = configuration.getDbRead().getAllOnlineApplications();
for (OnlineApplication el : oaList) {
if (el.getPublicURLPrefix().startsWith(oaidentifier) )
dbOA = el;
}
if (dbOA == null)
- dbOA = ConfigurationDBRead.getOnlineApplication(oaidentifier);
+ dbOA = configuration.getDbRead().getOnlineApplication(oaidentifier);
if ( (dbOA != null && !dbOA.getHjid().equals(oaid))) {
log.info("The OAIdentifier is not unique");
@@ -376,7 +381,7 @@ public class BasicOAAction extends BasicAction {
}
session.setAttribute(Constants.SESSION_FORMID, null);
- UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase userdb = configuration.getUserManagement().getUserWithID(authUser.getUserID());
if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null && !userdb.isIsMailAddressVerified()) {
log.info("Online-Applikation managemant disabled. Mail address is not verified.");
throw new BasicOAActionException(
@@ -426,23 +431,23 @@ public class BasicOAAction extends BasicAction {
try {
if (dboa.isIsNew()) {
if (!authUser.isAdmin()) {
- UserDatabase user = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase user = configuration.getUserManagement().getUserWithID(authUser.getUserID());
- List<OnlineApplication> useroas = user.getOnlineApplication();
- if (useroas == null) useroas = new ArrayList<OnlineApplication>();
+ List<String> useroas = user.getOnlineApplication();
+ if (useroas == null) useroas = new ArrayList<String>();
- useroas.add(dboa);
- ConfigurationDBUtils.saveOrUpdate(user);
+ useroas.add(String.valueOf(dboa.getHjid()));
+ configuration.getUserManagement().saveOrUpdate(user);
} else {
if (persistOA)
- ConfigurationDBUtils.save(dboa);
+ save(dboa);
}
} else
if (persistOA)
- ConfigurationDBUtils.saveOrUpdate(dboa);
+ save(dboa);
} catch (MOADatabaseException e) {
log.warn("Online-Application can not be stored.", e);
@@ -452,6 +457,89 @@ public class BasicOAAction extends BasicAction {
return null;
}
+ protected void save(OnlineApplication oa) throws MOADatabaseException {
+ try {
+ STORK storkConfig = null;
+ try {
+ MOAIDConfiguration moaidConfig =
+ ConfigurationProvider.getInstance().getDbRead().getMOAIDConfiguration();
+
+ storkConfig = moaidConfig.getAuthComponentGeneral().getForeignIdentities().getSTORK();
+
+ } catch (Exception e) {
+
+ }
+
+ log.debug("JaxB to Key/Value configuration transformation started ...");
+ Map<String, String> keyValueConfig =
+ ConfigurationMigrationUtils.convertHyberJaxBOnlineApplicationToKeyValue(oa, storkConfig);
+
+ log.debug("JaxB to Key/Value configuration transformation finished. Start Key/Value storage process ...");
+
+ String serviceIdentifier = keyValueConfig.get(MOAIDConfigurationConstants.PREFIX_SERVICES);
+ if (MiscUtil.isEmpty(serviceIdentifier)) {
+ log.info("Use default ServiceIdentifier.");
+ serviceIdentifier = MOAIDConfigurationConstants.PREFIX_OA;
+ }
+
+ if (oa.getHjid() == null) {
+ log.debug("No hjID -> find new Service ID ...");
+ String hjID = configuration.getConfigModule().buildArrayIdentifier(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES + "." + serviceIdentifier, 0, keyValueConfig);
+ log.debug("Find new hjID: " + hjID + " for service: " + oa.getPublicURLPrefix());
+ oa.setHjid(Long.valueOf(hjID));
+
+ }
+
+ Map<String, String> absolutKeyValue = KeyValueUtils.makeKeysAbsolut(
+ keyValueConfig,
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES + "." + serviceIdentifier + "." + String.valueOf(oa.getHjid()),
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES);
+
+ configuration.getConfigModule().storeChanges(absolutKeyValue, null, null);
+
+ log.info("MOA-ID Service Key/Value configuration successfull stored.");
+
+
+ } catch (ConfigurationStorageException | at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ log.warn("MOAID Configuration can not be stored in Database", e);
+ throw new MOADatabaseException(e);
+
+ }
+
+ }
+
+ protected boolean delete(OnlineApplication onlineapplication) {
+ try {
+ log.debug("JaxB to Key/Value configuration transformation started ...");
+ Map<String, String> keyValueConfig =
+ ConfigurationMigrationUtils.convertHyberJaxBOnlineApplicationToKeyValue(onlineapplication, null);
+
+ log.debug("JaxB to Key/Value configuration transformation finished. Start Key/Value storage process ...");
+
+ String serviceIdentifier = keyValueConfig.get(MOAIDConfigurationConstants.PREFIX_SERVICES);
+ if (MiscUtil.isEmpty(serviceIdentifier)) {
+ log.info("Use default ServiceIdentifier.");
+ serviceIdentifier = MOAIDConfigurationConstants.PREFIX_OA;
+ }
+
+ String deleteServiceKey =
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES + "." + serviceIdentifier + "." + String.valueOf(onlineapplication.getHjid()) + ".*";
+
+ configuration.getConfigModule().storeChanges(null, null, Arrays.asList(new String[]{deleteServiceKey}));
+
+ log.info("MOA-ID Service Key/Value configuration successfull stored.");
+ return true;
+
+ } catch (ConfigurationStorageException e) {
+ log.warn("MOAID Configuration can not be stored in Database", e);
+
+ }
+
+ return false;
+
+ }
+
public String bkuFramePreview() {
String preview = null;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java
index 4236c0d13..725a2eded 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java
@@ -25,49 +25,41 @@ package at.gv.egovernment.moa.id.configuration.struts.action;
import java.math.BigInteger;
import java.util.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
-import org.apache.struts2.interceptor.ServletRequestAware;
-import org.apache.struts2.interceptor.ServletResponseAware;
-
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModes;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
-import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
-import at.gv.egovernment.moa.id.commons.db.dao.config.GeneralConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentityLinkSigners;
-import at.gv.egovernment.moa.id.commons.db.dao.config.LegacyAllowed;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOASP;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAuth;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineMandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Organization;
-import at.gv.egovernment.moa.id.commons.db.dao.config.PVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Protocols;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SLRequestTemplates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.STORK;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SecurityLayer;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TimeOuts;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TrustAnchor;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+
+import at.gv.egiz.components.configuration.meta.api.ConfigurationStorageException;
+import at.gv.egovernment.moa.id.commons.config.ConfigurationMigrationUtils;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentGeneral;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.CPEPS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModeType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModes;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ConnectionParameterClientAuthType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Contact;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.DefaultBKUs;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ForeignIdentities;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.GeneralConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.IdentityLinkSigners;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.LegacyAllowed;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOASP;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAuth;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineMandates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Organization;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.PVP2;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Protocols;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SAML1;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SLRequestTemplates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SSO;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.STORK;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SecurityLayer;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TimeOuts;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TransformsInfoType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyAuthBlock;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyIdentityLink;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.Constants;
-import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.data.GeneralMOAIDConfig;
import at.gv.egovernment.moa.id.configuration.data.GeneralStorkConfig;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
@@ -78,7 +70,6 @@ import at.gv.egovernment.moa.id.configuration.validation.moaconfig.StorkConfigVa
import at.gv.egovernment.moa.id.util.Random;
import at.gv.egovernment.moa.util.MiscUtil;
-import com.opensymphony.xwork2.ActionSupport;
public class EditGeneralConfigAction extends BasicAction {
@@ -92,7 +83,8 @@ public class EditGeneralConfigAction extends BasicAction {
public String loadConfig() {
try {
- populateBasicInformations();
+ populateBasicInformations();
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
@@ -101,7 +93,8 @@ public class EditGeneralConfigAction extends BasicAction {
if (authUser.isAdmin()) {
- MOAIDConfiguration dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
+
+ MOAIDConfiguration dbconfig = configuration.getDbRead().getMOAIDConfiguration();
moaconfig = new GeneralMOAIDConfig();
moaconfig.parse(dbconfig);
@@ -115,8 +108,6 @@ public class EditGeneralConfigAction extends BasicAction {
if (storkconfig == null) {
log.error("Stork configuration is null");
}
-
- ConfigurationDBUtils.closeSession();
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
@@ -210,7 +201,6 @@ public class EditGeneralConfigAction extends BasicAction {
public String back() {
try {
populateBasicInformations();
- ConfigurationDBUtils.closeSession();
} catch (BasicActionException e) {
@@ -240,7 +230,7 @@ public class EditGeneralConfigAction extends BasicAction {
ex.printStackTrace();
}
- MOAIDConfiguration dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
+ MOAIDConfiguration dbconfig = configuration.getDbRead().getMOAIDConfiguration();
if (dbconfig == null)
dbconfig = new MOAIDConfiguration();
@@ -502,7 +492,7 @@ public class EditGeneralConfigAction extends BasicAction {
}
dbchainingmodes.setSystemDefaultMode(
- ChainingModeType.fromValue(moaconfig.getDefaultchainigmode()));
+ ChainingModeType.fromValue("pkix"));
IdentityLinkSigners idlsigners = dbauth.getIdentityLinkSigners();
if (idlsigners == null) {
@@ -596,12 +586,15 @@ public class EditGeneralConfigAction extends BasicAction {
dbmoasp.setVerifyIdentityLink(moaidl);
}
moaidl.setTrustProfileID(moaconfig.getMoaspssIdlTrustProfile());
+ moaidl.setTestTrustProfileID(moaconfig.getMoaspssIdlTrustProfileTest());
+
VerifyAuthBlock moaauth = dbmoasp.getVerifyAuthBlock();
if (moaauth == null) {
moaauth = new VerifyAuthBlock();
dbmoasp.setVerifyAuthBlock(moaauth);
}
moaauth.setTrustProfileID(moaconfig.getMoaspssAuthTrustProfile());
+ moaauth.setTestTrustProfileID(moaconfig.getMoaspssAuthTrustProfileTest());
if (moaauth.getVerifyTransformsInfoProfileID() != null &&
moaauth.getVerifyTransformsInfoProfileID().size() > 0)
@@ -652,16 +645,23 @@ public class EditGeneralConfigAction extends BasicAction {
//save config
try {
- dbconfig.setTimestampItem(new Date());
+ log.debug("JaxB to Key/Value configuration transformation started ...");
+ Map<String, String> keyValueConfig =
+ ConfigurationMigrationUtils.convertHyberJaxBMOAIDConfigToKeyValue(dbconfig);
+
+ log.debug("JaxB to Key/Value configuration transformation finished. Start Key/Value storage process ...");
+
+ configuration.getConfigModule().storeChanges(keyValueConfig, null, null);
- ConfigurationDBUtils.save(dbconfig);
+ log.info("General MOA-ID Key/Value configuration successfull stored.");
- } catch (MOADatabaseException e) {
+
+ } catch (ConfigurationStorageException e) {
log.warn("MOAID Configuration can not be stored in Database", e);
return LanguageHelper.getErrorString("error.db.oa.store", request);
} finally {
- ConfigurationDBUtils.closeSession();
+
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java
index 1da948eec..1079932b9 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java
@@ -22,16 +22,16 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.configuration.struts.action;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.*;
+import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.data.FormularCustomization;
import at.gv.egovernment.moa.id.configuration.data.oa.*;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
import at.gv.egovernment.moa.id.configuration.exception.BasicOAActionException;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
import at.gv.egovernment.moa.id.configuration.helper.MailHelper;
import at.gv.egovernment.moa.id.util.FormBuildUtils;
@@ -79,6 +79,9 @@ public class EditOAAction extends BasicOAAction {
map.putAll(FormBuildUtils.getDefaultMap());
FormularCustomization formOA = new FormularCustomization(map);
formList.put(formOA.getName(), formOA);
+
+ OARevisionsLogData revisOA = new OARevisionsLogData();
+ formList.put(revisOA.getName(), revisOA);
}
@@ -123,7 +126,6 @@ public class EditOAAction extends BasicOAAction {
return e.getStrutsReturnValue();
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -140,7 +142,7 @@ public class EditOAAction extends BasicOAAction {
ArrayList<AttributeHelper> attributes = new ArrayList<AttributeHelper>();
try {
- for (StorkAttribute current : ConfigurationDBRead
+ for (StorkAttribute current : configuration.getDbRead()
.getMOAIDConfiguration().getAuthComponentGeneral()
.getForeignIdentities().getSTORK().getAttributes())
attributes.add(new AttributeHelper(current));
@@ -152,7 +154,7 @@ public class EditOAAction extends BasicOAAction {
getStorkOA().setHelperAttributes(attributes);
- UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser
+ UserDatabase userdb = configuration.getUserManagement().getUserWithID(authUser
.getUserID());
if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null
@@ -176,7 +178,6 @@ public class EditOAAction extends BasicOAAction {
return Constants.STRUTS_ERROR;
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -240,12 +241,12 @@ public class EditOAAction extends BasicOAAction {
int numoas = 0;
int numusers = 0;
- List<OnlineApplication> openOAs = ConfigurationDBRead
+ List<OnlineApplication> openOAs = configuration.getDbRead()
.getAllNewOnlineApplications();
if (openOAs != null)
numoas = openOAs.size();
- List<UserDatabase> openUsers = ConfigurationDBRead.getAllNewUsers();
+ List<UserDatabase> openUsers = configuration.getUserManagement().getAllNewUsers();
if (openUsers != null)
numusers = openUsers.size();
try {
@@ -281,7 +282,6 @@ public class EditOAAction extends BasicOAAction {
return e.getStrutsReturnValue();
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -312,7 +312,6 @@ public class EditOAAction extends BasicOAAction {
return Constants.STRUTS_ERROR;
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -332,42 +331,43 @@ public class EditOAAction extends BasicOAAction {
}
oaidentifier = preProcessDeleteOnlineApplication();
- OnlineApplication onlineapplication = ConfigurationDBRead
+ OnlineApplication onlineapplication = configuration.getDbRead()
.getOnlineApplication(oaidentifier);
+
request.getSession().setAttribute(Constants.SESSION_OAID, null);
- try {
- if (MiscUtil.isNotEmpty(onlineapplication.getAuthComponentOA()
- .getOAPVP2().getMetadataURL())) {
-
- MOAIDConfiguration moaconfig = ConfigurationDBRead
- .getMOAIDConfiguration();
- moaconfig.setPvp2RefreshItem(new Date());
- ConfigurationDBUtils.saveOrUpdate(moaconfig);
-
- }
- } catch (NullPointerException e) {
- log.debug("Found no MetadataURL in OA-Databaseconfig");
-
- } catch (Throwable e) {
- log.info("Set metadata refresh flag FAILED.", e);
- }
-
- if (ConfigurationDBUtils.delete(onlineapplication)) {
+// try {
+// if (MiscUtil.isNotEmpty(onlineapplication.getAuthComponentOA()
+// .getOAPVP2().getMetadataURL())) {
+//
+// MOAIDConfiguration moaconfig = configuration.getDbRead()
+// .getMOAIDConfiguration();
+// moaconfig.setPvp2RefreshItem(new Date());
+// ConfigurationDBUtils.saveOrUpdate(moaconfig);
+//
+// }
+// } catch (NullPointerException e) {
+// log.debug("Found no MetadataURL in OA-Databaseconfig");
+//
+// } catch (Throwable e) {
+// log.info("Set metadata refresh flag FAILED.", e);
+// }
+
+ if (onlineapplication != null && delete(onlineapplication)) {
if (!authUser.isAdmin()) {
- UserDatabase user = ConfigurationDBRead.getUserWithID(authUser
+ UserDatabase user = configuration.getUserManagement().getUserWithID(authUser
.getUserID());
- List<OnlineApplication> useroas = user.getOnlineApplication();
+ List<String> useroas = user.getOnlineApplication();
- for (OnlineApplicationType oa : useroas) {
- if (oa.getHjid().equals(onlineapplication.getHjid())) {
+ for (String oa : useroas) {
+ if (oa.equals(onlineapplication.getHjid())) {
useroas.remove(oa);
}
}
try {
- ConfigurationDBUtils.saveOrUpdate(user);
+ configuration.getUserManagement().saveOrUpdate(user);
} catch (MOADatabaseException e) {
log.warn("User information can not be updated in database",
@@ -378,15 +378,12 @@ public class EditOAAction extends BasicOAAction {
}
}
- ConfigurationDBUtils.closeSession();
-
addActionMessage(LanguageHelper.getGUIString(
"webpages.oaconfig.delete.message", oaidentifier, request));
return Constants.STRUTS_SUCCESS;
} else {
- ConfigurationDBUtils.closeSession();
addActionError(LanguageHelper.getGUIString(
"webpages.oaconfig.delete.error", oaidentifier, request));
return Constants.STRUTS_SUCCESS;
@@ -400,7 +397,6 @@ public class EditOAAction extends BasicOAAction {
return e.getStrutsReturnValue();
} finally {
- ConfigurationDBUtils.closeSession();
}
@@ -439,6 +435,16 @@ public class EditOAAction extends BasicOAAction {
formList.put(storkOA.getName(), storkOA);
}
+
+ public OARevisionsLogData getRevisionsLogOA() {
+ return (OARevisionsLogData) formList.get(new OARevisionsLogData().getName());
+ }
+
+ public void setRevisionsLogOA(OARevisionsLogData storkOA) {
+ formList.put(storkOA.getName(), storkOA);
+ }
+
+
/**
* @return the nextPage
*/
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ImportExportAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ImportExportAction.java
index 84093cc7a..a2c5da247 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ImportExportAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ImportExportAction.java
@@ -22,40 +22,38 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.configuration.struts.action;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.StringWriter;
+import java.util.Arrays;
+import java.util.Enumeration;
import java.util.List;
+import java.util.Properties;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
-import org.apache.struts2.interceptor.ServletRequestAware;
-import org.apache.struts2.interceptor.ServletResponseAware;
+import org.springframework.beans.BeansException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.ConfigurationUtil;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.legacy.BuildFromLegacyConfig;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
-import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
import at.gv.egovernment.moa.id.util.Random;
+import at.gv.egovernment.moa.util.MiscUtil;
-import com.opensymphony.xwork2.ActionSupport;
+import com.fasterxml.jackson.core.JsonProcessingException;
public class ImportExportAction extends BasicAction {
@@ -92,7 +90,7 @@ public class ImportExportAction extends BasicAction {
}
}
- public String importLegacyConfig() {
+ public String importLegacyConfig() throws ConfigurationException {
try {
populateBasicInformations();
@@ -128,67 +126,94 @@ public class ImportExportAction extends BasicAction {
return Constants.STRUTS_ERROR_VALIDATION;
}
- try {
-
- MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
-
- MOAIDConfiguration moaconfig;
+ Properties result = null;
+
try {
log.warn("WARNING! The legacy import deletes the hole old config");
- String rootConfigFileDir = ConfigurationProvider.getInstance().getConfigRootDir();
-
- moaconfig = BuildFromLegacyConfig.build(fileUpload, rootConfigFileDir, moaidconfig);
-
- } catch (ConfigurationException e) {
+ InputStream inStream = new FileInputStream(fileUpload);
+ // get config from xml file
+ JAXBContext jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config.deprecated");
+ Unmarshaller m = jc.createUnmarshaller();
+ MOAIDConfiguration config = (MOAIDConfiguration) m.unmarshal(inStream);
+
+ // serialize config to JSON properties
+ result = ConfigurationUtil.moaIdConfigToJsonProperties(config);
+
+ if (result == null || result.isEmpty()) {
+ log.info("Legacy configuration has is empty");
+ addActionError(LanguageHelper.getErrorString("errors.importexport.legacyimport", new Object[] {"Empty Configuratiobn"}, request));
+
+ formID = Random.nextRandom();
+ session.setAttribute(Constants.SESSION_FORMID, formID);
+ return Constants.STRUTS_ERROR_VALIDATION;
+
+ }
+
+ } catch (JsonProcessingException | JAXBException | FileNotFoundException e) {
log.info("Legacy configuration has an Import Error", e);
addActionError(LanguageHelper.getErrorString("errors.importexport.legacyimport", new Object[] {e.getMessage()}, request));
- ConfigurationDBUtils.closeSession();
-
+
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
return Constants.STRUTS_ERROR_VALIDATION;
- } catch (at.gv.egovernment.moa.id.configuration.exception.ConfigurationException e) {
- ConfigurationDBUtils.closeSession();
+ }
+
+ try {
+ //check if XML config should be use
+ log.warn("WARNING! MOA-ID 2.0 is started with XML configuration. This setup overstrike the actual configuration in the Database!");
+
+ Configuration dbConfiguration =
+ (Configuration) ConfigurationProvider.getInstance().getContext().getBean("moaidconfig");
+
+ if (dbConfiguration == null) {
+ log.warn("Open Database connection FAILED.");
+ addActionError("Open Database connection FAILED.");
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
return Constants.STRUTS_ERROR_VALIDATION;
+
}
- //check if XML config should be use
- log.warn("WARNING! MOA-ID 2.0 is started with XML configuration. This setup overstrike the actual configuration in the Database!");
-
-
- if (moaidconfig != null)
- ConfigurationDBUtils.delete(moaidconfig);
+ boolean isOverwriteData = true;
- List<OnlineApplication> oas = ConfigurationDBRead.getAllOnlineApplications();
- if (oas != null && oas.size() > 0) {
- for (OnlineApplication oa : oas)
- ConfigurationDBUtils.delete(oa);
+ List<String> keys = Arrays.asList(dbConfiguration.getConfigurationIds());
+
+ if (keys == null) {
+ log.info("Configuration is not readable.");
+ throw new MOADatabaseException("Configuration is not readable.");
}
-
-
- oas = moaconfig.getOnlineApplication();
- for (OnlineApplication oa : oas)
- ConfigurationDBUtils.save(oa);
- moaconfig.setOnlineApplication(null);
- ConfigurationDBUtils.save(moaconfig);
-
- } catch (MOADatabaseException e) {
- log.warn("General MOA-ID config can not be stored in Database");
- addActionError(e.getMessage());
+ if (isOverwriteData) {
+ // remove existing entries
+ for (String key : keys) {
+ dbConfiguration.deleteIds(key);
+ }
+ }
+
+ Enumeration<?> propertyNames = result.propertyNames();
+
+ while (propertyNames.hasMoreElements()) {
+ String key = (String) propertyNames.nextElement();
+ String json = result.getProperty(key);
+
+ dbConfiguration.setStringValue(key, json);
+ }
+
+ } catch (ConfigurationException | MOADatabaseException | at.gv.egiz.components.configuration.api.ConfigurationException e1) {
+ log.warn("General MOA-ID config can not be stored in Database", e1);
+ addActionError(e1.getMessage());
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
- return Constants.STRUTS_ERROR_VALIDATION;
+ return Constants.STRUTS_ERROR_VALIDATION;
+
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
//set new formID
@@ -232,45 +257,61 @@ public class ImportExportAction extends BasicAction {
if (authUser.isAdmin()) {
- log.info("Write MOA-ID 2.x xml config");
- JAXBContext jc;
+ log.info("Write MOA-ID 3.x config");
try {
- jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config");
-
- Marshaller m = jc.createMarshaller();
- m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
-// File test = new File(xmlconfigout);
-// m.marshal(moaidconfig, test);
- MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
- if (moaidconfig == null) {
- log.info("No MOA-ID 2.x configruation available");
- addActionError(LanguageHelper.getErrorString("errors.importexport.export.noconfig", request));
+ Configuration dbConfiguration =
+ (Configuration) ConfigurationProvider.getInstance().getContext().getBean("moaidconfig");
+
+ if (dbConfiguration == null) {
+ log.warn("Open Database connection FAILED.");
+ addActionError("Open Database connection FAILED.");
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
return Constants.STRUTS_ERROR_VALIDATION;
+
+ }
+
+ Properties result = new Properties();
+ String[] allConfigIDs = dbConfiguration.getConfigurationIds();
+ for (String key : allConfigIDs) {
+ String value = dbConfiguration.getStringValue(key);
+ if (MiscUtil.isNotEmpty(value)) {
+ result.put(key, value);
+ log.debug("Put key: " + key + " with value: " + value + " to property file.");
+
+ } else
+ log.info("Leave key: " + key + " Reason: Value is null or empty");
+
}
- List<OnlineApplication> oaconfigs = ConfigurationDBRead.getAllOnlineApplications();
- moaidconfig.setOnlineApplication(oaconfigs);
- StringWriter writer = new StringWriter();
- m.marshal(moaidconfig, writer);
- fileInputStream = IOUtils.toInputStream(writer.toString(), "UTF-8");
+ if (result.isEmpty()) {
+ log.info("No MOA-ID 3.x configruation available");
+ addActionError(LanguageHelper.getErrorString("errors.importexport.export.noconfig", request));
+
+ formID = Random.nextRandom();
+ session.setAttribute(Constants.SESSION_FORMID, formID);
+ return Constants.STRUTS_ERROR_VALIDATION;
+ }
- } catch (JAXBException e) {
- log.info("MOA-ID 2.x configruation could not be exported into a XML file.", e);
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ result.store(output, null);
+ fileInputStream = new ByteArrayInputStream(output.toByteArray());
+
+ } catch (IOException | at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ log.info("MOA-ID 3.x configruation could not be exported into file.", e);
addActionError(LanguageHelper.getErrorString("errors.importexport.export",
new Object[]{e.getMessage()}, request));
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
return Constants.STRUTS_ERROR_VALIDATION;
- } catch (IOException e) {
- log.info("MOA-ID 2.x configruation could not be exported into a XML file.", e);
- addActionError(LanguageHelper.getErrorString("errors.importexport.export",
- new Object[]{e.getMessage()}, request));
+
+ } catch (ConfigurationException | BeansException e) {
+ log.warn("Open Database connection FAILED.");
+ addActionError("Open Database connection FAILED.");
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
@@ -278,7 +319,7 @@ public class ImportExportAction extends BasicAction {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
@@ -331,32 +372,54 @@ public class ImportExportAction extends BasicAction {
return Constants.STRUTS_ERROR_VALIDATION;
}
- log.info("Load configuration from MOA-ID 2.x XML configuration");
+ log.info("Load configuration from MOA-ID 3.x XML configuration");
try {
- JAXBContext jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config");
- Unmarshaller m = jc.createUnmarshaller();
- MOAIDConfiguration moaconfig = (MOAIDConfiguration) m.unmarshal(fileUpload);
-
- log.warn("WARNING! The XML import deletes the hole old config");
- List<OnlineApplication> oas = ConfigurationDBRead.getAllOnlineApplications();
- if (oas != null && oas.size() > 0) {
- for (OnlineApplication oa : oas)
- ConfigurationDBUtils.delete(oa);
- }
- MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
- if (moaidconfig != null)
- ConfigurationDBUtils.delete(moaidconfig);
+ Properties inProperties = new Properties();
+ inProperties.load(new FileInputStream(fileUpload));
+
+ //check if XML config should be use
+ log.warn("WARNING! MOA-ID 2.0 is started with XML configuration. This setup overstrike the actual configuration in the Database!");
- List<OnlineApplication> importoas = moaconfig.getOnlineApplication();
- for (OnlineApplication importoa : importoas) {
- ConfigurationDBUtils.saveOrUpdate(importoa);
+ Configuration dbConfiguration =
+ (Configuration) ConfigurationProvider.getInstance().getContext().getBean("moaidconfig");
+
+ if (dbConfiguration == null) {
+ log.warn("Open Database connection FAILED.");
+ addActionError("Open Database connection FAILED.");
+
+ formID = Random.nextRandom();
+ session.setAttribute(Constants.SESSION_FORMID, formID);
+ return Constants.STRUTS_ERROR_VALIDATION;
+
}
-
- moaconfig.setOnlineApplication(null);
- ConfigurationDBUtils.saveOrUpdate(moaconfig);
-
+
+ boolean isOverwriteData = true;
+
+ List<String> keys = Arrays.asList(dbConfiguration.getConfigurationIds());
+
+ if (keys == null) {
+ log.info("Configuration is not readable.");
+ throw new MOADatabaseException("Configuration is not readable.");
+ }
+
+ if (isOverwriteData) {
+ // remove existing entries
+ for (String key : keys) {
+ dbConfiguration.deleteIds(key);
+ }
+ }
+
+ Enumeration<?> propertyNames = inProperties.propertyNames();
+
+ while (propertyNames.hasMoreElements()) {
+ String key = (String) propertyNames.nextElement();
+ String json = inProperties.getProperty(key);
+
+ dbConfiguration.setStringValue(key, json);
+ }
+
} catch (Exception e) {
log.warn("MOA-ID XML configuration can not be loaded from File.", e);
addActionError(LanguageHelper.getErrorString("errors.importexport.import",
@@ -369,7 +432,7 @@ public class ImportExportAction extends BasicAction {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
//set new formID
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java
index f4a3d0c75..040931b42 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java
@@ -77,12 +77,11 @@ import org.opensaml.xml.security.x509.X509Credential;
import org.opensaml.xml.signature.Signature;
import org.opensaml.xml.signature.impl.ExplicitKeySignatureTrustEngine;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticationManager;
@@ -90,7 +89,6 @@ import at.gv.egovernment.moa.id.configuration.auth.pvp2.PVP2Utils;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.data.UserDatabaseFrom;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.AuthenticationHelper;
import at.gv.egovernment.moa.id.configuration.helper.DateTimeHelper;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
@@ -187,7 +185,7 @@ public class IndexAction extends BasicAction {
}
- UserDatabase dbuser = ConfigurationDBRead.getUserWithUserName(username);
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithUserName(username);
if (dbuser == null) {
log.warn("Unknown Username");
addActionError(LanguageHelper.getErrorString("webpages.index.login.notallowed", request));
@@ -238,7 +236,7 @@ public class IndexAction extends BasicAction {
dbuser.setLastLogin(DateTimeHelper.getDateTime(new Date()));
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
} catch (MOADatabaseException e) {
log.warn("UserDatabase communicaton error", e);
@@ -246,7 +244,6 @@ public class IndexAction extends BasicAction {
return Constants.STRUTS_ERROR;
}
finally {
- ConfigurationDBUtils.closeSession();
}
HttpSession session = generateNewJSession(request);
@@ -400,7 +397,7 @@ public class IndexAction extends BasicAction {
(sessionTimeOut * Constants.ONE_MINUTE_IN_MILLIS));
//search user
- UserDatabase dbuser = ConfigurationDBRead.getUserWithUserBPKWBPK(bpkwbpk);
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithUserBPKWBPK(bpkwbpk);
if (dbuser == null) {
log.info("No user found with bpk/wbpk " + bpkwbpk);
@@ -456,7 +453,6 @@ public class IndexAction extends BasicAction {
session.setAttribute(Constants.SESSION_FORM, user);
session.setAttribute(Constants.SESSION_AUTH, authUser);
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_NEWUSER;
@@ -516,7 +512,7 @@ public class IndexAction extends BasicAction {
dbuser.setLastLogin(DateTimeHelper.getDateTime(new Date()));
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
} catch (MOADatabaseException e) {
log.warn("UserDatabase communicaton error", e);
@@ -524,7 +520,6 @@ public class IndexAction extends BasicAction {
return Constants.STRUTS_ERROR;
}
finally {
- ConfigurationDBUtils.closeSession();
}
HttpSession newsession = generateNewJSession(request);
@@ -693,7 +688,7 @@ public class IndexAction extends BasicAction {
dbuser.setIsUsernamePasswordAllowed(false);
} else
- dbuser = ConfigurationDBRead.getUserWithID(userID);
+ dbuser = configuration.getUserManagement().getUserWithID(userID);
dbuser.setMail(user.getMail());
dbuser.setPhone(user.getPhone());
@@ -702,7 +697,7 @@ public class IndexAction extends BasicAction {
dbuser.setUserRequestTokken(Random.nextRandom());
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
MailHelper.sendUserMailAddressVerification(dbuser);
@@ -719,7 +714,6 @@ public class IndexAction extends BasicAction {
finally {
session.setAttribute(Constants.SESSION_FORM, null);
session.setAttribute(Constants.SESSION_AUTH, null);
- ConfigurationDBUtils.closeSession();
}
addActionMessage(LanguageHelper.getGUIString("webpages.edituser.changemailaddress.verify", request));
@@ -758,7 +752,7 @@ public class IndexAction extends BasicAction {
return Constants.STRUTS_ERROR;
}
- UserDatabase dbuser = ConfigurationDBRead.getNewUserWithTokken(userrequesttokken);
+ UserDatabase dbuser = configuration.getUserManagement().getNewUserWithTokken(userrequesttokken);
if (dbuser != null) {
dbuser.setUserRequestTokken(null);
dbuser.setIsMailAddressVerified(true);
@@ -767,16 +761,16 @@ public class IndexAction extends BasicAction {
dbuser.setIsAdminRequest(false);
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
int numoas = 0;
int numusers = 0;
- List<OnlineApplication> openOAs = ConfigurationDBRead.getAllNewOnlineApplications();
+ List<OnlineApplication> openOAs = configuration.getDbRead().getAllNewOnlineApplications();
if (openOAs != null)
numoas = openOAs.size();
- List<UserDatabase> openUsers = ConfigurationDBRead.getAllNewUsers();
+ List<UserDatabase> openUsers = configuration.getUserManagement().getAllNewUsers();
if (openUsers != null)
numusers = openUsers.size();
@@ -792,7 +786,6 @@ public class IndexAction extends BasicAction {
}
finally {
- ConfigurationDBUtils.closeSession();
}
addActionMessage(LanguageHelper.getGUIString("validation.newuser.mailaddress", request));
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java
index eead280be..8be24edb4 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java
@@ -28,12 +28,10 @@ import java.util.List;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AttributeProviderPlugin;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.IdentificationNumber;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
@@ -80,7 +78,7 @@ public class InterfederationIDPAction extends BasicOAAction {
populateBasicInformations();
if (authUser.isAdmin()) {
- List<OnlineApplication> dbOAs = ConfigurationDBRead.getAllOnlineApplications();
+ List<OnlineApplication> dbOAs = configuration.getDbRead().getAllOnlineApplications();
if (dbOAs == null || dbOAs.size() == 0) {
addActionError(LanguageHelper.getErrorString("errors.listOAs.noOA", request));
@@ -104,7 +102,6 @@ public class InterfederationIDPAction extends BasicOAAction {
return Constants.STRUTS_ERROR;
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -147,7 +144,6 @@ public class InterfederationIDPAction extends BasicOAAction {
return Constants.STRUTS_ERROR;
} finally {
- ConfigurationDBUtils.closeSession();
}
@@ -204,7 +200,6 @@ public class InterfederationIDPAction extends BasicOAAction {
return e.getStrutsReturnValue();
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -281,7 +276,7 @@ public class InterfederationIDPAction extends BasicOAAction {
onlineapplication.setTarget("MOA-IDP");
try {
- ConfigurationDBUtils.saveOrUpdate(onlineapplication);
+ save(onlineapplication);
} catch (MOADatabaseException e) {
log.warn("Online-Application can not be stored.", e);
@@ -292,7 +287,6 @@ public class InterfederationIDPAction extends BasicOAAction {
//remove session attributes
session.setAttribute(Constants.SESSION_OAID, null);
- ConfigurationDBUtils.closeSession();
addActionMessage(LanguageHelper.getGUIString("webpages.idp.success", getGeneralOA().getIdentifier(), request));
return Constants.STRUTS_SUCCESS;
@@ -306,7 +300,6 @@ public class InterfederationIDPAction extends BasicOAAction {
return e.getStrutsReturnValue();
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -323,7 +316,6 @@ public class InterfederationIDPAction extends BasicOAAction {
session.setAttribute(Constants.SESSION_OAID, null);
addActionMessage(LanguageHelper.getGUIString("webpages.idp.cancle", getGeneralOA().getIdentifier(), request));
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_SUCCESS;
@@ -331,7 +323,6 @@ public class InterfederationIDPAction extends BasicOAAction {
return Constants.STRUTS_ERROR;
} finally {
- ConfigurationDBUtils.closeSession();
}
}
@@ -350,21 +341,21 @@ public class InterfederationIDPAction extends BasicOAAction {
oaidentifier = preProcessDeleteOnlineApplication();
session.setAttribute(Constants.SESSION_OAID, null);
- OnlineApplication onlineapplication = ConfigurationDBRead.getOnlineApplication(oaidentifier);
+ OnlineApplication onlineapplication = configuration.getDbRead().getOnlineApplication(oaidentifier);
- try {
- if (onlineapplication.getAuthComponentOA().getOAPVP2() != null &&
- MiscUtil.isNotEmpty(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())) {
- MOAIDConfiguration moaconfig = ConfigurationDBRead.getMOAIDConfiguration();
- moaconfig.setPvp2RefreshItem(new Date());
- ConfigurationDBUtils.saveOrUpdate(moaconfig);
+// try {
+// if (onlineapplication.getAuthComponentOA().getOAPVP2() != null &&
+// MiscUtil.isNotEmpty(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())) {
+// MOAIDConfiguration moaconfig = configuration.getDbRead().getMOAIDConfiguration();
+// moaconfig.setPvp2RefreshItem(new Date());
+// ConfigurationDBUtils.saveOrUpdate(moaconfig);
+//
+// }
+// } catch (Throwable e) {
+// log.info("Found no MetadataURL in OA-Databaseconfig!", e);
+// }
- }
- } catch (Throwable e) {
- log.info("Found no MetadataURL in OA-Databaseconfig!", e);
- }
-
- if (ConfigurationDBUtils.delete(onlineapplication)) {
+ if (delete(onlineapplication)) {
addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.delete.message", oaidentifier, request));
return Constants.STRUTS_SUCCESS;
@@ -381,7 +372,6 @@ public class InterfederationIDPAction extends BasicOAAction {
return e.getStrutsReturnValue();
} finally {
- ConfigurationDBUtils.closeSession();
}
@@ -404,7 +394,6 @@ public class InterfederationIDPAction extends BasicOAAction {
setNewOA(false);
- ConfigurationDBUtils.closeSession();
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java
index 335dbc91e..c6b0965fe 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java
@@ -35,16 +35,14 @@ import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.data.OAListElement;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.FormDataHelper;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
import at.gv.egovernment.moa.util.MiscUtil;
@@ -75,13 +73,17 @@ public class ListOAsAction extends BasicAction {
List<OnlineApplication> dbOAs = null;
if (authUser.isAdmin()) {
- dbOAs = ConfigurationDBRead.getAllOnlineApplications();
+ dbOAs = configuration.getDbRead().getAllOnlineApplications();
} else {
- UserDatabase authUserDB = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase authUserDB = configuration.getUserManagement().getUserWithID(authUser.getUserID());
- if (authUserDB != null)
- dbOAs = authUserDB.getOnlineApplication();
+ if (authUserDB != null) {
+ for (String el : authUserDB.getOnlineApplication()) {
+ dbOAs.add(configuration.getDbRead().getOnlineApplication(Long.valueOf(el)));
+
+ }
+ }
}
if (dbOAs == null || dbOAs.size() == 0) {
@@ -94,7 +96,6 @@ public class ListOAsAction extends BasicAction {
session.setAttribute(Constants.SESSION_RETURNAREA,
Constants.STRUTS_RETURNAREA_VALUES.main.name());
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_SUCCESS;
}
@@ -142,19 +143,21 @@ public class ListOAsAction extends BasicAction {
List<OnlineApplication> dbOAs = null;
if (authUser.isAdmin()) {
- dbOAs = ConfigurationDBRead.searchOnlineApplications(friendlyname);
+ dbOAs = configuration.getDbRead().searchOnlineApplications(friendlyname);
} else {
- UserDatabase authUserDB = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase authUserDB = configuration.getUserManagement().getUserWithID(authUser.getUserID());
if (authUserDB != null) {
- List<OnlineApplication> alldbOAs = authUserDB.getOnlineApplication();
+ List<String> alldbOAs = authUserDB.getOnlineApplication();
dbOAs = new ArrayList<OnlineApplication>();
- for (OnlineApplication el : alldbOAs) {
- if (el.getPublicURLPrefix()
+ for (String el : alldbOAs) {
+ OnlineApplication oa = configuration.getDbRead().getOnlineApplication(Long.valueOf(el));
+
+ if (oa.getPublicURLPrefix()
.toLowerCase().indexOf(friendlyname.toLowerCase()) > -1)
- dbOAs.add(el);
+ dbOAs.add(oa);
}
}
}
@@ -168,7 +171,6 @@ public class ListOAsAction extends BasicAction {
}
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_SUCCESS;
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java
index 283b3604a..26d4e13ab 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java
@@ -32,8 +32,7 @@ import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
@@ -65,12 +64,12 @@ public class OpenAdminRequestsAction extends BasicAction {
if (authUser.isAdmin()) {
- List<OnlineApplication> dbOAs = ConfigurationDBRead.getAllNewOnlineApplications();
+ List<OnlineApplication> dbOAs = configuration.getDbRead().getAllNewOnlineApplications();
if (dbOAs != null) {
formOAs = FormDataHelper.populateFormWithOAs(dbOAs);
}
- List<UserDatabase> dbUsers = ConfigurationDBRead.getAllNewUsers();
+ List<UserDatabase> dbUsers = configuration.getUserManagement().getAllNewUsers();
if (dbUsers != null){
userlist = FormDataHelper.addFormUsers(dbUsers);
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/UserManagementAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/UserManagementAction.java
index 8e0f0b7f8..8be134442 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/UserManagementAction.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/UserManagementAction.java
@@ -34,16 +34,14 @@ import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;
import at.gv.egovernment.moa.id.configuration.data.UserDatabaseFrom;
import at.gv.egovernment.moa.id.configuration.exception.BasicActionException;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.AuthenticationHelper;
import at.gv.egovernment.moa.id.configuration.helper.FormDataHelper;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
@@ -89,7 +87,7 @@ public class UserManagementAction extends BasicAction {
log.info("Show UserList");
- List<UserDatabase> dbuserlist = ConfigurationDBRead.getAllUsers();
+ List<UserDatabase> dbuserlist = configuration.getUserManagement().getAllUsers();
if (dbuserlist != null) {
userlist = FormDataHelper.addFormUsers(dbuserlist);
@@ -98,17 +96,15 @@ public class UserManagementAction extends BasicAction {
session.setAttribute(Constants.SESSION_RETURNAREA,
Constants.STRUTS_RETURNAREA_VALUES.usermanagementInit.name());
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_SUCCESS;
} else {
log.info("User with ID " + authUser.getUserID() + " is not admin. Show only EditUser Frame");
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithID(authUser.getUserID());
if (dbuser == null) {
return Constants.STRUTS_REAUTHENTICATE;
}
user = new UserDatabaseFrom(dbuser);
- ConfigurationDBUtils.closeSession();
session.setAttribute(Constants.SESSION_RETURNAREA,
Constants.STRUTS_RETURNAREA_VALUES.main.name());
@@ -176,7 +172,7 @@ public class UserManagementAction extends BasicAction {
}
userid = Long.valueOf(useridobj);
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(userid);
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithID(userid);
if (dbuser == null) {
log.info("No User with ID " + userid + " in Database");;
addActionError(LanguageHelper.getErrorString("errors.edit.user.userid", request));
@@ -185,14 +181,12 @@ public class UserManagementAction extends BasicAction {
user = new UserDatabaseFrom(dbuser);
newUser = false;
-
- ConfigurationDBUtils.closeSession();
-
+
return Constants.STRUTS_SUCCESS;
} else {
log.info("User with ID " + authUser.getUserID() + " is not admin. Show his own EditUser Frame");
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithID(authUser.getUserID());
user = new UserDatabaseFrom(dbuser);
return Constants.STRUTS_SUCCESS;
}
@@ -237,7 +231,7 @@ public class UserManagementAction extends BasicAction {
userID = Long.valueOf(useridobj);
}
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(userID);
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithID(userID);
if( dbuser == null) {
dbuser = new UserDatabase();
@@ -340,7 +334,6 @@ public class UserManagementAction extends BasicAction {
return Constants.STRUTS_SUCCESS;
}
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_SUCCESS;
}
@@ -402,20 +395,19 @@ public class UserManagementAction extends BasicAction {
nextPage = Constants.STRUTS_RETURNAREA_VALUES.usermanagementInit.name();
}
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(userID);
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithID(userID);
if (dbuser != null) {
- dbuser.setOnlineApplication(null);
+ dbuser.setOaIDs(null);
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
- ConfigurationDBUtils.delete(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
+ configuration.getUserManagement().delete(dbuser);
if (authUser.isAdmin()) {
MailHelper.sendUserAccountRevocationMail(dbuser);
}
- if (dbuser.getHjid() == authUser.getUserID()) {
- ConfigurationDBUtils.closeSession();
+ if (dbuser.getHjid().equals(String.valueOf(authUser.getUserID()))) {
return Constants.STRUTS_REAUTHENTICATE;
}
@@ -431,11 +423,9 @@ public class UserManagementAction extends BasicAction {
}
finally {
- ConfigurationDBUtils.closeSession();
}
}
- ConfigurationDBUtils.closeSession();
return Constants.STRUTS_SUCCESS;
}
@@ -452,14 +442,14 @@ public class UserManagementAction extends BasicAction {
String message = LanguageHelper.getErrorString("error.mail.send", request);
if (authUser != null) {
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ UserDatabase dbuser = configuration.getUserManagement().getUserWithID(authUser.getUserID());
if (dbuser != null) {
dbuser.setIsMailAddressVerified(false);
dbuser.setUserRequestTokken(Random.nextRandom());
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
MailHelper.sendUserMailAddressVerification(dbuser);
@@ -532,7 +522,7 @@ public class UserManagementAction extends BasicAction {
}
try {
- ConfigurationDBUtils.saveOrUpdate(dbuser);
+ configuration.getUserManagement().saveOrUpdate(dbuser);
} catch (MOADatabaseException e) {
log.warn("User information can not be stored in Database.", e);
return LanguageHelper.getErrorString("errors.edit.user.save", request);
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java
index 084d054f7..27f7a4ad0 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java
@@ -1,59 +1,57 @@
-/*
- * 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.configuration.struts.interceptor;
-
-import org.apache.log4j.Logger;
-
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-
-/**
- * @author tlenz
- *
- */
-public class HibernateSessionInterceptor extends AbstractInterceptor {
-
- private static final long serialVersionUID = 2457987431702749278L;
- private static Logger log = Logger.getLogger(HibernateSessionInterceptor.class);
-
- /* (non-Javadoc)
- * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
- */
- @Override
- public String intercept(ActionInvocation arg0) throws Exception {
- log.trace("Hibernate session interceptor starts .... ");
-
- try {
- return arg0.invoke();
-
- } finally {
- log.debug("Hibernate-Session interceptor close active sessions.");
- ConfigurationDBUtils.closeSession();
-
- }
-
- }
-
-}
+///*
+// * 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.configuration.struts.interceptor;
+//
+//import org.apache.log4j.Logger;
+//
+//import com.opensymphony.xwork2.ActionInvocation;
+//import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
+//
+///**
+// * @author tlenz
+// *
+// */
+//public class HibernateSessionInterceptor extends AbstractInterceptor {
+//
+// private static final long serialVersionUID = 2457987431702749278L;
+// private static Logger log = Logger.getLogger(HibernateSessionInterceptor.class);
+//
+// /* (non-Javadoc)
+// * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
+// */
+// @Override
+// public String intercept(ActionInvocation arg0) throws Exception {
+// log.trace("Hibernate session interceptor starts .... ");
+//
+// try {
+// return arg0.invoke();
+//
+// } finally {
+// log.debug("Hibernate-Session interceptor close active sessions.");
+// ConfigurationDBUtils.closeSession();
+//
+// }
+//
+// }
+//
+//}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/utils/UserRequestCleaner.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/utils/UserRequestCleaner.java
index 27e29e292..5f55a61d5 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/utils/UserRequestCleaner.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/utils/UserRequestCleaner.java
@@ -28,12 +28,10 @@ import java.util.List;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.auth.AuthenticationManager;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.DateTimeHelper;
@@ -49,7 +47,7 @@ public class UserRequestCleaner implements Runnable {
ConfigurationProvider config = ConfigurationProvider.getInstance();
//clean up user request storage
- List<UserDatabase> userrequests = ConfigurationDBRead.getAllOpenUsersRequests();
+ List<UserDatabase> userrequests = config.getUserManagement().getAllOpenUsersRequests();
if (userrequests != null) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, config.getUserRequestCleanUpDelay()*-1);
@@ -60,7 +58,7 @@ public class UserRequestCleaner implements Runnable {
if (requestdate != null && requestdate.after(cleanupdate)) {
log.info("Remove UserRequest from Database");
- ConfigurationDBUtils.delete(dbuser);
+ config.getUserManagement().delete(dbuser);
}
}
@@ -68,7 +66,6 @@ public class UserRequestCleaner implements Runnable {
//clean up active user storage
AuthenticationManager.getInstance().removeAllUsersAfterTimeOut();
- ConfigurationDBUtils.closeSession();
Thread.sleep(SESSION_CLEANUP_INTERVAL * 1000);
@@ -77,10 +74,7 @@ public class UserRequestCleaner implements Runnable {
} catch (InterruptedException e) {
- } finally {
- ConfigurationDBUtils.closeSession();
-
- }
+ }
}
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/UserDatabaseFormValidator.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/UserDatabaseFormValidator.java
index 662694ce7..7b49275b3 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/UserDatabaseFormValidator.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/UserDatabaseFormValidator.java
@@ -29,9 +29,12 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
+import at.gv.egovernment.moa.id.commons.db.NewConfigurationDBRead;
import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
+import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
+import at.gv.egovernment.moa.id.configuration.config.usermanagement.FileBasedUserConfiguration;
import at.gv.egovernment.moa.id.configuration.data.UserDatabaseFrom;
import at.gv.egovernment.moa.id.configuration.helper.AuthenticationHelper;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
@@ -46,6 +49,16 @@ public class UserDatabaseFormValidator {
List<String> errors = new ArrayList<String>();
String check = null;
+ FileBasedUserConfiguration newConfigRead = null;
+ try {
+ newConfigRead = ConfigurationProvider.getInstance().getUserManagement();
+
+ } catch (ConfigurationException e) {
+ log.error("MOA-ID-Configuration initialization FAILED.", e);
+ errors.add("Internal Server Error");
+ return errors;
+
+ }
if (!isPVP2Generated) {
check = form.getGivenName();
@@ -121,8 +134,8 @@ public class UserDatabaseFormValidator {
new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}, request ));
} else {
- UserDatabase dbuser = ConfigurationDBRead.getUserWithUserName(check);
- if (dbuser != null && userID != dbuser.getHjid()) {
+ UserDatabase dbuser = newConfigRead.getUserWithUserName(check);
+ if (dbuser != null && !dbuser.getHjid().equals(String.valueOf(userID ))) {
log.warn("Username " + check + " exists in UserDatabase");
errors.add(LanguageHelper.getErrorString("validation.edituser.username.duplicate", request));
form.setUsername("");
@@ -133,7 +146,7 @@ public class UserDatabaseFormValidator {
log.warn("Username is empty");
errors.add(LanguageHelper.getErrorString("validation.edituser.username.empty", request));
} else {
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(userID);
+ UserDatabase dbuser = newConfigRead.getUserWithID(userID);
if (dbuser == null) {
log.warn("Username is empty");
errors.add(LanguageHelper.getErrorString("validation.edituser.username.empty", request));
@@ -150,7 +163,7 @@ public class UserDatabaseFormValidator {
log.warn("Password is empty");
errors.add(LanguageHelper.getErrorString("validation.edituser.password.empty", request));
} else {
- UserDatabase dbuser = ConfigurationDBRead.getUserWithID(userID);
+ UserDatabase dbuser = newConfigRead.getUserWithID(userID);
if (dbuser == null || MiscUtil.isEmpty(dbuser.getPassword())) {
log.warn("Password is empty");
errors.add(LanguageHelper.getErrorString("validation.edituser.password.empty", request));
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java
index c64ae35d3..95502cedb 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java
@@ -136,17 +136,17 @@ public class MOAConfigValidator {
}
}
- check = form.getDefaultchainigmode();
- if (MiscUtil.isEmpty(check)) {
- log.info("Empty Defaultchainigmode");
- errors.add(LanguageHelper.getErrorString("validation.general.Defaultchainigmode.empty", request));
- } else {
- Map<String, String> list = form.getChainigmodelist();
- if (!list.containsKey(check)) {
- log.info("Not valid Defaultchainigmode " + check);
- errors.add(LanguageHelper.getErrorString("validation.general.Defaultchainigmode.valid", request));
- }
- }
+// check = form.getDefaultchainigmode();
+// if (MiscUtil.isEmpty(check)) {
+// log.info("Empty Defaultchainigmode");
+// errors.add(LanguageHelper.getErrorString("validation.general.Defaultchainigmode.empty", request));
+// } else {
+// Map<String, String> list = form.getChainigmodelist();
+// if (!list.containsKey(check)) {
+// log.info("Not valid Defaultchainigmode " + check);
+// errors.add(LanguageHelper.getErrorString("validation.general.Defaultchainigmode.valid", request));
+// }
+// }
check = form.getMandateURL();
if (MiscUtil.isNotEmpty(check)) {
@@ -207,6 +207,31 @@ public class MOAConfigValidator {
}
}
+ check = form.getMoaspssAuthTrustProfileTest();
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MOA-SP/SS Test-Authblock TrustProfile");
+ errors.add(LanguageHelper.getErrorString("validation.general.moasp.auth.trustprofile.test.empty", request));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("Test-Authblock TrustProfile is not valid: " +check);
+ errors.add(LanguageHelper.getErrorString("validation.general.moasp.auth.trustprofile.test.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}, request ));
+ }
+ }
+
+ check = form.getMoaspssIdlTrustProfileTest();
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MOA-SP/SS Test-IdentityLink TrustProfile");
+ errors.add(LanguageHelper.getErrorString("validation.general.moasp.idl.trustprofile.test.empty", request));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("Test-IdentityLink TrustProfile is not valid: " +check);
+ errors.add(LanguageHelper.getErrorString("validation.general.moasp.idl.trustprofile.test.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}, request ));
+ }
+ }
+
+
check = form.getMoaspssURL();
if (MiscUtil.isNotEmpty(check)) {
if (!ValidationHelper.validateURL(check)) {
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/StorkConfigValidator.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/StorkConfigValidator.java
index f7d61653d..a042a7931 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/StorkConfigValidator.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/StorkConfigValidator.java
@@ -7,8 +7,8 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.CPEPS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.data.GeneralStorkConfig;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
@@ -26,8 +26,10 @@ public class StorkConfigValidator {
// check peps list
- if (form.getCpepslist() != null) {
- for(CPEPS current : form.getCpepslist()) {
+// if (form.getCpepslist() != null) {
+// for(CPEPS current : form.getCpepslist()) {
+ if (form.getRawCPEPSList() != null) {
+ for(CPEPS current : form.getRawCPEPSList()) {
// if an existing record got deleted
if(null == current)
continue;
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java
index de32d31c7..d2dac3b28 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java
@@ -74,7 +74,7 @@ public class OAFileUploadValidation {
try {
File file = files.get(i);
InputStream stream = new FileInputStream(file);
- output.put(filename, IOUtils.toByteArray(stream));
+ output.put(filename, Base64Utils.encode(stream).getBytes("UTF-8"));
stream.close();
} catch (IOException e) {
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java
index 37a170267..18452ed2d 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAPVP2ConfigValidation.java
@@ -28,6 +28,7 @@ import java.io.IOException;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Timer;
import javax.net.ssl.SSLHandshakeException;
@@ -35,34 +36,26 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.httpclient.MOAHttpClient;
import org.apache.log4j.Logger;
-import org.opensaml.Configuration;
-import org.opensaml.common.xml.SAMLSchemaBuilder;
import org.opensaml.saml2.metadata.provider.HTTPMetadataProvider;
import org.opensaml.saml2.metadata.provider.MetadataFilter;
import org.opensaml.saml2.metadata.provider.MetadataFilterChain;
import org.opensaml.saml2.metadata.provider.MetadataProviderException;
-import org.opensaml.xml.io.Marshaller;
-import org.opensaml.xml.io.MarshallerFactory;
-import org.opensaml.xml.io.Unmarshaller;
-import org.opensaml.xml.io.UnmarshallerFactory;
import org.opensaml.xml.parse.BasicParserPool;
import org.opensaml.xml.security.x509.BasicX509Credential;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.auth.pvp2.MetaDataVerificationFilter;
import at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.configuration.data.oa.OAPVP2Config;
-import at.gv.egovernment.moa.id.configuration.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.filter.SchemaValidationException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.filter.SignatureValidationException;
import at.gv.egovernment.moa.id.protocols.pvp2x.verification.metadata.SchemaValidationFilter;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.MiscUtil;
public class OAPVP2ConfigValidation {
@@ -80,13 +73,20 @@ public class OAPVP2ConfigValidation {
byte[] certSerialized = null;
if (form.getFileUpload() != null)
certSerialized = form.getCertificate();
+
else {
- OnlineApplication oa = ConfigurationDBRead.getOnlineApplication(oaID);
- if (oa != null &&
- oa.getAuthComponentOA() != null &&
- oa.getAuthComponentOA().getOAPVP2() != null) {
- certSerialized = oa.getAuthComponentOA().getOAPVP2().getCertificate();
- }
+ try {
+ Map<String, String> oa = ConfigurationProvider.getInstance().getDbRead().getOnlineApplicationKeyValueWithId(oaID);
+ if (oa != null &&
+ MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE))) {
+ certSerialized = Base64Utils.decode(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE), false);
+ form.setStoredCert(certSerialized);
+ }
+
+ } catch (ConfigurationException e) {
+ log.error("MOA-ID-Configuration initialization FAILED.", e);
+
+ }
}
String check = form.getMetaDataURL();
@@ -118,7 +118,7 @@ public class OAPVP2ConfigValidation {
ConfigurationProvider.getInstance().getCertStoreDirectory(),
ConfigurationProvider.getInstance().getTrustStoreDirectory(),
null,
- ChainingModeType.PKIX,
+ "pkix",
true);
httpClient.setCustomSSLTrustStore(
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OASTORKConfigValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OASTORKConfigValidation.java
index 60209542b..5c451c06a 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OASTORKConfigValidation.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OASTORKConfigValidation.java
@@ -30,7 +30,7 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AttributeProviderPlugin;
import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
import at.gv.egovernment.moa.id.configuration.data.oa.OASTORKConfig;
import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
diff --git a/id/ConfigWebTool/src/main/resources/applicationResources_de.properties b/id/ConfigWebTool/src/main/resources/applicationResources_de.properties
index c888a2d77..5248690d6 100644
--- a/id/ConfigWebTool/src/main/resources/applicationResources_de.properties
+++ b/id/ConfigWebTool/src/main/resources/applicationResources_de.properties
@@ -1,4 +1,4 @@
-title=MOA-ID 2.x Configuration Tool
+title=MOA-ID 3.x Configuration Tool
config.01=Configfile is not found. ({0})
@@ -19,7 +19,7 @@ error.db.oa.store=Die Konfiguration konnte nicht in der Datenbank gespeichert we
errors.notallowed=Sie besitzen nicht die n\u00F6tigen Rechte um diese Funktion zu benutzen.
errors.importexport.nofile=Es wurde keine Datei angegeben.
errors.importexport.legacyimport=Der Importvorgang der Legacy-Konfiguration wurde mit einem Fehler abgebrochen (Fehler={0}).
-errors.importexport.export=Die MOA-ID 2.x Konfiguration konnte nicht in ein XML File exportiert werden. (Fehler={0})
+errors.importexport.export=Die MOA-ID 3.x Konfiguration konnte nicht in eine Datei exportiert werden. (Fehler={0})
errors.importexport.import=Der Importvorgang der XML Konfiguration wurde mit einem Fehler abgebrochen (Fehler={0}).
errors.importexport.export.noconfig=Die Konfiguration kann nicht exportiert werden da keine MOA-ID Konfiguration vorhanden ist.
errors.edit.user.userid=Es wurde keine g\u00FCtige User ID \u00FCbergeben.
@@ -35,14 +35,16 @@ error.oa.oauth.clientSecret=Client-Secret darf nicht leer sein
error.oa.oauth.keyname=Key-Name darf nicht leer sein
error.oa.oauth.keystore=Keystore darf nicht leer sein und muss eine richtige URL sein.
+error.oa.reversion.log.enabled=Es muss zumindest ein EventCode konfiguriert werden.
+error.oa.reversion.log.eventcodes=Eventcodes d\u00FCrfen nur Zahlen enthalten.
-mail.userrequest.subject=Accountanforderung MOA-ID 2.x Konfigurationstool
+mail.userrequest.subject=Accountanforderung MOA-ID 3.x Konfigurationstool
webpages.slo.error=Der Abmeldevorgang bei allen Online-Applikationen war nicht erfolgreich. Bitte schlie \t\u00DFen Sie aus Sicherheitsgr\u00FCnden ihren Browser.
webpages.slo.success=Sie wurden erfolgreich bei allen Online-Applikationen abgemeldet.
webpages.error.header=Es ist ein Fehler aufgetreten
-webpages.index.header=Willkommen bei der MOA-ID 2.x Konfigurationsapplikation
+webpages.index.header=Willkommen bei der MOA-ID 3.x Konfigurationsapplikation
webpages.index.desciption.head=Um dieses Service nutzen zu k\u00F6nnen m\u00FCssen sie sich einloggen.
webpages.index.login=Anmelden
webpages.index.logout=Abmelden
@@ -54,11 +56,11 @@ webpages.index.password.false=Das Passwort stimmt nicht.
webpages.inportexport.header=Konfiguration Importieren/Exportieren
webpages.inportexport.success=Die Konfiguration konnte erfolgreich importiert werden.
-webpages.inportexport.legacyimport.header=Legacy Konfiguration importieren (MOA-ID < 2.0)
-webpages.inportexport.legacyimport.upload=Legacy Konfiguration
+webpages.inportexport.legacyimport.header=MOA-ID 2.x.x Konfiguration importieren
+webpages.inportexport.legacyimport.upload=2.x.x Konfiguration
webpages.edit.import=Importieren
webpages.edit.export=Exportieren
-webpages.inportexport.import.header=MOA-ID 2.x Konfiguration
+webpages.inportexport.import.header=MOA-ID 3.x Konfiguration
webpages.inportexport.import.upload=Konfiguration importieren
webpages.inportexport.import.download=Konfiguration exportieren
webpages.inportexport.descripten=ACHTUNG\: Die importierte Konfiguration ersetzt eine aktuell vorhandene Konfiguration vollst\u00E4ndig\!
@@ -136,8 +138,10 @@ webpages.moaconfig.timeout.assertion=Anmeldedaten [sec]
webpages.moaconfig.timeout.MOASessionCreated=SSO Session authentifiziert [sec]
webpages.moaconfig.timeout.MOASessionUpdated=SSO Session letzter Zugriff [sec]
webpages.moaconfig.moasp.header=MOA-SP Konfiguration
-webpages.moaconfig.moasp.idltrustprofile=Personenbindung Trustprofil
+webpages.moaconfig.moasp.idltrustprofile=Personenbindung Trustprofil
+webpages.moaconfig.moasp.idltrustprofile.test=Test-Personenbindung Trustprofil
webpages.moaconfig.moasp.authtrustprofile=Authentfizierungsblock Trustprofil
+webpages.moaconfig.moasp.authtrustprofile.test=Test-Authentfizierungsblock Trustprofil
webpages.moaconfig.moasp.authblocktransform=Authentfizierungsblock Transformationen
webpages.moaconfig.moasp.url=URL zum MOA-SP Service
webpages.moaconfig.identitylinksigners=IdentityLinkSigners
@@ -183,6 +187,10 @@ webpages.searchoa.header=Online-Applikation suchen
webpages.searchoa.search.friendlyname=Name der Online-Applikation
webpages.searchoa.butten.search=Suchen
+webpages.oaconfig.revisionsLog.header=Revisions Logging
+webpages.oaconfig.revisionsLog.active=Aktiv
+webpages.oaconfig.revisionsLog.eventCodes=EventCodes (CSV)
+
webpages.oaconfig.header=Konfiguration der Onlineapplikation
webpages.oaconfig.general.isActive=Online-Applikation ist aktiviert
webpages.oaconfig.general.bku.header=BKU Konfiguration
@@ -275,6 +283,9 @@ webpages.oaconfig.general.BKUSelection.header.applet.width=Appletbreite
webpages.oaconfig.general.testing.header=Test Identit\u00E4ten
webpages.oaconfig.general.testing.usetesting=Test Identit\u00E4ten erlauben
webpages.oaconfig.general.testing.oids=OIDs f\u00FCr Test Identit\u00E4ten einschr\u00E4nken.
+webpages.oaconfig.general.testing.idltruststore=Test-Persondenbindungs TrustStore verwenden
+webpages.oaconfig.general.testing.authblocktruststore=Test-AuthBlockValidation TrustStore verwenden
+
webpages.oaconfig.sso.header=Single Sign-On
webpages.oaconfig.sso.singlelogouturl=Single Log-Out URL
@@ -372,7 +383,7 @@ validation.edituser.bpk.valid=Die BPK enth\u00E4lt nicht erlaubte Zeichen. Folge
validation.general.SAML1SourceID=Die SAML1SourceID enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
validation.general.publicURLprefix.empty=Public URL Prefix Feld ist leer.
-validation.general.publicURLprefix.valid=Public URL Prefix hat kein g\u00F6ltiges Format.
+validation.general.publicURLprefix.valid=Public URL Prefix {0} hat kein g\u00F6ltiges Format.
validation.general.certStoreDirectory.empty=CertStoreDirectory Feld ist leer.
validation.general.certStoreDirectory.valid=Das CertStoreDirectory Feld enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
validation.general.Defaultchainigmode.empty=Es wurde kein DefaultChainingMode gew\u00E4hlt.
@@ -386,6 +397,12 @@ validation.general.moasp.auth.trustprofile.empty=Das TrustProfile zur Pr\u00F6fu
validation.general.moasp.auth.trustprofile.valid=Das TrustProfile zur Pr\u00F6fung des Authentfizierungsblock enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
validation.general.moasp.idl.trustprofile.empty=Das TrustProfile zur Pr\u00F6fung der Personenbindung ist leer.
validation.general.moasp.idl.trustprofile.valid=Das TrustProfile zur Pr\u00F6fung der Personenbindung enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+
+validation.general.moasp.auth.trustprofile.test.empty=Das Test-TrustProfile zur Pr\u00F6fung des Authentfizierungsblock ist leer.
+validation.general.moasp.auth.trustprofile.test.valid=Das Test-TrustProfile zur Pr\u00F6fung des Authentfizierungsblock enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.moasp.idl.trustprofile.test.empty=Das Test-TrustProfile zur Pr\u00F6fung der Personenbindung ist leer.
+validation.general.moasp.idl.trustprofile.test.valid=Das Test-TrustProfile zur Pr\u00F6fung der Personenbindung enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+
validation.general.moaspss.url.valid=Die URL zum MOA-SP/SS Service hat kein g\u00F6ltiges Format.
validation.general.protocol.pvp2.issuername.valid=PVP2\: Service Name enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
validation.general.protocol.pvp2.org.displayname.valid=PVP2 Organisation\: Vollst\u00E4ndiger Name enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
diff --git a/id/ConfigWebTool/src/main/resources/applicationResources_en.properties b/id/ConfigWebTool/src/main/resources/applicationResources_en.properties
index 43dcfeac8..22453ed2b 100644
--- a/id/ConfigWebTool/src/main/resources/applicationResources_en.properties
+++ b/id/ConfigWebTool/src/main/resources/applicationResources_en.properties
@@ -1,4 +1,4 @@
-title=MOA-ID 2.x Configuration Tool
+title=MOA-ID 3.x Configuration Tool
config.01=Configfile is not found. ({0})
@@ -19,7 +19,7 @@ error.db.oa.store=The configuration could not be saved in the database.
errors.notallowed=You do not posses necessary righs in order to use this function.
errors.importexport.nofile=There is no file provided.
errors.importexport.legacyimport=The Import of the legacy configuration was interrupted due to the error. (Error={0}).
-errors.importexport.export=The MOA-ID 2.x configuration could not be exported to XML file. (Error={0})
+errors.importexport.export=The MOA-ID 3.x configuration could not be exported to file. (Error={0})
errors.importexport.import=The import of XML configuration was interrupted due to the error. (Error={0}).
errors.importexport.export.noconfig=The configuration could not be exported as there is no MOA-ID configuration available.
errors.edit.user.userid=There is no valid user ID provided.
@@ -35,14 +35,17 @@ error.oa.oauth.clientSecret=Client-Secret cannot be blank
error.oa.oauth.keyname=Key-Name cannot be blank
error.oa.oauth.keystore=Keystore cannot be blank and has to be provided in the form of valid URL.
-mail.userrequest.subject=Requesting accounts - MOA-ID 2.x Config Tool
+error.oa.reversion.log.enabled=One EventCode is required at minimum.
+error.oa.reversion.log.eventcodes=Only numbers are allowed as EventCodes
+
+mail.userrequest.subject=Requesting accounts - MOA-ID 3.x Config Tool
webpages.slo.error=LogOut process finished with an error. For security reasons, please close your browser.
webpages.slo.success=LogOut process finished successful
webpages.error.header=The error occured
-webpages.index.header=Welcome to MOA-ID 2.x Configuration
+webpages.index.header=Welcome to MOA-ID 3.x Configuration
webpages.index.desciption.head=In order to use this service you should log in
webpages.index.login=Login
webpages.index.logout=Logout
@@ -54,11 +57,11 @@ webpages.index.password.false=The password is not valid.
webpages.inportexport.header=Import/export configuration
webpages.inportexport.success=The configuration was imported successfully
-webpages.inportexport.legacyimport.header=Import legacy configuration (MOA-ID < 2.0)
-webpages.inportexport.legacyimport.upload=Legacy configuration
+webpages.inportexport.legacyimport.header=Import MOA-ID 2.x.x configuration
+webpages.inportexport.legacyimport.upload=2.x.x configuration
webpages.edit.import=Import
webpages.edit.export=Export
-webpages.inportexport.import.header=MOA-ID 2.x configuration
+webpages.inportexport.import.header=MOA-ID 3.x configuration
webpages.inportexport.import.upload=Import configuration
webpages.inportexport.import.download=Export configuration
webpages.inportexport.descripten=WARNING\: The imported configuration will completely replace currently active configuration\!
@@ -136,6 +139,8 @@ webpages.moaconfig.timeout.MOASessionUpdated=SSO Session last access[sec]
webpages.moaconfig.moasp.header=MOA-SP configuration
webpages.moaconfig.moasp.idltrustprofile=Trustprofile for IdentityLink
webpages.moaconfig.moasp.authtrustprofile=Trustprofile for authentication block
+webpages.moaconfig.moasp.idltrustprofile.test=Test Trustprofile for IdentityLink
+webpages.moaconfig.moasp.authtrustprofile.test=Test Trustprofile for authentication block
webpages.moaconfig.moasp.authblocktransform=Transformations for authentication block
webpages.moaconfig.moasp.url=URL for MOA-SP Service
webpages.moaconfig.identitylinksigners=IdentityLinkSigners
@@ -197,6 +202,12 @@ webpages.oaconfig.general.bku.sltemplate.third=SecurityLayer Template (WhiteList
webpages.oaconfig.general.testing.header=Test Credentials
webpages.oaconfig.general.testing.usetesting=Allow test credentials
webpages.oaconfig.general.testing.oids=Use special test credential OIDs
+webpages.oaconfig.general.testing.idltruststore=Use Test-IdentityLink TrustStore
+webpages.oaconfig.general.testing.authblocktruststore=Use Test-AuthBlockValidation TrustStore
+
+webpages.oaconfig.revisionsLog.header=Revisions Logging
+webpages.oaconfig.revisionsLog.active=Activ
+webpages.oaconfig.revisionsLog.eventCodes=EventCodes (CSV)
webpages.oaconfig.general.bku.delete=Remove
webpages.oaconfig.general.bku.bkuselection.header=CCE-Selection Template
@@ -384,6 +395,12 @@ validation.general.moasp.auth.trustprofile.empty=TrustProfile for checking of au
validation.general.moasp.auth.trustprofile.valid=TrustProfile for checking of authentication block contains forbidden characters. The following characters are not allowed\: {0}
validation.general.moasp.idl.trustprofile.empty=TrustProfile for checking of IdentityLink is blank.
validation.general.moasp.idl.trustprofile.valid=TrustProfile for checking of IdentityLink contain forbidden characters. The following characters are not allowed\: {0}
+
+validation.general.moasp.auth.trustprofile.test.empty=Test-TrustProfile for checking of authentication block is blank.
+validation.general.moasp.auth.trustprofile.test.valid=Test-TrustProfile for checking of authentication block contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.moasp.idl.trustprofile.test.empty=Test-TrustProfile for checking of IdentityLink is blank.
+validation.general.moasp.idl.trustprofile.test.valid=Test-TrustProfile for checking of IdentityLink contain forbidden characters. The following characters are not allowed\: {0}
+
validation.general.moaspss.url.valid=URL for MOA-SP/SS service has invalid format.
validation.general.protocol.pvp2.issuername.valid=PVP2\: service name contains forbidden characters. The following characters are not allowed\: {0}
validation.general.protocol.pvp2.org.displayname.valid=PVP2 organization\: complete name contains forbidden characters. The following characters are not allowed\: {0}
diff --git a/id/ConfigWebTool/src/main/resources/moaid.configurationtool.beans.xml b/id/ConfigWebTool/src/main/resources/moaid.configurationtool.beans.xml
new file mode 100644
index 000000000..a9859752e
--- /dev/null
+++ b/id/ConfigWebTool/src/main/resources/moaid.configurationtool.beans.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <bean id="NewConfigurationDBRead" class="at.gv.egovernment.moa.id.commons.db.NewConfigurationDBRead">
+
+ </bean>
+
+ <bean id="userManagement" class="at.gv.egovernment.moa.id.configuration.config.usermanagement.FileBasedUserConfiguration">
+
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/id/ConfigWebTool/src/main/resources/struts.xml b/id/ConfigWebTool/src/main/resources/struts.xml
index 39c38ae43..701cc99a3 100644
--- a/id/ConfigWebTool/src/main/resources/struts.xml
+++ b/id/ConfigWebTool/src/main/resources/struts.xml
@@ -16,10 +16,10 @@
<interceptors>
- <interceptor name="HibernateSessionInterceptor" class="at.gv.egovernment.moa.id.configuration.struts.interceptor.HibernateSessionInterceptor"/>
+ <!-- <interceptor name="HibernateSessionInterceptor" class="at.gv.egovernment.moa.id.configuration.struts.interceptor.HibernateSessionInterceptor"/> -->
<interceptor-stack name="OwnStack">
- <interceptor-ref name="HibernateSessionInterceptor" />
+ <!-- <interceptor-ref name="HibernateSessionInterceptor" /> -->
<interceptor-ref name="params">
<param
name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
@@ -88,10 +88,10 @@
<package name="secure" namespace="/secure" extends="struts-default">
<interceptors>
- <interceptor name="HibernateSessionInterceptor" class="at.gv.egovernment.moa.id.configuration.struts.interceptor.HibernateSessionInterceptor"/>
+ <!-- <interceptor name="HibernateSessionInterceptor" class="at.gv.egovernment.moa.id.configuration.struts.interceptor.HibernateSessionInterceptor"/> -->
<interceptor-stack name="OwnStack">
- <interceptor-ref name="HibernateSessionInterceptor" />
+ <!-- <interceptor-ref name="HibernateSessionInterceptor" /> -->
<interceptor-ref name="params">
<param
name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp
index 1aeda519f..e6f07f847 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp
@@ -116,14 +116,6 @@
cssClass="textfield_long">
</s:textfield>
- <s:radio list="moaconfig.chainigmodelist"
- name="moaconfig.defaultchainigmode"
- value="%{moaconfig.defaultchainigmode}"
- labelposition="left"
- key="webpages.moaconfig.certificates.chainingmode"
- cssClass="radio">
- </s:radio>
-
</div>
<div class="oa_config_block">
@@ -160,6 +152,13 @@
cssClass="textfield_long">
</s:textfield>
+ <s:textfield name="moaconfig.moaspssIdlTrustProfileTest"
+ value="%{moaconfig.moaspssIdlTrustProfileTest}"
+ labelposition="left"
+ key="webpages.moaconfig.moasp.idltrustprofile.test"
+ cssClass="textfield_long">
+ </s:textfield>
+
<%-- <s:textarea name="moaconfig.identityLinkSigners"
value="%{moaconfig.identityLinkSigners}"
labelposition="left"
@@ -174,6 +173,14 @@
cssClass="textfield_long">
</s:textfield>
+ <s:textfield name="moaconfig.moaspssAuthTrustProfileTest"
+ value="%{moaconfig.moaspssAuthTrustProfileTest}"
+ labelposition="left"
+ key="webpages.moaconfig.moasp.authtrustprofile.test"
+ cssClass="textfield_long">
+ </s:textfield>
+
+
<%-- <s:textarea name="moaconfig.moaspssAuthTransformations"
value="%{moaconfig.moaspssAuthTransformations}"
labelposition="left"
@@ -187,12 +194,12 @@
cssClass="textfield_long">
</s:textfield>
- <s:textfield name="moaconfig.moaspssURL"
+<%-- <s:textfield name="moaconfig.moaspssURL"
value="%{moaconfig.moaspssURL}"
labelposition="left"
key="webpages.moaconfig.moasp.url"
cssClass="textfield_long">
- </s:textfield>
+ </s:textfield> --%>
</div>
@@ -248,14 +255,16 @@
key="webpages.moaconfig.stork.qaa.default"
labelposition="left" />
<h4><%=LanguageHelper.getGUIString("webpages.moaconfig.stork.pepslist", request) %></h4>
- <table id="stork_pepslist">
- <tr><th>Country Shortcode</th><th>PEPS URL</th><th>Supports XMLSignatures</th>
+ <table id="stork_pepslist">
+ <tr><th>Country Shortcode</th><th>PEPS URL</th><th>Supports XMLSignatures</th></tr>
<s:iterator value="storkconfig.cpepslist" status="stat">
- <tr><td><s:hidden name="storkconfig.cpepslist[%{#stat.index}].hjid" property="%{hjid}"/>
- <s:property value="%{countryCode}" /></td>
- <td><s:textfield name="storkconfig.cpepslist[%{#stat.index}].URL" value="%{URL}" cssClass="textfield_long"/></td>
- <td><s:checkbox name="storkconfig.cpepslist[%{#stat.index}].supportsXMLSignature" value="%{supportsXMLSignature}" /></td>
- <td><input type="button" value="<%=LanguageHelper.getGUIString("webpages.moaconfig.stork.removepeps", request) %>" onclick='this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);'/></td></tr>
+ <tr>
+ <td style="display:none;"><s:textfield name="storkconfig.cpepslist[%{#stat.index}].hjid" value="%{hjid}" cssStyle="display:none;"/></td>
+ <td><s:property value="%{countryCode}" /></td>
+ <td><s:textfield name="storkconfig.cpepslist[%{#stat.index}].URL" value="%{URL}" cssClass="textfield_long"/></td>
+ <td><s:checkbox name="storkconfig.cpepslist[%{#stat.index}].supportsXMLSignature" value="%{supportsXMLSignature}" /></td>
+ <td><input type="button" value="<%=LanguageHelper.getGUIString("webpages.moaconfig.stork.removepeps", request) %>" onclick='this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);'/></td>
+ </tr>
</s:iterator>
<s:if test="%{storkconfig.cpepslist == null || storkconfig.cpepslist.isEmpty}">
<tr><td><s:textfield name="storkconfig.cpepslist[0].countryCode" value="CC" cssClass="textfield_short"/></td>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp
index c56ad4847..c98b400f7 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp
@@ -84,6 +84,8 @@
</div>
<s:include value="snippets/OA/formCustomization.jsp"></s:include>
+
+ <s:include value="snippets/OA/revisionslog.jsp"></s:include>
<s:hidden name="formID"
value="%{formID}"></s:hidden>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/searchOAs.jsp b/id/ConfigWebTool/src/main/webapp/jsp/searchOAs.jsp
index 38dee8c70..a2617a0e9 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/searchOAs.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/searchOAs.jsp
@@ -44,7 +44,9 @@
</s:form>
</div>
- <jsp:include page="snippets/oas_list.jsp"></jsp:include>
+ <s:include value="snippets/oas_list.jsp">
+ <s:param name="editAction">loadOA</s:param>
+ </s:include>
</div>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/authentication.jsp b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/authentication.jsp
index 3dda0c0a4..f0b5c816a 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/authentication.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/authentication.jsp
@@ -84,6 +84,21 @@
key="webpages.oaconfig.general.testing.oids"
cssClass="textfield_long">
</s:textfield>
+
+ <s:checkbox key="webpages.oaconfig.general.testing.idltruststore"
+ labelposition="left"
+ cssClass="checkbox"
+ value="%{authOA.useTestIDLValidationTrustStore}"
+ name="authOA.useTestIDLValidationTrustStore">
+ </s:checkbox>
+
+ <s:checkbox key="webpages.oaconfig.general.testing.authblocktruststore"
+ labelposition="left"
+ cssClass="checkbox"
+ value="%{authOA.useTestAuthblockValidationTrustStore}"
+ name="authOA.useTestAuthblockValidationTrustStore">
+ </s:checkbox>
+
</div>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvp2.jsp b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvp2.jsp
index 398e6d110..7e40fc60b 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvp2.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvp2.jsp
@@ -6,10 +6,10 @@
<div id="oa_pvp2_area" class="oa_protocol_area ${param.hideBlock}">
<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.protocols.pvp2.header", request) %></h4>
- <s:checkbox key="webpages.oaconfig.pvp2.reload"
+<%-- <s:checkbox key="webpages.oaconfig.pvp2.reload"
labelposition="left"
cssClass="checkbox"
- name="pvp2OA.reLoad"></s:checkbox>
+ name="pvp2OA.reLoad"></s:checkbox> --%>
<s:textfield name="pvp2OA.metaDataURL"
value="%{pvp2OA.metaDataURL}"
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/revisionslog.jsp b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/revisionslog.jsp
new file mode 100644
index 000000000..fd6e71642
--- /dev/null
+++ b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/revisionslog.jsp
@@ -0,0 +1,23 @@
+<%@page import="at.gv.egovernment.moa.id.configuration.helper.LanguageHelper"%>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+ <div class="oa_config_block">
+ <h3><%=LanguageHelper.getGUIString("webpages.oaconfig.revisionsLog.header", request) %></h3>
+
+ <s:checkbox key="webpages.oaconfig.revisionsLog.active"
+ labelposition="left"
+ cssClass="checkbox"
+ name="revisionsLogOA.active"></s:checkbox>
+
+ <s:textfield name="revisionsLogOA.eventCodes"
+ value="%{revisionsLogOA.eventCodes}"
+ labelposition="left"
+ key="webpages.oaconfig.revisionsLog.eventCodes"
+ cssClass="textfield_long">
+ </s:textfield>
+
+ </div>
+
+</html> \ No newline at end of file
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/stork.jsp b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/stork.jsp
index f1853dbeb..78fdf8921 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/stork.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/stork.jsp
@@ -27,9 +27,12 @@
<th><%=LanguageHelper.getGUIString("webpages.oaconfig.stork.attributes.name", request) %></th>
<th><%=LanguageHelper.getGUIString("webpages.oaconfig.stork.attributes.mandatory", request) %></th></tr>
<s:iterator value="storkOA.helperAttributes" status="stat">
- <tr><td><s:checkbox name="storkOA.helperAttributes[%{#stat.index}].used" value="%{used}" disabled="%{readOnly}" /></td>
- <td><s:property value="%{name}" /><s:hidden name="storkOA.helperAttributes[%{#stat.index}].name" value="%{name}" /></td>
- <td><s:checkbox name="storkOA.helperAttributes[%{#stat.index}].mandatory" value="%{mandatory}" /></td></tr>
+ <tr>
+ <td><s:checkbox name="storkOA.helperAttributes[%{#stat.index}].used" value="%{used}" disabled="%{readOnly}" /></td>
+ <td><s:property value="%{name}" /></td>
+ <td><s:checkbox name="storkOA.helperAttributes[%{#stat.index}].mandatory" value="%{mandatory}" /></td>
+ <td style="display:none;"><s:textfield name="storkOA.helperAttributes[%{#stat.index}].name" value="%{name}" /></td>
+ </tr>
</s:iterator>
</table>
</div>
diff --git a/id/assembly-auth.xml b/id/assembly-auth.xml
index 3e50bb300..5e0ca564a 100644
--- a/id/assembly-auth.xml
+++ b/id/assembly-auth.xml
@@ -128,6 +128,24 @@
<moduleSet>
<includes>
+ <include>MOA.id.server:moa-id-commons</include>
+ </includes>
+ <binaries>
+ <includeDependencies>false</includeDependencies>
+ <outputDirectory>/migration/</outputDirectory>
+ <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
+ <unpack>false</unpack>
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>/migration/dependency-jars</outputDirectory>
+ <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
+ </dependencySet>
+ </dependencySets>
+ </binaries>
+ </moduleSet>
+
+ <moduleSet>
+ <includes>
<include>MOA.id:moa-id-oa</include>
</includes>
<sources>
diff --git a/id/history.txt b/id/history.txt
index 1ba311273..f1b9adf87 100644
--- a/id/history.txt
+++ b/id/history.txt
@@ -1,6 +1,27 @@
-Dieses Dokument zeigt die Veränderungen und Erweiterungen
-von MOA-ID auf.
+Dieses Dokument zeigt die Veränderungen und Erweiterungen von MOA-ID auf.
+Version MOA-ID Release 3.0.1: Änderungen seit Version MOA-ID 3.0.0
+- Änderungen
+ - Bug-Fix für Testkarten mit Testkarten-OID
+ - Update TrustStore
+
+
+ ------------------------------------------------------------------------------
+Version MOA-ID Release 3.0.0: Änderungen seit Version MOA-ID 2.2.1
+- Neuerungen:
+ - Redesign des Datenmodels der Configuration
+ - Neuimplementierung des grafischen Konfigurationstools
+ - Modularisierung des Authentifizierungsprozesses
+ - Zusätzliches Logging für Revisionszwecke
+
+- Änderungen
+ - Anpassung VIDP Code für STORK
+ - Update des TrustStore und des Certstore
+ - Kleinere Bug-Fixes
+ - Libraries aktualisiert
+
+
+ ------------------------------------------------------------------------------
Version MOA-ID Release 2.2.1: Änderungen seit Version MOA-ID 2.2.0
- Änderungen
- Anpassung VIDP Code für STORK
diff --git a/id/moa-id-webgui/pom.xml b/id/moa-id-webgui/pom.xml
new file mode 100644
index 000000000..8d35abd20
--- /dev/null
+++ b/id/moa-id-webgui/pom.xml
@@ -0,0 +1,97 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <parent>
+ <groupId>MOA</groupId>
+ <artifactId>id</artifactId>
+ <version>3.x</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>MOA.id</groupId>
+ <artifactId>moa-id-webgui</artifactId>
+ <version>1.0</version>
+ <name>MOA-ID WebGUI Module</name>
+
+ <properties>
+ <repositoryPath>${basedir}/../../repository</repositoryPath>
+ </properties>
+
+ <repositories>
+ <repository>
+ <id>shibboleth.internet2.edu</id>
+ <name>Internet2</name>
+ <url>https://build.shibboleth.net/nexus/content/groups/public/</url>
+ </repository>
+ </repositories>
+
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz.components</groupId>
+ <artifactId>egiz-configuration-meta-api</artifactId>
+ <version>0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz.components</groupId>
+ <artifactId>egiz-spring-api</artifactId>
+ <version>0.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>MOA.id.server</groupId>
+ <artifactId>moa-id-commons</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>hyperjaxb3-ejb-runtime</artifactId>
+ <groupId>org.jvnet.hyperjaxb3</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>hibernate-c3p0</artifactId>
+ <groupId>org.hibernate</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.opensaml</groupId>
+ <artifactId>opensaml</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.opensaml</groupId>
+ <artifactId>xmltooling</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+
+</project> \ No newline at end of file
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDConfigurationModul.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDConfigurationModul.java
new file mode 100644
index 000000000..59f36f475
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDConfigurationModul.java
@@ -0,0 +1,277 @@
+/*
+ * 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.config.webgui;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egiz.components.configuration.file.PropertiesBasedConfiguration;
+import at.gv.egiz.components.configuration.meta.api.ConfigurationModul;
+import at.gv.egiz.components.configuration.meta.api.ConfigurationStorageException;
+import at.gv.egiz.components.configuration.meta.api.MetadataConfiguration;
+import at.gv.egiz.components.configuration.meta.api.SchemaEntry;
+import at.gv.egiz.components.configuration.meta.api.impl.BaseMetadataConfiguration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfigurationImpl;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationValidationException;
+import at.gv.egovernment.moa.id.config.webgui.validation.MOAIDConfigurationValidator;
+
+/**
+ * @author tlenz
+ *
+ */
+@Service
+public class MOAIDConfigurationModul implements ConfigurationModul{
+
+ private static final String MODULE_NAME = "MOAIDConfigurationModul";
+
+ private static MOAIDConfiguration config;
+ private static Configuration meta;
+ private static MetadataConfiguration metadata = null;
+
+ private List<SchemaEntry> schemaList = new ArrayList<SchemaEntry>();
+ private static final Logger logger = LoggerFactory.getLogger(MOAIDConfigurationModul.class);
+
+ static {
+ logger.info("Loading class {}", MOAIDConfigurationModul.class.getName());
+ try {
+ meta = new PropertiesBasedConfiguration(MOAIDConfigurationModul.class.getResourceAsStream("/gui/meta.properties"));
+
+ } catch (IOException | ConfigurationException e) {
+ logger.error("Failed to build internal datasets in MOAIDConfiguration modul!");
+
+ }
+ }
+
+ @Autowired
+ public void setDatabaseConfiguration(MOAIDConfiguration dbconfig) {
+ config = dbconfig;
+ }
+
+ /**
+ * @throws Exception
+ *
+ */
+ public MOAIDConfigurationModul() throws Exception {
+ loadType("general", "/gui/types/general.json");
+ loadType("moaidoa", "/gui/types/oa.json");
+ loadType("moaidvidp", "/gui/types/vidp.json");
+ loadType("moaidiidp", "/gui/types/iidp.json");
+ loadType("moaidgateway", "/gui/types/gateway.json");
+
+ try {
+ MOAIDWebGUIConfiguration.getInstance();
+
+ } catch (at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException e) {
+ logger.error("MOA-ID WebGUI initialization FAILED! (Reason: {})", e.getMessage());
+ throw new Exception(e);
+
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#getSchemas()
+ */
+ @Override
+ public List<SchemaEntry> getSchemas() {
+ return schemaList;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#getName()
+ */
+ @Override
+ public String getName() {
+ return MODULE_NAME;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#getPrefix()
+ */
+ @Override
+ public String getPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#getConfigurationAccess()
+ */
+ @Override
+ public Configuration getConfigurationAccess() {
+ return config;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#getMetadataConfiguration()
+ */
+ @Override
+ public MetadataConfiguration getMetadataConfiguration() {
+ if (metadata == null) {
+ metadata = new BaseMetadataConfiguration(config, meta);
+
+ }
+ return metadata;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#buildArrayIdentifier(java.lang.String, int, java.util.Map)
+ */
+ @Override
+ public String buildArrayIdentifier(String arrayId, int refCounter,
+ Map<String, String> properties) throws ConfigurationException {
+ logger.trace("Search next free list index for key: " + arrayId);
+
+ if (arrayId.startsWith(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES)) {
+ String[] allListKeys = config.findConfigurationId(arrayId + ".%." + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ int freeIndex = KeyValueUtils.findNextFreeListCounter(allListKeys, arrayId) + refCounter;
+ logger.debug("Found free listIndex: " + freeIndex + " for serviceKey: " + arrayId);
+ return String.valueOf(freeIndex);
+
+ } else {
+ logger.warn("Actually, only services are from type array and need an index.");
+ throw new ConfigurationException("Actually, only services are from type array and need an index.");
+
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.meta.api.ConfigurationModul#storeChanges(java.util.Map, java.util.Map, java.util.List)
+ */
+ @Override
+ public void storeChanges(Map<String, String> changed,
+ Map<String, String> added, List<String> deleted)
+ throws ConfigurationStorageException {
+
+ logger.debug("Start configuration saving process ...");
+ MOAIDConfigurationValidator configValidator = new MOAIDConfigurationValidator();
+ if (deleted == null)
+ deleted = new ArrayList<String>();
+
+ int numOfGroups = configValidator.preProcess(changed, added, deleted);
+
+ if (configValidator.getPreProcessedConfigurationData() != null &&
+ numOfGroups > 0) {
+ logger.trace("Validate {} groups of key/value pairs", numOfGroups);
+ try {
+ configValidator.validate();
+
+ } catch (ConfigurationValidationException e) {
+ logger.warn("Validation of MOA-ID configuration FAILED.");
+
+ //TODO: update ConfigurationStorageException to add specific information of validation errors
+ throw new ConfigurationStorageException(e.getFormatedErrorMessage(),
+ e, false, false);
+ }
+
+ try {
+ logger.trace("PreProcess configuration before saving.");
+ Map<String, String> configToStore = configValidator.postProcessing(deleted);
+
+ //store all keys
+ logger.debug("Store {} key/value pairs to configuration", configToStore.size());
+ Iterator<Entry<String, String>> storageInterator = configToStore.entrySet().iterator();
+ while (storageInterator.hasNext()) {
+ Entry<String, String> el = storageInterator.next();
+ try {
+ config.setStringValue(el.getKey(), el.getValue());
+ logger.trace("Store key: " + el.getKey() + " with value: "
+ + el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Store key: " + el.getKey() + " with value: "
+ + el.getValue() + " FAILED.", e);
+
+ }
+ }
+
+ //delete all unused keys
+ deleteEntries(deleted);
+
+ } catch (Exception e) {
+ logger.warn("Configuration post-processing FAILED.", e);
+ throw new ConfigurationStorageException("Configuration can not be stored.", e);
+
+ }
+
+
+ } else if (deleted != null && deleted.size() > 0) {
+ deleteEntries(deleted);
+
+
+ } else {
+ logger.info("Configuration saving process finished without operations: No key/value pairs found.");
+
+ }
+ }
+
+ private void deleteEntries(List<String> deleted) {
+ if (deleted != null) {
+ logger.debug("Delete {} keys pairs from configuration", deleted.size());
+ Iterator<String> deleteInterator = deleted.iterator();
+ while (deleteInterator.hasNext()) {
+ String el = deleteInterator.next();
+ try {
+ config.deleteIds(el);
+ logger.trace("Delete key {}", el);
+
+ } catch (ConfigurationException e) {
+ logger.error("Delete key: " + el + " FAILED.", e);
+
+ }
+ }
+ }
+
+ }
+
+ private void loadType(String name, String resource) {
+ InputStream is = null;
+ try {
+ SchemaEntry entry = new SchemaEntry();
+ is = MOAIDConfigurationModul.class.getResourceAsStream(resource);
+ entry.jsonSchema = IOUtils.toString(is);
+ entry.typeName = name;
+ schemaList.add(entry);
+ } catch (IOException e) {
+ logger.error("Failed to load Type OA!", e);
+ } finally {
+ IOUtils.closeQuietly(is);
+ }
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDSpringResourceProvider.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDSpringResourceProvider.java
new file mode 100644
index 000000000..f9f8d1d2d
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDSpringResourceProvider.java
@@ -0,0 +1,86 @@
+/*
+ * 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.config.webgui;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+import at.gv.egiz.components.spring.api.SpringResourceProvider;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesProtocolPVP2XTask;
+
+/**
+ * @author tlenz
+ *
+ */
+public class MOAIDSpringResourceProvider implements SpringResourceProvider {
+
+ private static final Logger log = LoggerFactory.getLogger(MOAIDSpringResourceProvider.class);
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getResourcesToLoad()
+ */
+ @Override
+ public Resource[] getResourcesToLoad() {
+// try {
+ //TODO: is not a nice solution -> fix in futher version
+ //MOAIDWebGUIConfiguration moaIdWebguiConfig = MOAIDWebGUIConfiguration.getInstance();
+ //JPAPropertiesWithJavaConfig.setLocalProperties(moaIdWebguiConfig.getDatabaseProperties());
+
+ ClassPathResource databasecontextconfig = new ClassPathResource("/configuration.beans.xml", MOAIDSpringResourceProvider.class);
+ ClassPathResource webguicontextconfig = new ClassPathResource("/moaid.webgui.beans.xml", MOAIDSpringResourceProvider.class);
+ ClassPathResource webguidatabasecontextconfig = new ClassPathResource("/moaid.migration.beans.xml", MOAIDSpringResourceProvider.class);
+
+
+
+ return new Resource[] {databasecontextconfig, webguidatabasecontextconfig, webguicontextconfig};
+
+// } catch (ConfigurationException e) {
+// log.error("Can not load MOA-ID WebGUI configuration.", e);
+// return null;
+//
+// }
+
+
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getPackagesToScan()
+ */
+ @Override
+ public String[] getPackagesToScan() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getName()
+ */
+ @Override
+ public String getName() {
+ return "MOAIDConfiguration_SpringResourceDefinition";
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDWebGUIConfiguration.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDWebGUIConfiguration.java
new file mode 100644
index 000000000..0a3a9eef8
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/MOAIDWebGUIConfiguration.java
@@ -0,0 +1,160 @@
+/*
+ * 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.config.webgui;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Properties;
+
+import org.opensaml.DefaultBootstrap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
+import at.gv.egovernment.moa.util.FileUtils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+@Service
+public class MOAIDWebGUIConfiguration {
+
+ private static final String SYSTEM_PROP_CONFIG = "moa.id.webconfig";
+
+ private static final Logger log = LoggerFactory.getLogger(MOAIDWebGUIConfiguration.class);
+
+
+
+ private Properties props;
+ private String configFileName;
+ private String configRootDir;
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.commons.config.persistence.LocalConfigurationBean#getLocalDatabaseProperties()
+ */
+
+ private static MOAIDWebGUIConfiguration instance = null;
+
+ public static MOAIDWebGUIConfiguration getInstance() throws ConfigurationException {
+ if (instance == null) {
+ instance = new MOAIDWebGUIConfiguration();
+
+ }
+ return instance;
+ }
+
+
+ MOAIDWebGUIConfiguration() throws ConfigurationException {
+ configFileName = System.getProperty(SYSTEM_PROP_CONFIG);
+
+ if (configFileName == null) {
+ throw new ConfigurationException("config.05");
+ }
+ try {
+ URI fileURI = new URI(configFileName);
+
+ // determine the directory of the root config file
+ configRootDir = new File(fileURI).getParent();
+
+ log.info("Loading MOA-ID WebGUI configuration from file " + fileURI);
+
+ //Load MOAID-2.0 properties file
+
+ File propertiesFile = new File(fileURI);
+ FileInputStream fis;
+ props = new Properties();
+
+ fis = new FileInputStream(propertiesFile);
+ props.load(fis);
+
+ fis.close();
+
+ log.debug("OpenSAML initialization started ...");
+ DefaultBootstrap.bootstrap();
+ log.info("OpenSAML initialization complete.");
+
+ log.info("Pre-Initialization step of MOA-ID WebGUI module finished ... ");
+
+
+ } catch (FileNotFoundException e) {
+ throw new ConfigurationException("config.01", new Object[]{configFileName}, e);
+
+ } catch (IOException e) {
+ throw new ConfigurationException("config.02", new Object[]{configFileName}, e);
+
+ } catch (org.opensaml.xml.ConfigurationException e) {
+ throw new ConfigurationException("config.04", e);
+
+ } catch (URISyntaxException e) {
+ throw new ConfigurationException("config.06", new Object[]{MOAIDConfigurationConstants.FILE_URI_PREFIX, configFileName}, e);
+
+ }
+ }
+
+// @Override
+// protected Properties getLocalDatabaseProperties() {
+// return this.props;
+// }
+
+ public String getConfigFile() {
+ return configFileName;
+ }
+
+ public String getConfigRootDir() {
+ return configRootDir;
+ }
+
+ public String getCertStoreDirectory() throws ConfigurationException {
+ String dir = props.getProperty("general.ssl.certstore");
+ if (MiscUtil.isNotEmpty(dir))
+ return FileUtils.makeAbsoluteURL(dir, configRootDir);
+
+ else
+ throw new ConfigurationException("No SSLCertStore configured use default JAVA TrustStore.");
+
+ }
+
+ public String getTrustStoreDirectory() throws ConfigurationException {
+ String dir = props.getProperty("general.ssl.truststore");
+ if (MiscUtil.isNotEmpty(dir))
+ return FileUtils.makeAbsoluteURL(dir, configRootDir);
+
+ else
+ throw new ConfigurationException("No SSLTrustStore configured use default JAVA TrustStore.");
+
+ }
+
+ public boolean isPVPMetadataSchemaValidationActive() {
+ return Boolean.parseBoolean(props.getProperty("general.pvp.schemavalidation", "true"));
+
+ }
+
+}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/exception/ConfigurationException.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationException.java
index 3aa3910cc..2f2decab9 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/exception/ConfigurationException.java
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationException.java
@@ -20,9 +20,10 @@
* 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.configuration.exception;
+package at.gv.egovernment.moa.id.config.webgui.exception;
+
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
-import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;
public class ConfigurationException extends Exception {
@@ -37,7 +38,7 @@ public class ConfigurationException extends Exception {
}
public ConfigurationException(String errorname, Object[] params, Throwable e) {
- super(LanguageHelper.getErrorString(errorname, params, null), e);
+ super(LanguageHelper.getErrorString(errorname, params), e);
}
public ConfigurationException(Throwable e) {
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationModulValidationException.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationModulValidationException.java
new file mode 100644
index 000000000..b2103da54
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationModulValidationException.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.config.webgui.exception;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ConfigurationModulValidationException extends
+ ConfigurationValidationException {
+
+ /**
+ * @param errors
+ */
+ public ConfigurationModulValidationException(
+ List<ValidationObjectIdentifier> errors) {
+ super(errors);
+ }
+
+ /**
+ * @param validationObjectIdentifier
+ */
+ public ConfigurationModulValidationException(
+ ValidationObjectIdentifier validationObjectIdentifier) {
+ super(Arrays.asList(validationObjectIdentifier));
+ }
+
+ private static final long serialVersionUID = 2961444276927305856L;
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationTaskValidationException.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationTaskValidationException.java
new file mode 100644
index 000000000..6ce2ccbb6
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationTaskValidationException.java
@@ -0,0 +1,54 @@
+/*
+ * 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.config.webgui.exception;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ConfigurationTaskValidationException extends
+ ConfigurationModulValidationException {
+
+ /**
+ * @param errors
+ */
+ public ConfigurationTaskValidationException(
+ List<ValidationObjectIdentifier> errors) {
+ super(errors);
+ }
+
+ /**
+ * @param validationObjectIdentifier
+ */
+ public ConfigurationTaskValidationException(
+ ValidationObjectIdentifier validationObjectIdentifier) {
+ super(Arrays.asList(validationObjectIdentifier));
+
+ }
+
+ private static final long serialVersionUID = -8983804572579884044L;
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationValidationException.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationValidationException.java
new file mode 100644
index 000000000..1b5020eb3
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ConfigurationValidationException.java
@@ -0,0 +1,74 @@
+/*
+ * 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.config.webgui.exception;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ConfigurationValidationException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ List<ValidationObjectIdentifier> errors = null;
+
+ /**
+ *
+ */
+ public ConfigurationValidationException(List<ValidationObjectIdentifier> errors) {
+ this.errors = errors;
+ }
+
+ public List<ValidationObjectIdentifier> getValidationErrors() {
+ return this.errors;
+
+ }
+
+ /**
+ * @return
+ */
+ public String getFormatedErrorMessage() {
+
+ ArrayNode valuesArray = JsonNodeFactory.instance.arrayNode();
+ for (ValidationObjectIdentifier el : errors) {
+ valuesArray.add(el.getMessage());
+ }
+
+ try {
+ return new String(valuesArray.toString().getBytes(), "ISO-8859-1");
+
+ } catch (UnsupportedEncodingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return valuesArray.textValue();
+ }
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SchemaValidationException.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SchemaValidationException.java
new file mode 100644
index 000000000..3c0827a62
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SchemaValidationException.java
@@ -0,0 +1,43 @@
+/*
+ * 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.config.webgui.exception;
+
+import org.opensaml.saml2.metadata.provider.FilterException;
+
+/**
+ * @author tlenz
+ *
+ */
+public class SchemaValidationException extends FilterException {
+
+ /**
+ * @param string
+ */
+ public SchemaValidationException(String string) {
+ super(string);
+
+ }
+
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SignatureValidationException.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SignatureValidationException.java
new file mode 100644
index 000000000..7c4c48e6b
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/SignatureValidationException.java
@@ -0,0 +1,58 @@
+/*
+ * 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.config.webgui.exception;
+
+import org.opensaml.saml2.metadata.provider.FilterException;
+
+/**
+ * @author tlenz
+ *
+ */
+public class SignatureValidationException extends FilterException {
+
+ /**
+ * @param string
+ */
+ public SignatureValidationException(String string) {
+ super(string);
+
+ }
+
+ /**
+ * @param e
+ */
+ public SignatureValidationException(Exception e) {
+ super(e);
+ }
+
+ /**
+ * @param string
+ * @param object
+ */
+ public SignatureValidationException(String string, Exception e) {
+ super(string, e);
+ }
+
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ValidationObjectIdentifier.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ValidationObjectIdentifier.java
new file mode 100644
index 000000000..0a6112ebb
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/exception/ValidationObjectIdentifier.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.config.webgui.exception;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ValidationObjectIdentifier {
+ private String key;
+ private String friendlyName;
+ private String message;
+
+ /**
+ * Create a validation error object identifier
+ *
+ * @param key configuration key
+ * @param friendlyName friendly name in configuration GUI
+ * @param message error message
+ */
+ public ValidationObjectIdentifier(String key, String friendlyName, String message) {
+ this.key = key;
+ this.friendlyName = friendlyName;
+ this.message = message;
+ }
+
+
+ /**
+ * @return the configuration key
+ */
+ public String getKey() {
+ return key;
+ }
+ /**
+ * @return the friendly name, which is used in the GUI
+ */
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+ /**
+ * @return the error message
+ */
+ public String getMessage() {
+ return message;
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java
new file mode 100644
index 000000000..6b6bf8427
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java
@@ -0,0 +1,67 @@
+/*
+ * 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.config.webgui.helper;
+
+import java.io.IOException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.util.Base64Utils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GUIDataParser {
+ private static final Logger log = LoggerFactory.getLogger(GUIDataParser.class);
+ /**
+ * Extract the BASE64 content from GUI upload
+ *
+ * @param guiUpload {String}, which is committed by GUI
+ * @return Base64 encoded data or null if data is not parseable or empty
+ */
+ public static String getBase64ContentFromGUIUpload(String guiUpload) {
+ if (MiscUtil.isNotEmpty(guiUpload) &&
+ !guiUpload.equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT) ) {
+ String[] bkuSelectTemplateSplitted = guiUpload.split(",");
+ String base64 = null;
+ if (bkuSelectTemplateSplitted.length > 1)
+ base64 = bkuSelectTemplateSplitted[1];
+ else
+ base64 = guiUpload;
+
+ try {
+ if (Base64Utils.decode(base64, false) != null)
+ return base64;
+
+ } catch (IOException e) {
+ log.debug("GUI upoad is not decodeable.", e);
+
+ }
+ }
+ return null;
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/LanguageHelper.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/LanguageHelper.java
new file mode 100644
index 000000000..122626ae8
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/LanguageHelper.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.config.webgui.helper;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+
+public class LanguageHelper {
+
+
+ private static String errorLanguage(String code, Locale locale) {
+ return ResourceBundle.getBundle("applicationResources", locale).getString(code);
+
+ }
+
+ private static String guiLanguage(String code, Locale locale) {
+ return ResourceBundle.getBundle("applicationResources", locale).getString(code);
+
+ }
+
+ public static String getGUIString(String code) {
+ return guiLanguage(code, getLangFromConfig());
+ }
+
+
+ public static String getErrorString(String code) {
+ return errorLanguage(code, getLangFromConfig());
+ }
+
+ public static String getGUIString(String code, String parameter) {
+ return MessageFormat.format(getGUIString(code), parameter);
+ }
+
+ public static String getErrorString(String code, Object[] parameter) {
+
+ return MessageFormat.format(getGUIString(code), parameter);
+ }
+
+
+ private static Locale getLangFromConfig() {
+
+ Locale defaultLanguage = Locale.forLanguageTag("de");
+
+// try {
+// ConfigurationProvider configurationProvider = ConfigurationProvider.getInstance();
+// defaultLanguage = Locale.forLanguageTag(configurationProvider.getDefaultLanguage());
+//
+// } catch (ConfigurationException e) {
+// log.error("Configuration exception while getting ConfigurationProvider instance", e);
+// }
+
+
+ return defaultLanguage;
+
+
+
+ }
+}
+
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/MOAIDConfigurationValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/MOAIDConfigurationValidator.java
new file mode 100644
index 000000000..42ef0e1e6
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/MOAIDConfigurationValidator.java
@@ -0,0 +1,311 @@
+/*
+ * 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.config.webgui.validation;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationModulValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationValidationException;
+import at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+
+/**
+ * @author tlenz
+ *
+ */
+public class MOAIDConfigurationValidator {
+ private static final Logger logger = LoggerFactory.getLogger(MOAIDConfigurationValidator.class);
+ private static MOAIDConfiguration dbconfig;
+
+ private static ServiceLoader<IModuleValidator> moduleLoader =
+ ServiceLoader.load(IModuleValidator.class);
+ private static Map<String, IModuleValidator> moduleValidator = null;
+
+ private static ServiceLoader<IDynamicLoadableTaskValidator> taskLoader =
+ ServiceLoader.load(IDynamicLoadableTaskValidator.class);
+
+ private Map<String, Map<String,String>> data = null;
+ private boolean isDataValidated = false;
+
+ @Autowired
+ public void setDatabaseConfiguration(MOAIDConfiguration config) {
+ dbconfig = config;
+
+ }
+
+ /**
+ *
+ */
+ public MOAIDConfigurationValidator() {
+ //load modules
+ if (moduleValidator == null ) {
+ moduleValidator = new HashMap<String, IModuleValidator>();
+ Iterator<IModuleValidator> moduleLoaderInterator = moduleLoader.iterator();
+ while (moduleLoaderInterator.hasNext()) {
+ IModuleValidator modul = moduleLoaderInterator.next();
+ logger.info("Load validation module for key: {}", modul.getKeyPrefix());
+ moduleValidator.put(modul.getKeyPrefix(), modul);
+
+ }
+
+ //load dynamic tasks
+ Iterator<IDynamicLoadableTaskValidator> taskLoaderInterator = taskLoader.iterator();
+ while (taskLoaderInterator.hasNext()) {
+ IDynamicLoadableTaskValidator task = taskLoaderInterator.next();
+ List<String> modulesToInject = task.getModulValidatorPrefix();
+ for (String el : modulesToInject) {
+ if (moduleValidator.containsKey(el)) {
+ moduleValidator.get(el).addTaskValidator(task);
+ logger.info("Task " + task.getName()
+ + " is injected to module with prefix " + el);
+
+ } else {
+ logger.warn("Task " + task.getName()
+ + " could NOT injected: No module with prefix " + el);
+
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Get the internal key/value configuration data set
+ *
+ * @return full configuration block of key/value pairs {Map<String, String>} sorted by MOA-ID configuration groups or null if preprocessing was done
+ */
+ public Map<String, Map<String,String>> getPreProcessedConfigurationData() {
+ return data;
+ }
+
+ /**
+ * PreProcess MOA-ID key/value configuration before validation and sort the keys into MOA-ID configuration groups
+ *
+ * @param changed all changed key/value pairs
+ * @param added all added key/value pairs
+ * @param deleted all deleted key/value pairs
+ * @return Number of MOA-ID configuration groups which was found
+ */
+ public int preProcess(Map<String, String> changed,
+ Map<String, String> added, List<String> deleted) {
+ data = new HashMap<String, Map<String, String>>();
+
+ //classify changed key/value pairs
+ if (changed != null)
+ keyValueClassification(changed.entrySet().iterator(), data);
+
+ //classify new key/value pairs
+ if (added != null)
+ keyValueClassification(added.entrySet().iterator(), data);
+
+ return data.size();
+ }
+
+ /**
+ * Validate MOA-ID key/value configuration before saving
+ *
+ * @throws ConfigurationValidationException
+ */
+
+ public void validate() throws ConfigurationValidationException {
+ logger.trace("Starting MOA-ID configuration validation process ...");
+
+ Iterator<Entry<String, Map<String, String>>> groupInterator = data.entrySet().iterator();
+ while (groupInterator.hasNext()) {
+ Entry<String, Map<String, String>> groupEl = groupInterator.next();
+
+ try {
+ if (groupEl.getKey().startsWith(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES)) {
+ String moduleID = KeyValueUtils.getParentKey(groupEl.getKey());
+ if (moduleValidator.containsKey(moduleID)) {
+ logger.trace("Starting validation process of keyGroup: " + groupEl.getKey()
+ + " with module: " + moduleValidator.get(moduleID).getName());
+ Map<String, String> servicekeys = KeyValueUtils.removePrefixFromKeys(groupEl.getValue(), groupEl.getKey());
+
+ //put service prefix to validation Map to check if service already stored
+ servicekeys.put(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES, groupEl.getKey());
+
+ moduleValidator.get(moduleID)
+ .validate(servicekeys);
+
+ } else
+ logger.info("No ModulValidator for keygroup {} found.", moduleID);
+
+ } else if (moduleValidator.containsKey(groupEl.getKey())) {
+ logger.trace("Starting validation process of keyGroup: " + groupEl.getKey()
+ + " with module: " + moduleValidator.get(groupEl.getKey()).getName());
+ moduleValidator.get(groupEl.getKey())
+ .validate(KeyValueUtils.removePrefixFromKeys(groupEl.getValue(), groupEl.getKey()));
+
+ } else {
+ logger.info("No ModulValidator for keygroup {} found.", groupEl.getKey());
+
+ }
+
+ } catch (ConfigurationModulValidationException e) {
+ logger.warn("Validation of keyGroup: " + groupEl.getKey()
+ + " FAILED with " + e.getValidationErrors().size() + " errors");
+ throw e;
+
+ }
+
+ }
+ isDataValidated = true;
+ }
+
+ /**
+ * Post-process the validated configuration to generate storeable key/value pairs
+ * @param deleted
+ *
+ * @return {Map<String, String>} of key/value pairs which could be stored into configuration
+ */
+
+ public Map<String, String> postProcessing(List<String> deleted) {
+ if (!isDataValidated)
+ logger.warn("Post-Processing non validated key/value pairs!");
+
+ Map<String, String> configToStore = new HashMap<String, String>();
+
+ Iterator<Entry<String, Map<String, String>>> groupInterator = data.entrySet().iterator();
+ while (groupInterator.hasNext()) {
+ Entry<String, Map<String, String>> groupEl = groupInterator.next();
+
+ try {
+ if (groupEl.getKey().startsWith(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES)) {
+ String moduleID = KeyValueUtils.getParentKey(groupEl.getKey());
+ if (moduleValidator.containsKey(moduleID)) {
+ logger.trace("Start postProcessing of keyGroup: " + groupEl.getKey()
+ + " with module: " + moduleValidator.get(moduleID).getName());
+ postProcessing(groupEl, moduleValidator.get(moduleID), configToStore, deleted);
+
+ } else
+ logger.info("No Module for keygroup {} found.", moduleID);
+
+ } else if (moduleValidator.containsKey(groupEl.getKey())) {
+ logger.trace("Start postProcessing of keyGroup: " + groupEl.getKey()
+ + " with module: " + moduleValidator.get(groupEl.getKey()).getName());
+ postProcessing(groupEl, moduleValidator.get(groupEl.getKey()), configToStore, deleted);
+
+ } else {
+ logger.info("No ModulValidator for keygroup {} found.", groupEl.getKey());
+
+ }
+
+ } catch (Exception e) {
+ logger.error("Post-Processing for keygroup: " + groupEl.getKey() + " FAILED!", e);
+
+ }
+
+ }
+ return configToStore;
+ }
+
+ private void postProcessing(Entry<String, Map<String, String>> groupEl,
+ IModuleValidator module, Map<String, String> configToStore, List<String> deleted ) {
+
+ //add all key/value pairs from user configuration GUI
+ configToStore.putAll(KeyValueUtils.makeKeysAbsolut(
+ groupEl.getValue(),
+ groupEl.getKey(),
+ MOAIDConfigurationConstants.PREFIX_MOAID));
+
+ //add or update key/value pairs from users with module or task specific information
+ Map<String, String> toBeAdded = module.postProcessing(
+ KeyValueUtils.removePrefixFromKeys(groupEl.getValue(), groupEl.getKey()),
+ deleted,
+ dbconfig);
+ if (toBeAdded != null) {
+ toBeAdded = KeyValueUtils.makeKeysAbsolut(toBeAdded, groupEl.getKey(), MOAIDConfigurationConstants.PREFIX_MOAID);
+ for (Entry<String, String> el : toBeAdded.entrySet()) {
+ if (configToStore.containsKey(el.getKey())) {
+ logger.info("Overwrite key: " + el.getKey()
+ + " userValue:" + configToStore.get(el.getKey())
+ + " postProcessing: " + toBeAdded.get(el.getKey()));
+
+ }
+ configToStore.put(el.getKey(), el.getValue());
+ }
+ }
+
+ }
+
+ private void keyValueClassification(Iterator<Entry<String, String>> config, Map<String, Map<String,String>> result) {
+ Set<String> validationModuleKeys = moduleValidator.keySet();
+
+ while(config.hasNext()) {
+ Entry<String, String> el = config.next();
+ logger.trace("Preprocess configuration element with key: "
+ + el.getKey() + " value: " + el.getValue());
+
+ //search configuration module
+ IModuleValidator selectedModul = null;
+ for (String key : validationModuleKeys) {
+ if (el.getKey().startsWith(key)) {
+ selectedModul = moduleValidator.get(key);
+ break;
+ }
+ }
+
+ //group key/value pair to configuration modules
+ if (selectedModul != null) {
+ String groupkey = null;
+ if (selectedModul.getKeyPrefix().startsWith(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES)) {
+ String oaIndex = KeyValueUtils.getFirstChildAfterPrefix(el.getKey(), selectedModul.getKeyPrefix());
+ groupkey = selectedModul.getKeyPrefix() + "." + oaIndex;
+
+ } else
+ groupkey = selectedModul.getKeyPrefix();
+
+ if (!result.containsKey(groupkey)) {
+ result.put(groupkey, new HashMap<String, String>());
+
+ }
+ Map<String, String> resultElement = result.get(groupkey);
+ logger.trace("Put key/value pair to keyGroup: "
+ + groupkey + "with friendlyName: " + selectedModul.getName());
+ resultElement.put(el.getKey(), el.getValue());
+
+ } else {
+ logger.warn("Configuration Key {} is not part of a loaded MOA-ID configuration validation-module!", el.getKey());
+
+ }
+
+ }
+ }
+
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/AbstractModuleValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/AbstractModuleValidator.java
new file mode 100644
index 000000000..076f5c75e
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/AbstractModuleValidator.java
@@ -0,0 +1,148 @@
+/*
+ * 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.config.webgui.validation.modul;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationModulValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+
+/**
+ * @author tlenz
+ *
+ */
+public abstract class AbstractModuleValidator implements IModuleValidator {
+ private static final Logger logger = LoggerFactory.getLogger(AbstractModuleValidator.class);
+ protected List<ITaskValidator>taskValidator = new ArrayList<ITaskValidator>();
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator#validate(java.util.Map)
+ */
+ @Override
+ public void validate(Map<String, String> input)
+ throws ConfigurationModulValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+// //perform whitelist checks
+// List<Pattern> allowedPatterns = new ArrayList<Pattern>();
+// for (ITaskValidator task : taskValidator)
+// allowedPatterns.addAll(task.getAllAllowedPatterns());
+//
+// for (String el : input.keySet()) {
+// boolean valid = false;
+//
+// for (Pattern pat : allowedPatterns) {
+// if (pat.matcher(el).matches()) {
+// valid = true;
+// break;
+// }
+// }
+//
+// if (!valid) {
+// logger.warn("Task-Validator for keyPrefix: "
+// + getKeyPrefix() + " found a non-whitelisted key: " + el);
+// throw new ConfigurationModulValidationException(
+// new ValidationObjectIdentifier(el, "unkown", "This key is not allowed!"));
+//
+// }
+// }
+
+ for (ITaskValidator task : taskValidator) {
+ try {
+ task.validate(input);
+
+ } catch (ConfigurationTaskValidationException e) {
+ logger.debug("Task " + task.getName()
+ + " found " + e.getValidationErrors().size()
+ + " errors in configuration");
+ errors.addAll(e.getValidationErrors());
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationModulValidationException(errors);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator#validate(java.util.Map)
+ */
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> added = new HashMap<String, String>();
+
+ for (ITaskValidator task : taskValidator) {
+ try {
+ Map<String, String> taskResult = task.postProcessing(input, keysToDelete, dbconfig);
+ if (taskResult != null)
+ added.putAll(taskResult);
+
+ } catch (Exception e) {
+ logger.warn("Post processing of task: " + task.getName()
+ + " FAILED!", e);
+
+ }
+ }
+ if (added.isEmpty())
+ return null;
+ else
+ return added;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator#getKeyPrefix()
+ */
+ @Override
+ abstract public String getKeyPrefix();
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator#getName()
+ */
+ @Override
+ abstract public String getName();
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator#addTaskValidator(at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicTaskValidator)
+ */
+ @Override
+ public void addTaskValidator(IDynamicLoadableTaskValidator validator) {
+ taskValidator.add(validator);
+
+ }
+
+ protected void addTaskValidator(ITaskValidator validator) {
+ taskValidator.add(validator);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/IModuleValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/IModuleValidator.java
new file mode 100644
index 000000000..3ee665a87
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/IModuleValidator.java
@@ -0,0 +1,79 @@
+/*
+ * 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.config.webgui.validation.modul;
+
+import java.util.List;
+import java.util.Map;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationModulValidationException;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+
+/**
+ * @author tlenz
+ *
+ */
+public interface IModuleValidator {
+
+ /**
+ * Validate a specific key/value configuration
+ *
+ * @param input key/value configuration pairs without prefix
+ * @throws ConfigurationModulValidationException
+ */
+ public void validate(Map<String, String> input) throws ConfigurationModulValidationException;
+
+ /**
+ * Get module specific additional key/value pairs which must be added
+ *
+ * @param input Set of key/value pairs
+ * @param keysToDelete List<String> of keys which should be deleted
+ * @param dbconfig {Configuration} to access the current used configuration
+ * @return {Map<String, String>} of key/value pairs which had to be added to configuration or null
+ */
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig);
+
+
+ /**
+ * Key prefix for which this validation module is sensitive
+ *
+ * @return
+ */
+ public String getKeyPrefix();
+
+ /**
+ * Friendly name of the validation module
+ *
+ * @return
+ */
+ public String getName();
+
+
+ /**
+ *
+ *
+ * @param validator
+ */
+ public void addTaskValidator(IDynamicLoadableTaskValidator validator);
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GatewayValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GatewayValidator.java
new file mode 100644
index 000000000..e7775beba
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GatewayValidator.java
@@ -0,0 +1,58 @@
+/*
+ * 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.config.webgui.validation.modul.impl;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.validation.modul.AbstractModuleValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesGeneralInformationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesPVPGatewayTask;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GatewayValidator extends AbstractModuleValidator {
+
+ public GatewayValidator() {
+ addTaskValidator(new ServicesGeneralInformationTask());
+ addTaskValidator(new ServicesPVPGatewayTask());
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_GATEWAY;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "MOA-ID STORK<->PVP Gateway Configuration";
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GeneralConfigurationValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GeneralConfigurationValidator.java
new file mode 100644
index 000000000..01114d235
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/GeneralConfigurationValidator.java
@@ -0,0 +1,62 @@
+/*
+ * 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.config.webgui.validation.modul.impl;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.validation.modul.AbstractModuleValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.GeneralMOAIDConfigurationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.GeneralOpenIDConfigurationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.GeneralPVP2XConfigurationTask;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GeneralConfigurationValidator extends AbstractModuleValidator {
+
+
+ public GeneralConfigurationValidator() {
+ //add default task to this module
+ addTaskValidator(new GeneralMOAIDConfigurationTask());
+ addTaskValidator(new GeneralPVP2XConfigurationTask());
+ addTaskValidator(new GeneralOpenIDConfigurationTask());
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "General MOA-ID Configuration";
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/InterfederationIDPValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/InterfederationIDPValidator.java
new file mode 100644
index 000000000..5b9312e8e
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/InterfederationIDPValidator.java
@@ -0,0 +1,57 @@
+/*
+ * 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.config.webgui.validation.modul.impl;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.validation.modul.AbstractModuleValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesGeneralInformationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesInterfederationIDPTask;
+
+/**
+ * @author tlenz
+ *
+ */
+public class InterfederationIDPValidator extends AbstractModuleValidator {
+
+ public InterfederationIDPValidator() {
+ addTaskValidator(new ServicesGeneralInformationTask());
+ addTaskValidator(new ServicesInterfederationIDPTask());
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_IIDP;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "MOA-ID Interfederation IDP Configuration";
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/OnlineApplicationValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/OnlineApplicationValidator.java
new file mode 100644
index 000000000..dbce8ec3a
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/OnlineApplicationValidator.java
@@ -0,0 +1,71 @@
+/*
+ * 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.config.webgui.validation.modul.impl;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.validation.modul.AbstractModuleValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesAuthenticationInformationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesBKUSelectionTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesGeneralInformationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesProtocolSAML1Task;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesSSOAuthenticationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesTargetTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesbPKDecryptionTask;
+
+/**
+ * @author tlenz
+ *
+ */
+public class OnlineApplicationValidator extends AbstractModuleValidator {
+
+ /**
+ *
+ */
+ public OnlineApplicationValidator() {
+ addTaskValidator(new ServicesGeneralInformationTask());
+ addTaskValidator(new ServicesTargetTask());
+ addTaskValidator(new ServicesAuthenticationInformationTask());
+ addTaskValidator(new ServicesSSOAuthenticationTask());
+ addTaskValidator(new ServicesbPKDecryptionTask());
+ addTaskValidator(new ServicesProtocolSAML1Task());
+ addTaskValidator(new ServicesBKUSelectionTask());
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "MOA-ID Online-Application Configuration";
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/VIDPValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/VIDPValidator.java
new file mode 100644
index 000000000..ad3c15b16
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/modul/impl/VIDPValidator.java
@@ -0,0 +1,61 @@
+/*
+ * 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.config.webgui.validation.modul.impl;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.validation.modul.AbstractModuleValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesBKUSelectionTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesGeneralInformationTask;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesTargetTask;
+
+/**
+ * @author tlenz
+ *
+ */
+public class VIDPValidator extends AbstractModuleValidator {
+
+
+ public VIDPValidator() {
+ addTaskValidator(new ServicesGeneralInformationTask());
+ addTaskValidator(new ServicesTargetTask());
+ addTaskValidator(new ServicesBKUSelectionTask());
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_VIDP;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.IModuleValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "MOA-ID V-IDP Configuration";
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/AbstractTaskValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/AbstractTaskValidator.java
new file mode 100644
index 000000000..a124949f1
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/AbstractTaskValidator.java
@@ -0,0 +1,106 @@
+/*
+ * 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.config.webgui.validation.task;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+
+/**
+ * @author tlenz
+ *
+ */
+public abstract class AbstractTaskValidator implements ITaskValidator {
+ private static final Logger logger = LoggerFactory.getLogger(AbstractTaskValidator.class);
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#validate(java.util.Map)
+ */
+ @Override
+ public void validate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+
+ //start task specific validation
+ taskValidate(input);
+
+ }
+
+ /**
+ * Validate a specific set of key/value pairs without whitelist checks
+ *
+ * @param input Key/Value pairs of a module for validation
+ * @throws ConfigurationModulValidationException
+ */
+ abstract protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException;
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ abstract public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig);
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ abstract public String getKeyPrefix();
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ abstract public String getName();
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ abstract public List<Pattern> getAllAllowedPatterns();
+
+ protected List<Pattern> generatePatternsFromKeys(List<String> keys) {
+ List<Pattern> patterns = new ArrayList<Pattern>();
+ for (String key : keys) {
+ if (key != null) {
+ String patternKey;
+ if (key.contains(".")) {
+ patternKey = key.replaceAll("\\.", "\\\\.");
+ } else
+ patternKey = key;
+
+ patterns.add(Pattern.compile(patternKey));
+ } else
+ logger.info("Found NULL key in whitelist of task: " + getName());
+ }
+ return patterns;
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/IDynamicLoadableTaskValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/IDynamicLoadableTaskValidator.java
new file mode 100644
index 000000000..b1a38ab67
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/IDynamicLoadableTaskValidator.java
@@ -0,0 +1,39 @@
+/*
+ * 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.config.webgui.validation.task;
+
+import java.util.List;
+
+/**
+ * @author tlenz
+ *
+ */
+public interface IDynamicLoadableTaskValidator extends ITaskValidator {
+
+ /**
+ * Get a list of {IModuleValidator} prefixes in which this task should be added
+ *
+ * @return List of prefix keys
+ */
+ public List<String> getModulValidatorPrefix();
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/ITaskValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/ITaskValidator.java
new file mode 100644
index 000000000..f91440d3a
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/ITaskValidator.java
@@ -0,0 +1,79 @@
+/*
+ * 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.config.webgui.validation.task;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+
+/**
+ * @author tlenz
+ *
+ */
+public interface ITaskValidator {
+
+ /**
+ * Validate a specific set of key/value pairs (whitelist checks are included)
+ *
+ * @param input Key/Value pairs of a module for validation
+ * @throws ConfigurationModulValidationException
+ */
+ public void validate(Map<String, String> input) throws ConfigurationTaskValidationException;
+
+ /**
+ * Get task specific key/value pairs which must be added
+ * The return keys must be full qualified according to the MOA-ID key namespace definition
+ *
+ * @param input Set of key/value pairs
+ * @param keysToDelete List<String> of keys which should be deleted
+ * @param dbconfig {Configuration} to access the current used configuration
+ * @return {Map<String, String>} of key/value pairs which had to be added to configuration or null
+ */
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig);
+
+ /**
+ * Get a key prefix for with this validation task is sensitive
+ *
+ * @return keyPrefix {String} or null if no prefix is defined
+ */
+ public String getKeyPrefix();
+
+ /**
+ * Get the friendly name of this validation task
+ *
+ * @return friendlyName {String}
+ */
+ public String getName();
+
+ /**
+ * Get a list of keys which are white listed for this task
+ *
+ * @return {List<Pattern>} of keys which are allowed
+ */
+ public List<Pattern> getAllAllowedPatterns();
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralMOAIDConfigurationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralMOAIDConfigurationTask.java
new file mode 100644
index 000000000..ed02f8186
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralMOAIDConfigurationTask.java
@@ -0,0 +1,615 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GeneralMOAIDConfigurationTask extends AbstractTaskValidator implements ITaskValidator {
+
+ private static final Logger log = LoggerFactory.getLogger(GeneralMOAIDConfigurationTask.class);
+ public static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_NAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_TEST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_TEST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_REVOCATIONCHECKING, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_SERVICENAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_ENABLED, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#validate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ //check all keys against key whitelist
+
+
+ String check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("SAML1 SourceID contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID,
+ "SAML1 - SourceID",
+ LanguageHelper.getErrorString("validation.general.SAML1SourceID",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ log.info("Public URL Prefix is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX,
+ "Public URL Prefix",
+ LanguageHelper.getErrorString("validation.general.publicURLprefix.valid")));
+ }
+ } else {
+ log.info("PublicURL Prefix is empty.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX,
+ "Public URL Prefix",
+ LanguageHelper.getErrorString("validation.general.publicURLprefix.empty")));
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateNumber(check)) {
+ log.warn("Assertion Timeout is no number " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION,
+ "Timeout - Transaction",
+ LanguageHelper.getErrorString("validation.general.timeouts.assertion.valid",
+ new Object[] {ValidationHelper.getNotValidOAIdentifierCharacters()}) ));
+ }
+ }
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateNumber(check)) {
+ log.warn("MOASessionCreated Timeout is no number " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE,
+ "Timeout - SSO created",
+ LanguageHelper.getErrorString("validation.general.timeouts.moasessioncreated.valid",
+ new Object[] {ValidationHelper.getNotValidOAIdentifierCharacters()}) ));
+ }
+ }
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateNumber(check)) {
+ log.warn("MOASessionUpdated Timeout is no number " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE,
+ "Timeout - SSO updated",
+ LanguageHelper.getErrorString("validation.general.timeouts.moasessionupdated.valid",
+ new Object[] {ValidationHelper.getNotValidOAIdentifierCharacters()}) ));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.isValidOAIdentifier(check)) {
+ log.warn("CertStoreDirectory contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL,
+ "Certificate - CertStore Directory",
+ LanguageHelper.getErrorString("validation.general.certStoreDirectory.valid",
+ new Object[] {ValidationHelper.getNotValidOAIdentifierCharacters()}) ));
+ }
+ } else {
+ log.info("CertStoreDirectory is empty.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL,
+ "Certificate - CertStore Directory",
+ LanguageHelper.getErrorString("validation.general.certStoreDirectory.empty")));
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ log.info("Not valid Handy-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY,
+ "Default BKUs - Handy",
+ LanguageHelper.getErrorString("validation.general.bku.handy.valid")));
+ }
+ } else {
+ log.info("Empty Handy-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY,
+ "Default BKUs - Handy",
+ LanguageHelper.getErrorString("validation.general.bku.handy.empty")));
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ log.info("Not valid Online-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL,
+ "Default BKUs - Local",
+ LanguageHelper.getErrorString("validation.general.bku.local.valid")));
+ }
+ } else {
+ log.info("Empty Online-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL,
+ "Default BKUs - Local",
+ LanguageHelper.getErrorString("validation.general.bku.local.empty")));
+
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ log.info("Not valid Online-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE,
+ "Default BKUs - Online",
+ LanguageHelper.getErrorString("validation.general.bku.online.valid")));
+ }
+ } else {
+ log.info("Empty Online-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE,
+ "Default BKUs - Online",
+ LanguageHelper.getErrorString("validation.general.bku.online.empty")));
+
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ log.info("Not valid Online-Mandate Service URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL,
+ "Services - OVS",
+ LanguageHelper.getErrorString("validation.general.mandateservice.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MoaspssAuthTransformation");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM,
+ "MOA-SP - AuthBlocktransformation",
+ LanguageHelper.getErrorString("validation.general.moasp.auth.transformation.empty")));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("IdentityLinkSigners is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM,
+ "MOA-SP - AuthBlocktransformationx",
+ LanguageHelper.getErrorString("validation.general.moasp.auth.transformation.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)} )));
+
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MOA-SP/SS Authblock TrustProfile");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD,
+ "MOA-SP - TrustProfile AuthBlock",
+ LanguageHelper.getErrorString("validation.general.moasp.auth.trustprofile.empty")));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("Authblock TrustProfile is not valid: " +check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD,
+ "MOA-SP - TrustProfile AuthBlock",
+ LanguageHelper.getErrorString("validation.general.moasp.auth.trustprofile.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MOA-SP/SS IdentityLink TrustProfile");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD,
+ "MOA-SP - TrustProfile IdL",
+ LanguageHelper.getErrorString("validation.general.moasp.idl.trustprofile.empty")));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("IdentityLink TrustProfile is not valid: " +check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD,
+ "MOA-SP - TrustProfile IdL",
+ LanguageHelper.getErrorString("validation.general.moasp.idl.trustprofile.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_TEST, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MOA-SP/SS Test-Authblock TrustProfile");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD,
+ "MOA-SP - Test-TrustProfile AuthBlock",
+ LanguageHelper.getErrorString("validation.general.moasp.auth.trustprofile.test.empty")));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("Authblock Test-TrustProfile is not valid: " +check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD,
+ "MOA-SP - Test-TrustProfile AuthBlock",
+ LanguageHelper.getErrorString("validation.general.moasp.auth.trustprofile.test.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_TEST, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty MOA-SP/SS Test-IdentityLink TrustProfile");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD,
+ "MOA-SP - Test-TrustProfile IdL",
+ LanguageHelper.getErrorString("validation.general.moasp.idl.trustprofile.test.empty")));
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("IdentityLink Test-TrustProfile is not valid: " +check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD,
+ "MOA-SP - Test-TrustProfile IdL",
+ LanguageHelper.getErrorString("validation.general.moasp.idl.trustprofile.test.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty SLRequestTemplate Handy-BKU");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY,
+ "Default SL-Templates - Handy",
+ LanguageHelper.getErrorString("validation.general.slrequest.handy.empty")));
+ } else {
+ if (ValidationHelper.isNotValidIdentityLinkSigner(check)) {
+ log.info("SLRequestTemplate Handy-BKU is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY,
+ "Default SL-Templates - ",
+ LanguageHelper.getErrorString("validation.general.slrequest.handy.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty SLRequestTemplate local BKU");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL,
+ "Default SL-Templates - Local",
+ LanguageHelper.getErrorString("validation.general.slrequest.local.empty")));
+ } else {
+ if (ValidationHelper.isNotValidIdentityLinkSigner(check)) {
+ log.info("SLRequestTemplate local BKU is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL,
+ "Default SL-Templates - Local",
+ LanguageHelper.getErrorString("validation.general.slrequest.local.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty SLRequestTemplate Online-BKU");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE,
+ "Default SL-Templates - Online ",
+ LanguageHelper.getErrorString("validation.general.slrequest.online.empty")));
+ } else {
+ if (ValidationHelper.isNotValidIdentityLinkSigner(check)) {
+ log.info("SLRequestTemplate Online-BKU is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE,
+ "Default SL-Templates - Online",
+ LanguageHelper.getErrorString("validation.general.slrequest.online.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_SERVICENAME, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.info("SSO friendlyname is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_SERVICENAME,
+ "SSO - Servicename",
+ LanguageHelper.getErrorString("validation.general.sso.friendlyname.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, true)) {
+ log.info("SSO SpecialText is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT,
+ "SSO - AuthBlocktext",
+ LanguageHelper.getErrorString("validation.general.sso.specialauthtext.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(true)} )));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty SSO Target");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET,
+ "SSO - Target",
+ LanguageHelper.getErrorString("validation.general.sso.target.empty")));
+
+ } else {
+
+ //TODO: maybe store full bPK target (incl. prefix)
+ if (!ValidationHelper.isValidAdminTarget(check)) {
+
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("IdentificationNumber contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET,
+ "SSO - Target",
+ LanguageHelper.getErrorString("validation.general.sso.target.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+
+ String num = check.replaceAll(" ", "");
+
+ boolean isSSOTargetValid = false;
+ for (String allowedPrefix : MOAIDConfigurationConstants.ALLOWED_WBPK_PREFIXES) {
+ if (num.startsWith(allowedPrefix)) {
+ isSSOTargetValid = true;
+ break;
+ }
+ }
+
+ if (!isSSOTargetValid) {
+ log.info("Not valid SSO Target");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET,
+ "SSO - Target",
+ LanguageHelper.getErrorString("validation.general.sso.target.valid")));
+ }
+
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ log.info("SZRGW URL is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL,
+ "Services - SZR-GW URL",
+ LanguageHelper.getErrorString("validation.general.szrgw.url.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty TrustCACerts Directory");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL,
+ "Certificate - TrustStore Directory",
+ LanguageHelper.getErrorString("validation.general.trustedcacerts.empty")));
+
+ } else {
+ if (ValidationHelper.isNotValidIdentityLinkSigner(check)) {
+ log.info("Not valid TrustCACerts Directory");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL,
+ "Certificate - TrustStore Directory",
+ LanguageHelper.getErrorString("validation.general.trustedcacerts.valid",
+ new Object[] {ValidationHelper.getNotValidOAIdentifierCharacters()}) ));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64, getKeyPrefix()));
+ if (MiscUtil.isEmpty(check) || check.equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT)) {
+ log.info("AuthBlock Transformation file is empty");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64,
+ "AuthBlock - Transformation",
+ LanguageHelper.getErrorString("validation.general.slrequest.file.empty")));
+
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ String pubURLPrefix = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX, getKeyPrefix()));
+ if(pubURLPrefix.endsWith("/")) {
+ int length = pubURLPrefix.length();
+ pubURLPrefix = pubURLPrefix.substring(0, length-1);
+ newConfigValues.put(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX, pubURLPrefix);
+ log.debug("Change key: " + MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX
+ + " from value: " + input.get(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX)
+ + " to value: " + pubURLPrefix);
+ }
+
+ String ssoTarget = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET, getKeyPrefix()));
+ if (MiscUtil.isNotEmpty(ssoTarget)) {
+ String newTarget = null;
+ if (!ValidationHelper.isValidAdminTarget(ssoTarget)) {
+ String num = ssoTarget.replaceAll(" ", "");
+ String pre = null;
+ if (!num.startsWith(MOAIDConfigurationConstants.PREFIX_WPBK)) {
+ //add wbPK prefix
+ if (num.startsWith(MOAIDConfigurationConstants.IDENIFICATIONTYPE_FN)) {
+ num = num.substring(MOAIDConfigurationConstants.IDENIFICATIONTYPE_FN.length());
+
+ num = at.gv.egovernment.moa.util.StringUtils.deleteLeadingZeros(num);
+ pre = MOAIDConfigurationConstants.IDENIFICATIONTYPE_FN;
+ }
+
+ if (num.startsWith(MOAIDConfigurationConstants.IDENIFICATIONTYPE_ZVR)) {
+ num = num.substring(MOAIDConfigurationConstants.IDENIFICATIONTYPE_ZVR.length());
+ pre = MOAIDConfigurationConstants.IDENIFICATIONTYPE_ZVR;
+ }
+
+ if (num.startsWith(MOAIDConfigurationConstants.IDENIFICATIONTYPE_ERSB)){
+ num = num.substring(MOAIDConfigurationConstants.IDENIFICATIONTYPE_ERSB.length());
+ pre = MOAIDConfigurationConstants.IDENIFICATIONTYPE_ERSB;
+ }
+
+ newTarget = MOAIDConfigurationConstants.PREFIX_WPBK + pre + "+" + num;
+
+ } else {
+ //wbPK prefix is already added
+ newTarget = num;
+
+ }
+
+ newConfigValues.put(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET
+ , newTarget);
+ log.debug("Change key: " + MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET
+ + " from value: " + input.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET)
+ + " to value: " + newTarget);
+
+ } else {
+ //TODO: maybe store full bPK target (incl. prefix)
+ newConfigValues.put(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET
+ , ssoTarget);
+ log.debug("Change key: " + MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET
+ + " from value: " + input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET, getKeyPrefix()))
+ + " to value: " + ssoTarget);
+
+ }
+ }
+
+ //TODO: add AuthBlock transformation filename
+ String authBlockTransformation = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64, getKeyPrefix()));
+
+ String[] splittet = authBlockTransformation.split(",");
+ if (splittet.length > 1) {
+ newConfigValues.put(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64,
+ splittet[1]);
+ log.debug("Extract AuthBlock Transformation from GUI upload and add it to key: {}", MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64);
+
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "General MOA-ID Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralOpenIDConfigurationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralOpenIDConfigurationTask.java
new file mode 100644
index 000000000..35fed19a3
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralOpenIDConfigurationTask.java
@@ -0,0 +1,95 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GeneralOpenIDConfigurationTask extends AbstractTaskValidator {
+
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_ENABLED, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_LEGACY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "General OpenID Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralPVP2XConfigurationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralPVP2XConfigurationTask.java
new file mode 100644
index 000000000..a593b5461
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralPVP2XConfigurationTask.java
@@ -0,0 +1,236 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GeneralPVP2XConfigurationTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger logger = LoggerFactory.getLogger(GeneralPVP2XConfigurationTask.class);
+
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_ENABLED, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_FAMLIYNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_MAIL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_PHONE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ temp.add(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ public static final List<String> AllowedTypes= Arrays.asList(
+ "technical",
+ "support",
+ "administrative",
+ "billing",
+ "other");
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#validate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String check =
+ input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ logger.info("PVP2 IssuerName is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME,
+ "Service Name",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.issuername.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check =
+ input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ logger.info("PVP2 organisation display name is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME,
+ "Organisation - Full name",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.org.displayname.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ logger.info("PVP2 organisation name is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME,
+ "Organisation - Short name",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.org.name.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateURL(check)) {
+ logger.info("PVP2 organisation URL is not valid");
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL,
+ "Organisation - URL",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.org.url.valid")));
+ }
+ }
+
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ logger.info("PVP2 Contact: Company is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY,
+ "Contact - Company",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.contact.company.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ logger.info("PVP2 Contact: GivenName is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME,
+ "Contact - GivenName",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.contact.givenname.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_FAMLIYNAME, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ logger.info("PVP2 Contact: SureName is not valid: " + check);
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_FAMLIYNAME,
+ "Contact - FamilyName",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.contact.surename.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!AllowedTypes.contains(check)) {
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE,
+ "Contact - Type",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.contact.type.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_MAIL, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.isEmailAddressFormat(check)) {
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_MAIL,
+ "Contact - Mail",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.contact.mail.valid")));
+ }
+ }
+
+ check = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_PHONE, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validatePhoneNumber(check)) {
+ errors.add(new ValidationObjectIdentifier(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_PHONE,
+ "Contact - Phone",
+ LanguageHelper.getErrorString("validation.general.protocol.pvp2.contact.phone.valid")));
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "General PVP2X Configuration Task";
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralRevisionLogTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralRevisionLogTask.java
new file mode 100644
index 000000000..35f1e5228
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralRevisionLogTask.java
@@ -0,0 +1,152 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GeneralRevisionLogTask extends AbstractTaskValidator implements IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(GeneralRevisionLogTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.SERVICE_REVERSION;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "General - Reversion Logging Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ String eventCodes = input.get(MOAIDConfigurationConstants.GENERAL_REVERSION_LOGS_EVENTCODES);
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ newConfigValues.put(MOAIDConfigurationConstants.GENERAL_REVERSION_LOGS_EVENTCODES,
+ KeyValueUtils.normalizeCSVValueString(eventCodes));
+
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String eventCodes = input.get(MOAIDConfigurationConstants.GENERAL_REVERSION_LOGS_EVENTCODES);
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ String[] codes = eventCodes.split(",");
+ for (String el: codes) {
+ try {
+ Integer.parseInt(el.trim());
+
+ } catch (NumberFormatException e) {
+ log.info("Revisions-Log eventcode(s) are not valid", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_REVERSION_LOGS_EVENTCODES,
+ "Reversion - Logger Enabled",
+ LanguageHelper.getErrorString("error.oa.reversion.log.eventcodes")));
+ break;
+
+ }
+
+ }
+
+ }
+
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(
+ MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL
+ );
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralSTORKConfigurationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralSTORKConfigurationTask.java
new file mode 100644
index 000000000..c6086583a
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/GeneralSTORKConfigurationTask.java
@@ -0,0 +1,612 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.apache.commons.collections4.map.HashedMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class GeneralSTORKConfigurationTask extends AbstractTaskValidator implements
+ IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(GeneralSTORKConfigurationTask.class);
+
+public static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ temp.add(
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + ".\\S?." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY);
+
+ temp.add(
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + ".\\S?." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME);
+
+ temp.add(
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + ".\\S?." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_SUPPORT_XMLDSIG);
+
+ temp.add(
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + ".\\S?." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY);
+
+ temp.add(
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + ".\\S?." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL);
+
+ temp.add(
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+
+
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#validate(java.util.Map)
+ */
+ @Override
+ public void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+ Map<String, String> validatedCPeps = new HashedMap<String, String>();
+ List<String> validatedAttributes = new ArrayList<String>();
+
+ //validate C-PEPS entries
+ Map<String, String> cPepsList = KeyValueUtils.getSubSetWithPrefix(input,
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (!cPepsList.isEmpty()) {
+ Iterator<String> cPepsKeys = cPepsList.keySet().iterator();
+ while (cPepsKeys.hasNext()) {
+ String cpepsKey = cPepsKeys.next();
+ String index = KeyValueUtils.getParentKey(cpepsKey);
+
+ if (cpepsKey.endsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY)) {
+ String cc = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + "." + cpepsKey);
+ String url = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL);
+
+ log.trace("Extract C-PEPS for country: " + cc + " with URL:" + url);
+ if (!validatedCPeps.containsKey(cc)) {
+ if (MiscUtil.isNotEmpty(cc)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(cc, false)) {
+ log.warn("CPEPS config countrycode contains potentail XSS characters: " + cc);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + cpepsKey,
+ "STORK - CPEPS Country",
+ LanguageHelper.getErrorString("validation.stork.cpeps.cc",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ if(!cc.toLowerCase().matches("^[a-z][a-z]$")) {
+ log.warn("CPEPS config countrycode does not comply to ISO 3166-2 : " + cc);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + cpepsKey,
+ "STORK - CPEPS Country",
+ LanguageHelper.getErrorString("validation.stork.cpeps.cc",
+ new Object[] {cc})));
+ }
+ } else {
+ log.warn("CPEPS config countrycode is empty : " + cc);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + cpepsKey,
+ "STORK - CPEPS Country",
+ LanguageHelper.getErrorString("validation.stork.cpeps.empty",
+ new Object[] {cc})));
+ }
+
+ // check url
+ if (MiscUtil.isNotEmpty(url)) {
+ if (!ValidationHelper.validateURL(url)) {
+ log.info("CPEPS config URL is invalid : " + url);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL,
+ "STORK - CPEPS URL",
+ LanguageHelper.getErrorString("validation.stork.cpeps.url")));
+ }
+ } else {
+ log.warn("CPEPS config url is empty : " + url);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL,
+ "STORK - CPEPS URL",
+ LanguageHelper.getErrorString("validation.stork.cpeps.empty",
+ new Object[] {url})));
+
+ }
+ validatedCPeps.put(cc, url);
+
+ } else {
+ log.warn("Duplicated C-PEPS country with countryCode: " + cc + " found.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + cpepsKey,
+ "STORK - CPEPS Country",
+ LanguageHelper.getErrorString("validation.stork.cpeps.duplicate")));
+
+ }
+ }
+ }
+ }
+
+
+ // check qaa
+ try {
+ int qaa = Integer.valueOf(input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)));
+ if(1 > qaa && 4 < qaa) {
+ log.warn("QAA is out of range : " + qaa);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA,
+ "STORK - QAA Level",
+ LanguageHelper.getErrorString("validation.stork.qaa.outofrange",
+ new Object[] {qaa})));
+ }
+ } catch (Exception e) {
+ log.warn("STORK QAA can not parsed : " + input.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA));
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA,
+ "STORK - QAA Level",
+ LanguageHelper.getErrorString("validation.stork.qaa.outofrange",
+ new Object[] {input.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA)})));
+
+ }
+
+
+ // check attributes
+ Map<String, String> attributeList = KeyValueUtils.getSubSetWithPrefix(input,
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (!attributeList.isEmpty()) {
+ for(String key : attributeList.keySet()) {
+ if (key.endsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME)) {
+ String value = attributeList.get(key);
+ if (!validatedAttributes.contains(value)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(value, true)) {
+ log.warn("default attributes contains potentail XSS characters: " + value);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA,
+ "STORK - Attributes",
+ LanguageHelper.getErrorString("validation.stork.requestedattributes",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(true)})));
+ }
+ if(!value.toLowerCase().matches("^[a-z0-9]*$")) {
+ log.warn("default attributes do not match the requested format : " + value);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA,
+ "STORK - Attributes",
+ LanguageHelper.getErrorString("validation.stork.requestedattributes",
+ new Object[] {value})));
+ }
+ validatedAttributes.add(value);
+
+ } else {
+ log.warn("Duplicated STORK attribute: " + value + " found.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + key,
+ "STORK - Attributes",
+ LanguageHelper.getErrorString("validation.stork.requestedattributes")));
+
+ }
+ }
+ }
+
+ }
+
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ List<String> currentCEPSCountries = new ArrayList<String>();
+ List<String> currentAttributeNames = new ArrayList<String>();
+
+ List<String> cPESCountriesToAdd = new ArrayList<String>();
+ List<String> attributeNamesToAdd = new ArrayList<String>();
+ List<String> cPESCountriesToDelete = new ArrayList<String>();
+ List<String> attributeNamesToDelete = new ArrayList<String>();
+
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ try {
+ //load current configuration
+ String[] currentCPEPSKeys = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY);
+ if (currentCPEPSKeys != null) {
+ for (String el : currentCPEPSKeys) {
+ String cc = dbconfig.getStringValue(el);
+ if (MiscUtil.isNotEmpty(cc))
+ currentCEPSCountries.add(cc);
+
+ else {
+ //if empty, mark do delete
+ String keyToDelete = KeyValueUtils.getParentKey(el) + ".*";
+ log.trace("Mark C-PEPS key: {} for deleting.", keyToDelete);
+ keysToDelete.add(keyToDelete);
+ }
+ }
+ cPESCountriesToDelete.addAll(currentCEPSCountries);
+ }
+
+ String[] currentAttributeKeys = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME);
+ if (currentAttributeKeys != null) {
+ for (String el : currentAttributeKeys) {
+ String cc = dbconfig.getStringValue(el);
+ if (MiscUtil.isNotEmpty(cc))
+ currentAttributeNames.add(cc);
+
+ else {
+ //if empty, mark do delete
+ String keyToDelete = KeyValueUtils.getParentKey(el) + ".*";
+ log.trace("Mark empty STORK attribute key: {} for deleting.", keyToDelete);
+ keysToDelete.add(keyToDelete);
+
+ }
+ }
+ attributeNamesToDelete.addAll(currentAttributeNames);
+ }
+
+ //parse new configuration
+ Map<String, String> cPepsList = KeyValueUtils.getSubSetWithPrefix(input,
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (!cPepsList.isEmpty()) {
+ Iterator<String> cPepsKeys = cPepsList.keySet().iterator();
+ while (cPepsKeys.hasNext()) {
+ String cpepsKey = cPepsKeys.next();
+
+ if (cpepsKey.endsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY)) {
+ String cc = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + "." + cpepsKey);
+
+ //check new configuration against current configuration
+ if (currentCEPSCountries.contains(cc)) {
+ log.trace("C-PEPS for country {} is already in configuration", cc);
+ cPESCountriesToDelete.remove(cc);
+
+ } else {
+ if (MiscUtil.isNotEmpty(cc)) {
+ log.trace("C-PEPS for country {} must be added to Service configurations", cc);
+ cPESCountriesToAdd.add(cc);
+
+ }
+ }
+ }
+ }
+ }
+
+ Map<String, String> attributeList = KeyValueUtils.getSubSetWithPrefix(input,
+ KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL));
+ if (!attributeList.isEmpty()) {
+ Iterator<String> attributeKeys = attributeList.keySet().iterator();
+ while (attributeKeys.hasNext()) {
+ String attributeKey = attributeKeys.next();
+
+ if (attributeKey.endsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME)) {
+ String attributeName = input.get(KeyValueUtils.removePrefixFromKey(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST, MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL)
+ + "." + attributeKey);
+
+ //check new configuration against current configuration
+ if (currentAttributeNames.contains(attributeName)) {
+ log.trace("STORK Attribute {} is already in configuration", attributeName);
+ attributeNamesToDelete.remove(attributeName);
+
+ } else {
+ if (MiscUtil.isNotEmpty(attributeName)) {
+ log.trace("STORK Attribute {} must be added to Service configurations", attributeName);
+ attributeNamesToAdd.add(attributeName);
+
+ } }
+ }
+ }
+ }
+
+ //add new key/value pairs to online Applications
+ if (!cPESCountriesToAdd.isEmpty() || !attributeNamesToAdd.isEmpty()) {
+ String[] currentOAServices = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+
+ for(String el : currentOAServices) {
+ String oaKey = KeyValueUtils.getParentKey(el);
+ String[] oaCPEPSList = dbconfig.findConfigurationId(
+ oaKey + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE);
+
+ int nextListCounter = KeyValueUtils.findNextFreeListCounter(oaCPEPSList, oaKey + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST);
+
+ //get all C-PEPS countries from OA
+ List<String> actuallyAddedOACPEPS = new ArrayList<String>();
+ for (String oaCPEPS : oaCPEPSList) {
+ String oaCC = dbconfig.getStringValue(oaCPEPS);
+ if (MiscUtil.isNotEmpty(oaCC) && !actuallyAddedOACPEPS.contains(oaCC))
+ actuallyAddedOACPEPS.add(oaCC);
+
+ }
+
+ for (String cc : cPESCountriesToAdd) {
+ if (!actuallyAddedOACPEPS.contains(cc)) {
+ log.debug("Add key: "
+ + oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(nextListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE
+ + " and value: " + cc + " to configuration.");
+ newConfigValues.put(oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(nextListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE
+ , cc);
+
+ log.debug("Add key: "
+ + oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(nextListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED
+ + " and value: true" + " to configuration.");
+ newConfigValues.put(oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(nextListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED
+ , String.valueOf(true));
+
+ nextListCounter++;
+
+ } else {
+ log.info("Configuration is maybe inconsistend! New C-PEPS country: "
+ + cc + " is already added on Service: " + oaKey);
+
+ }
+ }
+
+ String[] oaAttributeList = dbconfig.findConfigurationId(
+ oaKey + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME);
+
+ int nextAttributeListCounter = KeyValueUtils.findNextFreeListCounter(oaAttributeList, oaKey + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST);
+
+ //get all STORK attributes from OA
+ List<String> actuallyAddedOAAttributes = new ArrayList<String>();
+ for (String oaAttr : oaAttributeList) {
+ String oaAttrName = dbconfig.getStringValue(oaAttr);
+ if (MiscUtil.isNotEmpty(oaAttrName) && !actuallyAddedOAAttributes.contains(oaAttrName))
+ actuallyAddedOAAttributes.add(oaAttrName);
+
+ }
+
+ for (String attrName : attributeNamesToAdd) {
+ if (!actuallyAddedOAAttributes.contains(attrName)) {
+ log.debug("Add key: "
+ + oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(nextAttributeListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME
+ + " and value: " + attrName + " to configuration.");
+ newConfigValues.put(oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(nextAttributeListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME
+ , attrName);
+
+ log.debug("Add key: "
+ + oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(nextAttributeListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED
+ + " and value: true" + " to configuration.");
+ newConfigValues.put(oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(nextAttributeListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED
+ , String.valueOf(true));
+
+ log.debug("Add key: "
+ + oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(nextAttributeListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY
+ + " and value: false" + " to configuration.");
+ newConfigValues.put(oaKey
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(nextAttributeListCounter)
+ + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY
+ , String.valueOf(false));
+
+ } else {
+ log.info("Configuration is maybe inconsistend! New STORK attribute: "
+ + attrName + " is already added on Service: " + oaKey);
+
+ }
+ }
+ }
+ }
+
+ //delete unused key/value pairs from online applications
+ if (!cPESCountriesToDelete.isEmpty()) {
+ for (String el : cPESCountriesToDelete) {
+ //mark general config to delete
+ String[] generalCPEPS = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY);
+
+ for (String ccKey : generalCPEPS) {
+ String storedCC = dbconfig.getStringValue(ccKey);
+ if (el.equals(storedCC)) {
+ //delete C-PEPS
+ String keyToDelete = KeyValueUtils.getParentKey(ccKey) + ".*";
+ log.debug("Mark key: " + keyToDelete + " for deleting.");
+ keysToDelete.add(keyToDelete);
+
+ }
+ }
+
+ //mark service key to delete
+ String[] servicesOAs = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE);
+
+ for (String ccKey : servicesOAs) {
+ String storedCC = dbconfig.getStringValue(ccKey);
+ if (el.equals(storedCC)) {
+ //delete C-PEPS
+ String keyToDelete = KeyValueUtils.getParentKey(ccKey) + ".*";
+ log.debug("Mark key: " + keyToDelete + " for deleting.");
+ keysToDelete.add(keyToDelete);
+
+ }
+ }
+ }
+ }
+ if (!attributeNamesToDelete.isEmpty()) {
+ for (String el : attributeNamesToDelete) {
+ //mark general config to delete
+ String[] generalAttributes = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME);
+
+ for (String attrKey : generalAttributes) {
+ String storedAttr = dbconfig.getStringValue(attrKey);
+ if (el.equals(storedAttr)) {
+ //delete C-PEPS
+ String keyToDelete = KeyValueUtils.getParentKey(attrKey) + ".*";
+ log.debug("Mark key: " + keyToDelete + " for deleting.");
+ keysToDelete.add(keyToDelete);
+
+ }
+ }
+
+
+ //mark service key to delete
+ String[] servicesOAs = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME);
+
+ for (String attrKey : servicesOAs) {
+ String storedAttr = dbconfig.getStringValue(attrKey);
+ if (el.equals(storedAttr)) {
+ //delete C-PEPS
+ String keyToDelete = KeyValueUtils.getParentKey(attrKey) + ".*";
+ log.debug("Mark key: " + keyToDelete + " for deleting.");
+ keysToDelete.add(keyToDelete);
+
+ }
+ }
+ }
+ }
+
+ } catch (ConfigurationException e) {
+ log.error("Configuration is not accessable!", e);
+
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.GENERAL_AUTH_STORK;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "General STORK Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationInformationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationInformationTask.java
new file mode 100644
index 000000000..8e8feefe0
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationInformationTask.java
@@ -0,0 +1,246 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesAuthenticationInformationTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesAuthenticationInformationTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - Authentication Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ //normalize CSV encoded value string of mandate profiles
+ String mandateProfiles = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES);
+ if (MiscUtil.isNotEmpty(mandateProfiles)) {
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES,
+ KeyValueUtils.normalizeCSVValueString(mandateProfiles));
+
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ //Check BKU URLs
+ String check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY);
+ if (MiscUtil.isNotEmpty(check) &&
+ !ValidationHelper.validateURL(check)) {
+ log.info("Not valid Handy-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY,
+ "BKU - Handy",
+ LanguageHelper.getErrorString("validation.general.bku.handy.valid")));
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL);
+ if (MiscUtil.isNotEmpty(check) &&
+ !ValidationHelper.validateURL(check)) {
+ log.info("Not valid Online-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL,
+ "BKU - Local",
+ LanguageHelper.getErrorString("validation.general.bku.local.valid")));
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE);
+ if (MiscUtil.isNotEmpty(check) &&
+ !ValidationHelper.validateURL(check)) {
+ log.info("Not valid Online-BKU URL");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE,
+ "BKU - Online",
+ LanguageHelper.getErrorString("validation.general.bku.online.valid")));
+ }
+
+ //check KeyBoxIdentifier
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_KEYBOXIDENTIFIER);
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty KeyBoxIdentifier");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE,
+ "BKU - KeyBoxIdentifier",
+ LanguageHelper.getErrorString("validation.general.keyboxidentifier.empty")));
+
+ } else {
+ if (!MOAIDConfigurationConstants.ALLOWED_KEYBOXIDENTIFIER.contains(check)) {
+ log.info("Not valid KeyBoxIdentifier " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE,
+ "BKU - KeyBoxIdentifier",
+ LanguageHelper.getErrorString("validation.general.keyboxidentifier.valid")));
+ }
+ }
+
+ //check LegacyMode SLTemplates
+ String isLegacyModeActive = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_LEGACY);
+ if (MiscUtil.isNotEmpty(isLegacyModeActive) && Boolean.parseBoolean(isLegacyModeActive)) {
+ if (MiscUtil.isEmpty(input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE)) &&
+ MiscUtil.isEmpty(input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE)) &&
+ MiscUtil.isEmpty(input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE)) ) {
+ log.info("Empty OA-specific SecurityLayer Templates");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_LEGACY,
+ "BKU - SecurityLayer Templates",
+ LanguageHelper.getErrorString("validation.general.sltemplates.empty")));
+
+ } else {
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE);
+ if (MiscUtil.isNotEmpty(check) &&
+ ValidationHelper.isNotValidIdentityLinkSigner(check) ) {
+ log.info("First OA-specific SecurityLayer Templates is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE,
+ "BKU - 1. SecurityLayer Templates",
+ LanguageHelper.getErrorString("validation.general.sltemplate1.valid")));
+ }
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE);
+ if (MiscUtil.isNotEmpty(check) &&
+ ValidationHelper.isNotValidIdentityLinkSigner(check) ) {
+ log.info("Second OA-specific SecurityLayer Templates is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE,
+ "BKU - 2. SecurityLayer Templates",
+ LanguageHelper.getErrorString("validation.general.sltemplate2.valid")));
+ }
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE);
+ if (MiscUtil.isNotEmpty(check) &&
+ ValidationHelper.isNotValidIdentityLinkSigner(check) ) {
+ log.info("Third OA-specific SecurityLayer Templates is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE,
+ "BKU - 3. SecurityLayer Templates",
+ LanguageHelper.getErrorString("validation.general.sltemplate3.valid")));
+ }
+ }
+ }
+
+ //check Mandate Profiles
+ String checkUseMandate = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_USE);
+ if (MiscUtil.isNotEmpty(checkUseMandate) && Boolean.parseBoolean(checkUseMandate)) {
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES);
+ if (ValidationHelper.containsPotentialCSSCharacter(check, true)) {
+ log.warn("MandateProfiles contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES,
+ "Mandates - Profiles",
+ LanguageHelper.getErrorString("validation.general.mandate.profiles",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(true)}) ));
+ }
+
+ }
+
+ String isTestCredentialsActive = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_ENABLED);
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_OIDs);
+ if (MiscUtil.isNotEmpty(isTestCredentialsActive) &&
+ Boolean.parseBoolean(isTestCredentialsActive) &&
+ MiscUtil.isNotEmpty(check)) {
+ String[] oids = check.split(",");
+ for (String el : oids) {
+ if (!el.startsWith(MOAIDConfigurationConstants.TESTCREDENTIALROOTOID)) {
+ log.warn("Test credential OID does not start with test credential root OID");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_OIDs,
+ "Test-Identities - allowed OIDs",
+ LanguageHelper.getErrorString("validation.general.testcredentials.oid.valid",
+ new Object[] {el}) ));
+ }
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationSTORKTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationSTORKTask.java
new file mode 100644
index 000000000..087334c4b
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesAuthenticationSTORKTask.java
@@ -0,0 +1,301 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesAuthenticationSTORKTask extends AbstractTaskValidator implements IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesAuthenticationSTORKTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - General Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ //C-PEPS
+ try {
+ //search all actually configured C-PEPS
+ String[] cPepsKeys = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY);
+ List<String> cPepsCountries = new ArrayList<String>();
+ for (String el : cPepsKeys) {
+ String country = dbconfig.getStringValue(el);
+ if (MiscUtil.isNotEmpty(el))
+ cPepsCountries.add(country);
+
+ }
+
+ //check SERVICE STORK countries against C-PEPS configuration
+ Map<String, String> GUICountries = KeyValueUtils.getSubSetWithPrefix(input, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST);
+ Iterator<Entry<String, String>> GUICountriesInterator = GUICountries.entrySet().iterator();
+ while (GUICountriesInterator.hasNext()) {
+ Entry<String, String> entry = GUICountriesInterator.next();
+ if (entry.getKey().endsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE)) {
+
+ if (cPepsCountries.contains(entry.getValue())) {
+ //Service contains C-PEPS
+ log.trace("Service contains C-PEPS with countryCode: " + entry.getValue());
+ cPepsCountries.remove(entry.getValue());
+
+ } else {
+ //Service contains countryCode which is not a C-PEPS --> remove country code from service
+ log.debug("No C-PEPS with service countryCode: " + entry.getValue()
+ + " Remove countryCode from service.");
+ String index = KeyValueUtils.getParentKey(entry.getKey());
+ if (MiscUtil.isNotEmpty(index)) {
+ keysToDelete.add(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + index + "*");
+
+ } else
+ log.warn("Can not remove countryCode from service. Suspect key: "
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + entry.getKey());
+
+ }
+ }
+ }
+
+ // add new C-PEPS to service
+ int nextFreeIndex = KeyValueUtils.findNextFreeListCounter(GUICountries.keySet(), new String());
+ for (String el : cPepsCountries) {
+ log.debug("Add new C-PEPS: " + el + " to service with key: "
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + nextFreeIndex);
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + nextFreeIndex + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE,
+ el);
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + nextFreeIndex + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED,
+ String.valueOf(true));
+ nextFreeIndex++;
+ }
+
+
+ } catch (ConfigurationException e) {
+ log.error("Can not access configuration.", e);
+
+ }
+
+
+ //STORK attributes
+ try {
+ //search all actually configured C-PEPS
+ String[] attributeKeys = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + ".%."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME);
+ List<String> attributeNames = new ArrayList<String>();
+ for (String el : attributeKeys) {
+ String country = dbconfig.getStringValue(el);
+ if (MiscUtil.isNotEmpty(el))
+ attributeNames.add(country);
+
+ }
+
+ //check SERVICE STORK countries against C-PEPS configuration
+ Map<String, String> GUIAttributes = KeyValueUtils.getSubSetWithPrefix(input, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST);
+ Iterator<Entry<String, String>> GUIAttributesInterator = GUIAttributes.entrySet().iterator();
+ while (GUIAttributesInterator.hasNext()) {
+ Entry<String, String> entry = GUIAttributesInterator.next();
+ if (entry.getKey().endsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME)) {
+
+ if (attributeNames.contains(entry.getValue())) {
+ //Service contains C-PEPS
+ log.trace("Service contains STORK attribute with name: " + entry.getValue());
+ attributeNames.remove(entry.getValue());
+
+ } else {
+ //Service contains countryCode which is not a C-PEPS --> remove country code from service
+ log.debug("No STORK attribute with service attributeName: " + entry.getValue()
+ + " Remove STORK attribte from service.");
+ String index = KeyValueUtils.getParentKey(entry.getKey());
+ if (MiscUtil.isNotEmpty(index)) {
+ keysToDelete.add(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "*");
+
+ } else
+ log.warn("Can not remove STORK attribute from service. Suspect key: "
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + entry.getKey());
+
+ }
+ }
+ }
+
+ // add new C-PEPS to service
+ int nextFreeIndex = KeyValueUtils.findNextFreeListCounter(GUIAttributes.keySet(), new String());
+ for (String el : attributeNames) {
+ log.debug("Add new STORK attribute: " + el + " to service with key: "
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + nextFreeIndex);
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + nextFreeIndex + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME,
+ el);
+
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + nextFreeIndex + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED,
+ String.valueOf(false));
+
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + nextFreeIndex + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY,
+ String.valueOf(false));
+
+ nextFreeIndex++;
+ }
+
+
+ } catch (ConfigurationException e) {
+ log.error("Can not access configuration.", e);
+
+ }
+
+
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ // check qaa
+ String qaaString = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL);
+ if (MiscUtil.isNotEmpty(qaaString)) {
+ try {
+ int qaa = Integer.parseInt(qaaString);
+ if(1 > qaa && 4 < qaa) {
+ log.warn("QAA is out of range : " + qaa);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL,
+ "STORK - minimal QAA level",
+ LanguageHelper.getErrorString("validation.stork.qaa.outofrange",
+ new Object[] {qaa})));
+ }
+
+ } catch (NumberFormatException e) {
+ log.warn("QAA level is not a number: " + qaaString);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL,
+ "STORK - minimal QAA level",
+ LanguageHelper.getErrorString("validation.stork.qaa.outofrange",
+ new Object[] {qaaString})));
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA
+ );
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java
new file mode 100644
index 000000000..ca1109aa1
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java
@@ -0,0 +1,426 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.GUIDataParser;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.Base64Utils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesBKUSelectionTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesBKUSelectionTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "auth.templates";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - BKU-Selection Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ String bkuSelectTemplateUploadedFileName = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_FILENAME);
+ if (MiscUtil.isNotEmpty(bkuSelectTemplateUploadedFileName)) {
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW, bkuSelectTemplateUploadedFileName);
+
+ }
+
+ String sendAssertionTemplateUploadedFileName = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_FILENAME);
+ if (MiscUtil.isNotEmpty(sendAssertionTemplateUploadedFileName)) {
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW, sendAssertionTemplateUploadedFileName);
+
+ }
+
+ String bkuSelectionFileUpload = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA);
+ String bkuSelectionFile = GUIDataParser.getBase64ContentFromGUIUpload(bkuSelectionFileUpload);
+ if (bkuSelectionFile != null)
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA,
+ bkuSelectionFile);
+
+ String sendAssertionTemplateUpload = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA);
+ String sendAssertionTemplate = GUIDataParser.getBase64ContentFromGUIUpload(sendAssertionTemplateUpload);
+ if (sendAssertionTemplate != null)
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA,
+ sendAssertionTemplate);
+
+ String deleteBKUSelectionTemplate = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DELETE);
+ if (MiscUtil.isNotEmpty(deleteBKUSelectionTemplate) && Boolean.parseBoolean(deleteBKUSelectionTemplate)) {
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA,
+ null);
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DELETE, String.valueOf(false));
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW, null);
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_FILENAME, null);
+
+ }
+
+ String deleteSendAssertionTemplate = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DELETE);
+ if (MiscUtil.isNotEmpty(deleteSendAssertionTemplate) && Boolean.parseBoolean(deleteSendAssertionTemplate)) {
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA,
+ null);
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DELETE, String.valueOf(false));
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_PREVIEW, null);
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_FILENAME, null);
+ }
+
+
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+
+ //validate aditionalAuthBlockText
+ String check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCKTEXT);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("AditionalAuthBlockText contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCKTEXT,
+ "AuthBlock - Addition AuthBlocktext",
+ LanguageHelper.getErrorString("validation.general.aditionalauthblocktext",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ }
+
+ //validate BKU selection template
+ String bkuSelectTemplate = null;
+ String bkuSelectionFileUpload = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA);
+ if (MiscUtil.isNotEmpty(bkuSelectionFileUpload) &&
+ !bkuSelectionFileUpload.equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT) ) {
+ String bkuSelectTemplateFileName = "unknown";
+ try {
+ String bkuSelectTemplateUploadedFileName = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_FILENAME);
+ if (MiscUtil.isNotEmpty(bkuSelectTemplateUploadedFileName)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(bkuSelectTemplateUploadedFileName, false)) {
+ log.info("BKU Selection Filename is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_FILENAME,
+ "Templates - BKU Selection Filename",
+ LanguageHelper.getErrorString("validation.general.bkuselection.filename.valid")));
+
+ } else
+ bkuSelectTemplateFileName = bkuSelectTemplateUploadedFileName;
+
+ } else {
+ String bkuSelectTemplatePreView = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW);
+ if (MiscUtil.isNotEmpty(bkuSelectTemplatePreView))
+ bkuSelectTemplateFileName = bkuSelectTemplatePreView;
+
+ }
+
+ bkuSelectTemplate = GUIDataParser.getBase64ContentFromGUIUpload(bkuSelectionFileUpload);
+ if (bkuSelectTemplate == null) {
+ log.info("BKU Selection Template is not decodeable.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA,
+ "Templates - BKU Selection",
+ LanguageHelper.getErrorString("validation.general.bkuselection.file.valid",
+ new Object[] {bkuSelectTemplateFileName})));
+
+ }
+
+ } catch (Exception e) {
+ log.info("BKU Selection Template is not decodeable.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA,
+ "Templates - BKU Selection",
+ LanguageHelper.getErrorString("validation.general.bkuselection.file.valid",
+ new Object[] {bkuSelectTemplateFileName})));
+
+ }
+
+ }
+
+ //validate send-assertion template
+ String sendAssertionTemplate = null;
+ String sendAssertionFileUpload = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA);
+ if (MiscUtil.isNotEmpty(sendAssertionFileUpload) &&
+ !sendAssertionFileUpload.equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT)) {
+ String sendAssertionTemplateFileName = "unknown";
+ try {
+ String sendAssertionTemplateUploadedFileName = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_FILENAME);
+ if (MiscUtil.isNotEmpty(sendAssertionTemplateUploadedFileName)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(sendAssertionTemplateUploadedFileName, false)) {
+ log.info("Send Assertion Filename is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_FILENAME,
+ "Templates - Send Assertion Filename",
+ LanguageHelper.getErrorString("validation.general.sendassertion.filename.valid")));
+
+ } else
+ sendAssertionTemplateFileName = sendAssertionTemplateUploadedFileName;
+
+ } else {
+ String sendAssertionTemplatePreView = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_PREVIEW);
+ if (MiscUtil.isNotEmpty(sendAssertionTemplatePreView))
+ sendAssertionTemplateFileName = sendAssertionTemplatePreView;
+
+ }
+
+ sendAssertionTemplate = GUIDataParser.getBase64ContentFromGUIUpload(sendAssertionFileUpload);
+ if (sendAssertionTemplate == null) {
+ log.info("Send Assertion Template is not decodeable.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA,
+ "Templates - Send Assertion",
+ LanguageHelper.getErrorString("validation.general.sendassertion.file.valid",
+ new Object[] {sendAssertionTemplateFileName})));
+
+ }
+
+ } catch (Exception e) {
+ log.info("Send Assertion Template is not decodeable.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA,
+ "Templates - Send Assertion",
+ LanguageHelper.getErrorString("validation.general.sendassertion.file.valid",
+ new Object[] {sendAssertionTemplateFileName})));
+
+ }
+
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("BKUSelectionBackGroundColor is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR,
+ "Templates - Background Color",
+ LanguageHelper.getErrorString("validation.general.form.color.background")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("BKUSelectionFrontColor is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR,
+ "Templates - Front Color",
+ LanguageHelper.getErrorString("validation.general.form.color.front")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("HeaderBackGroundColor is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR,
+ "Templates - Header Background-Color",
+ LanguageHelper.getErrorString("validation.general.form.header.color.back")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("HeaderFrontColor is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR,
+ "Templates - Header Front-Color",
+ LanguageHelper.getErrorString("validation.general.form.header.color.front")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("HeaderText contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT,
+ "Templates - Header Text",
+ LanguageHelper.getErrorString("validation.general.form.header.text",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("ButtonBackGroundColor is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR,
+ "Templates - Button Background-Color",
+ LanguageHelper.getErrorString("validation.general.form.button.color.back")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("ButtonBackGroundColorFocus is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS,
+ "Templates - Button Background-Color on Focus",
+ LanguageHelper.getErrorString("validation.general.form.button.color.back.focus")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!check.startsWith("#"))
+ check = "#" + check;
+
+ if (!ValidationHelper.isValidHexValue(check)) {
+ log.warn("ButtonFrontColor is not a valid hex value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR,
+ "Templates - Button Front-Color",
+ LanguageHelper.getErrorString("validation.general.form.button.color.front")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!MOAIDConfigurationConstants.ALLOWED_REDIRECTTARGETNAMES.contains(check)) {
+ log.warn("AppletRedirectTarget has not valid value " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET,
+ "Templates - Applet Redirect-Target",
+ LanguageHelper.getErrorString("validation.general.form.appletredirecttarget")));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, true)) {
+ log.warn("FontType contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE,
+ "Templates - Font Type",
+ LanguageHelper.getErrorString("validation.general.form.fonttype",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(true)}) ));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateNumber(check)) {
+ log.warn("Applet height "+ check + " is no valid number");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT,
+ "Templates - Applet Height",
+ LanguageHelper.getErrorString("validation.general.form.applet.height",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(true)}) ));
+ }
+ }
+
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.validateNumber(check)) {
+ log.warn("Applet width "+ check + " is no valid number");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH,
+ "Templates - Applet Width",
+ LanguageHelper.getErrorString("validation.general.form.applet.width",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(true)}) ));
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesGeneralInformationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesGeneralInformationTask.java
new file mode 100644
index 000000000..86d047c74
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesGeneralInformationTask.java
@@ -0,0 +1,215 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesGeneralInformationTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesGeneralInformationTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ private static MOAIDConfiguration dbconfig;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+
+ @Autowired
+ public void setDatabaseConfiguration(MOAIDConfiguration config) {
+ dbconfig = config;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - General Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ if (dbconfig == null) {
+ throw new ConfigurationTaskValidationException(
+ new ValidationObjectIdentifier("internal", "Internal Error", "Configuration is not readable!"));
+
+ }
+
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String check = input.get(MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("OAFriendlyName contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME,
+ "FriendlyName",
+ LanguageHelper.getErrorString("validation.general.oafriendlyname.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+ }
+ } else {
+ log.info("OA friendlyName is empty");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME,
+ "FriendlyName",
+ LanguageHelper.getErrorString("validation.general.oafriendlyname.empty")));
+ }
+
+ String isBusinessService = input.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE);
+ if (MiscUtil.isEmpty(isBusinessService)) {
+ log.info("OA businessservice flag is empty");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE,
+ "BusinessService",
+ LanguageHelper.getErrorString("validation.general.businessservice.empty")));
+
+ }
+
+ String servicePrefixId = input.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES);
+ if (MiscUtil.isNotEmpty(servicePrefixId)) {
+ String uniqueServiceID = input.get(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ if (MiscUtil.isEmpty(uniqueServiceID)) {
+ log.info("Empty unique service identifier");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER,
+ "Unique Identifier",
+ LanguageHelper.getErrorString("validation.general.oaidentifier.empty")));
+
+ } else {
+ if (!ValidationHelper.validateURL(uniqueServiceID)) {
+ log.warn("Unique serice identifier is not a valid URL: " + uniqueServiceID);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER,
+ "Unique Identifier",
+ LanguageHelper.getErrorString("validation.general.oaidentifier.valid")));
+
+ } else {
+ //check uniqueness of service identifier
+ try {
+ String[] allServiceKeys = dbconfig.findConfigurationId(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ +".%."
+ + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ if (allServiceKeys != null) {
+ List<String> foundKeys = new ArrayList<String>();
+ for (String elKey : allServiceKeys) {
+ String elValue = dbconfig.getStringValue(elKey);
+ if (uniqueServiceID.startsWith(elValue) ||
+ (elValue != null && elValue.startsWith(uniqueServiceID))) {
+ log.debug("Found service with key: " + elKey
+ + " and uniqueID: " + elValue
+ + " which maches to edited service with uniqueID:"
+ + uniqueServiceID);
+ foundKeys.add(elKey);
+
+ }
+
+ }
+ if ((foundKeys.size() > 1) ||
+ ((foundKeys.size() == 1) && !foundKeys.get(0).startsWith(servicePrefixId) )) {
+ log.info("The service identifier is not unique");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER,
+ "Unique Identifier",
+ LanguageHelper.getErrorString("validation.general.oaidentifier.notunique")));
+
+ }
+ }
+
+ } catch (ConfigurationException e) {
+ log.error("Configuration not readable!", e);
+ new ValidationObjectIdentifier("internal", "Internal Error", "Configuration is not readable!");
+
+ }
+ }
+ }
+
+ } else {
+ throw new ConfigurationTaskValidationException(
+ new ValidationObjectIdentifier("internal", "Internal Error", "No MOA-ID service prefix! Can not check uniqueness of service configuration."));
+
+ }
+
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesInterfederationIDPTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesInterfederationIDPTask.java
new file mode 100644
index 000000000..8c3475d8b
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesInterfederationIDPTask.java
@@ -0,0 +1,116 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesInterfederationIDPTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesInterfederationIDPTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "interfederation";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - Interfederation IDP";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String queryURL = input.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_ATTRIBUTQUERY_URL);
+ if (MiscUtil.isNotEmpty(queryURL)) {
+ if (!ValidationHelper.validateURL(queryURL)) {
+ log.info("AttributeQuery URL is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_ATTRIBUTQUERY_URL,
+ "Attribute Querry URL",
+ LanguageHelper.getErrorString("validation.interfederation.moaidp.queryurl.valid")));
+
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesPVPGatewayTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesPVPGatewayTask.java
new file mode 100644
index 000000000..2e9dd1c30
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesPVPGatewayTask.java
@@ -0,0 +1,121 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesPVPGatewayTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesPVPGatewayTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "interfederation";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - PVP Gateway Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String entityID = input.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER);
+ if (MiscUtil.isNotEmpty(entityID)) {
+ if (!ValidationHelper.validateURL(entityID)) {
+ log.info("PVP gateway EntityID is not valid");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER,
+ "EntityID of PVP Portal ",
+ LanguageHelper.getErrorString("validation.interfederation.gateway.entityID.valid")));
+
+ }
+
+ } else
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER,
+ "EntityID of PVP Portal ",
+ LanguageHelper.getErrorString("validation.interfederation.gateway.entityID.empty")));
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolOpenIDTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolOpenIDTask.java
new file mode 100644
index 000000000..51f93adca
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolOpenIDTask.java
@@ -0,0 +1,152 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesProtocolOpenIDTask extends AbstractTaskValidator implements IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesProtocolOpenIDTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - Protocol OpenID-Connect Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ //TODO: check secret
+ String guiClientID = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTID);
+ String guiClientSecret = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTSECRET);
+
+ if (MiscUtil.isEmpty(guiClientSecret)) {
+ log.info("OpenID Connect client-secret is empty --> generate a new secrete.");
+ guiClientSecret = UUID.randomUUID().toString();
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTSECRET,
+ guiClientSecret);
+
+ }
+
+ if (MiscUtil.isEmpty(guiClientID)) {
+ log.info("OpenID Connect ClientID is empty --> Set ClientID to unique identifier.");
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTID,
+ input.get(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER));
+
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String redirectURL = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL);
+ // validate redirectUri
+ if (StringUtils.isNotEmpty(redirectURL) && !ValidationHelper.validateURL(redirectURL)) {
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL,
+ "OpenID - Redirect URL",
+ LanguageHelper.getErrorString("error.oa.oauth.redirecturi")));
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA
+ );
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolPVP2XTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolPVP2XTask.java
new file mode 100644
index 000000000..c55c35da0
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolPVP2XTask.java
@@ -0,0 +1,338 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import iaik.x509.X509Certificate;
+
+import java.io.IOException;
+import java.security.cert.CertificateException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.regex.Pattern;
+
+import javax.net.ssl.SSLHandshakeException;
+
+import org.apache.commons.httpclient.MOAHttpClient;
+import org.opensaml.saml2.metadata.provider.HTTPMetadataProvider;
+import org.opensaml.saml2.metadata.provider.MetadataFilter;
+import org.opensaml.saml2.metadata.provider.MetadataFilterChain;
+import org.opensaml.saml2.metadata.provider.MetadataProviderException;
+import org.opensaml.xml.parse.BasicParserPool;
+import org.opensaml.xml.security.x509.BasicX509Credential;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
+import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.MOAIDWebGUIConfiguration;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.SchemaValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.SignatureValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.utils.MetaDataVerificationFilter;
+import at.gv.egovernment.moa.id.config.webgui.validation.utils.SchemaValidationFilter;
+import at.gv.egovernment.moa.util.Base64Utils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesProtocolPVP2XTask extends AbstractTaskValidator implements IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesProtocolPVP2XTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - General Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+ String certBase64 = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+
+ if (MiscUtil.isNotEmpty(certBase64)) {
+ String[] splittet = certBase64.split(",");
+ if (splittet.length > 1) {
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE,
+ splittet[1]);
+ log.debug("Extract PVP2X metadata validation certificate from GUI upload and add it to key: {}", MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+
+ try {
+ byte[] certSerialized = null;
+ if (MiscUtil.isNotEmpty(splittet[1])) {
+ certSerialized = Base64Utils.decode(splittet[1], true);
+ X509Certificate cert = new X509Certificate(certSerialized);
+ newConfigValues.put(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE_SUBJECT,
+ cert.getSubjectDN().getName());
+
+ }
+
+ } catch (IOException | CertificateException e) {
+ log.error("PVP2X metadata signing certificate is not parseable.", e);
+
+ }
+ }
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ Timer timer = null;
+ MOAHttpClient httpClient = null;
+ HTTPMetadataProvider httpProvider = null;
+
+ String certBase64 = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+
+ try {
+ byte[] certSerialized = null;
+ if (MiscUtil.isNotEmpty(certBase64) &&
+ !certBase64.equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT)) {
+ String[] splittet = certBase64.split(",");
+ if (splittet.length > 1)
+ certSerialized = Base64Utils.decode(splittet[1], true);
+ else
+ certSerialized = Base64Utils.decode(certBase64, true);
+ }
+
+
+ String metadataURL = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL);
+ if (MiscUtil.isNotEmpty(metadataURL)) {
+
+ if (!ValidationHelper.validateURL(metadataURL)) {
+ log.info("MetaDataURL has no valid form.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata URL",
+ LanguageHelper.getErrorString("validation.pvp2.metadataurl.valid")));
+
+ } else {
+
+ if (certSerialized == null) {
+ log.info("No certificate for metadata validation");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE,
+ "PVP2x - Metadata Certificate",
+ LanguageHelper.getErrorString("validation.pvp2.certificate.notfound")));
+
+ } else {
+
+ X509Certificate cert = new X509Certificate(certSerialized);
+ BasicX509Credential credential = new BasicX509Credential();
+ credential.setEntityCertificate(cert);
+
+ timer = new Timer();
+ httpClient = new MOAHttpClient();
+
+ if (metadataURL.startsWith("https:"))
+ try {
+ MOAHttpProtocolSocketFactory protoSocketFactory = new MOAHttpProtocolSocketFactory(
+ "MOAMetaDataProvider",
+ MOAIDWebGUIConfiguration.getInstance().getCertStoreDirectory(),
+ MOAIDWebGUIConfiguration.getInstance().getTrustStoreDirectory(),
+ null,
+ "pkix",
+ true);
+
+ httpClient.setCustomSSLTrustStore(
+ metadataURL,
+ protoSocketFactory);
+
+ } catch (MOAHttpProtocolSocketFactoryException e) {
+ log.warn("MOA SSL-TrustStore can not initialized. Use default Java TrustStore.", e);
+
+ } catch (at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException e) {
+ log.info("No MOA specific SSL-TrustStore configured. Use default Java TrustStore.", e);
+
+ }
+
+ List<MetadataFilter> filterList = new ArrayList<MetadataFilter>();
+ filterList.add(new MetaDataVerificationFilter(credential));
+
+ try {
+ filterList.add(new SchemaValidationFilter(
+ MOAIDWebGUIConfiguration.getInstance().isPVPMetadataSchemaValidationActive()));
+
+ } catch (at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException e) {
+ log.warn("Configuration access FAILED!", e);
+
+ }
+
+ MetadataFilterChain filter = new MetadataFilterChain();
+ filter.setFilters(filterList);
+
+ httpProvider =
+ new HTTPMetadataProvider(timer, httpClient, metadataURL);
+ httpProvider.setParserPool(new BasicParserPool());
+ httpProvider.setRequireValidMetadata(true);
+ httpProvider.setMetadataFilter(filter);
+ httpProvider.setMinRefreshDelay(1000*60*15); //15 minutes
+ httpProvider.setMaxRefreshDelay(1000*60*60*24); //24 hours
+ httpProvider.setRequireValidMetadata(true);
+ httpProvider.initialize();
+
+ if (httpProvider.getMetadata() == null) {
+ log.info("Metadata could be received but validation FAILED.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadata.validation")));
+ }
+ }
+ }
+ }
+
+ } catch (CertificateException e) {
+ log.info("Uploaded Certificate can not be found", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.certificate.notfound")));
+
+ } catch (IOException e) {
+ log.info("Metadata can not be loaded from URL", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadataurl.read")));
+
+ } catch (MetadataProviderException e) {
+
+ try {
+ if (e.getCause() != null && e.getCause().getCause() instanceof SSLHandshakeException) {
+ log.info("SSL Server certificate not trusted.", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadata.ssl")));
+
+ } else if (e.getCause() != null && e.getCause().getCause() instanceof SignatureValidationException) {
+ log.info("MetaDate verification failed", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadata.verify.sig")));
+
+ } else if (e.getCause() != null && e.getCause().getCause() instanceof SchemaValidationException) {
+ log.info("MetaDate verification failed", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadata.verify.schema")));
+
+ } else {
+ log.info("MetaDate verification failed", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadata.verify.general")));
+ }
+
+ } catch (Exception e1) {
+ log.info("MetaDate verification failed", e1);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ "PVP2x - Metadata",
+ LanguageHelper.getErrorString("validation.pvp2.metadata.verify.general")));
+
+ }
+
+ } finally {
+ if (httpProvider != null)
+ httpProvider.destroy();
+
+ if (timer != null)
+ timer.cancel();
+
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA,
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_IIDP
+ );
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSAML1Task.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSAML1Task.java
new file mode 100644
index 000000000..fe3a791e7
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSAML1Task.java
@@ -0,0 +1,114 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesProtocolSAML1Task extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesProtocolSAML1Task.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "protocols.saml1";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - SAML1 Protocol Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String isBusinessService = input.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE);
+ String isProvideBaseID = input.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID);
+
+ if (Boolean.parseBoolean(isBusinessService) &&
+ MiscUtil.isNotEmpty(isProvideBaseID) && Boolean.parseBoolean(isProvideBaseID)) {
+ log.info("ProvideStammZahl can not be used with BusinessService applications");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID,
+ "Protocols - SAML1 BaseID",
+ LanguageHelper.getErrorString("validation.saml1.providestammzahl")));
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSTORKTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSTORKTask.java
new file mode 100644
index 000000000..d4e80bed9
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesProtocolSTORKTask.java
@@ -0,0 +1,273 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesProtocolSTORKTask extends AbstractTaskValidator implements IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesProtocolSTORKTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - General Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ try {
+ //search actually stored service configurations
+ List<String> storedServices = new ArrayList<String>();
+ for (String prefix : getModulValidatorPrefix()) {
+ String[] storedService = dbconfig.findConfigurationId(prefix + ".%." + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ if (storedService != null && storedService.length > 0)
+ storedServices.addAll(Arrays.asList(storedService));
+ }
+
+ String GUIServiceUniqueID = input.get(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ String selectedServiceKey = null;
+ for (String serviceKey : storedServices) {
+ String storedUniqueId = dbconfig.getStringValue(serviceKey);
+ if (storedUniqueId.equals(GUIServiceUniqueID)) {
+ selectedServiceKey = KeyValueUtils.getPrefixFromKey(serviceKey, MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ log.debug("Find service with key: " + selectedServiceKey + " --> Start STORK attribute provider postProcessing.");
+ break;
+ }
+
+ }
+
+ //load actually stored attribute provider names for service
+ Map<String, String> storedAttributeProviders = new HashMap<String, String>();
+ if (MiscUtil.isNotEmpty(selectedServiceKey)) {
+ String[] storedAttribteProviderNames = dbconfig.findConfigurationId(
+ selectedServiceKey + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + ".%." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME);
+ if (storedAttribteProviderNames != null) {
+ for (String el : storedAttribteProviderNames) {
+ String attrProviderName = dbconfig.getStringValue(el);
+ storedAttributeProviders.put(attrProviderName, el);
+
+ }
+ }
+ }
+
+ Map<String, String> storkAttrProviders = KeyValueUtils.getSubSetWithPrefix(input, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST);
+ Iterator<Entry<String, String>> interator = storkAttrProviders.entrySet().iterator();
+ while (interator.hasNext()) {
+ Entry<String, String> current = interator.next();
+ if (current.getKey().endsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME)) {
+ String guiAttrProviderName = current.getValue();
+ if (storedAttributeProviders.containsKey(guiAttrProviderName)) {
+ log.trace("STORK attribute provider: " + guiAttrProviderName
+ + " is already stored");
+ storedAttributeProviders.remove(guiAttrProviderName);
+
+ } else {
+ log.trace("Add new STORK attribute provider: " + guiAttrProviderName
+ + " to service");
+
+ }
+ }
+ }
+
+ if (!storedAttributeProviders.isEmpty()) {
+ log.trace("Remove STORK attribute providers from configuration.");
+ for (String el : storedAttributeProviders.values()) {
+ String removeString = KeyValueUtils.getPrefixFromKey(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME);
+ keysToDelete.add(removeString + "*");
+ log.debug("Remove STORK attribute provider with key:" + removeString + "*");
+
+ }
+
+ }
+
+ } catch (ConfigurationException e) {
+ log.error("Configuration access FAILED.", e);
+
+ }
+
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ //check V-IDP specific Target configurations
+ String isBusinessService = input.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE);
+ if (!Boolean.parseBoolean(isBusinessService)) {
+ log.info("STORK V-IDP only allowed as business Service.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE,
+ "BusinessService",
+ "STORK V-IDP only allowed as business Service."));
+ }
+
+ String identificationType = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE);
+ if (MiscUtil.isEmpty(identificationType) ||
+ !MOAIDConfigurationConstants.IDENIFICATIONTYPE_STORK.equals(identificationType)) {
+ log.info("STORK V-IDP only allowes identification numbers with STORK prefix.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE,
+ "BusinessService - IdentificationType",
+ "STORK V-IDP only allowes identification numbers with STORK prefix"));
+
+ }
+
+
+ Map<String, String> storkAttrProviders = KeyValueUtils.getSubSetWithPrefix(input, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST);
+ Iterator<Entry<String, String>> interator = storkAttrProviders.entrySet().iterator();
+ while (interator.hasNext()) {
+ Entry<String, String> current = interator.next();
+ if (current.getKey().endsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME)) {
+ log.trace("Validate STORK attribute provider with key: " + current.getKey() + " value: " + current.getValue());
+ String index = KeyValueUtils.getParentKey(current.getKey());
+
+ //validate attribute provider name
+ String attrProviderName = current.getValue();
+ if (MiscUtil.isEmpty(attrProviderName)) {
+ log.info("AttributeProviderPlugin Name is empty.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME,
+ "STORK - Attribute Provider",
+ LanguageHelper.getErrorString("validation.stork.ap.name.empty")));
+
+ } else {
+ if (!MOAIDConfigurationConstants.ALLOWED_STORKATTRIBUTEPROVIDERS.contains(attrProviderName)) {
+ log.info("AttributeProviderPlugin Name is not supported.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME,
+ "STORK - Attribute Provider",
+ LanguageHelper.getErrorString("validation.stork.ap.name.valid")));
+ }
+ }
+
+ String attrProviderURL = storkAttrProviders.get(index + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_URL);
+ String attrProviderAttr = storkAttrProviders.get(index + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_ATTRIBUTES);
+
+ if (MiscUtil.isEmpty(attrProviderURL) || !ValidationHelper.validateURL(attrProviderURL)) {
+ log.info("AttributeProviderPlugin URL has no valid form.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_URL,
+ "STORK - Attribute Provider",
+ LanguageHelper.getErrorString("validation.stork.ap.url.valid")));
+ }
+
+
+ if (MiscUtil.isEmpty(attrProviderAttr) || !attrProviderAttr.matches("[a-zA-Z]+(, ?[a-zA-Z]+)*")) {
+ log.info("AttributeProviderPlugin attributes are empty or do not match csv format.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "." + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_ATTRIBUTES,
+ "STORK - Attribute Provider",
+ LanguageHelper.getErrorString("validation.stork.ap.attributes.valid")));
+ }
+
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_VIDP
+ );
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesReversionLogTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesReversionLogTask.java
new file mode 100644
index 000000000..da441de4b
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesReversionLogTask.java
@@ -0,0 +1,162 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesReversionLogTask extends AbstractTaskValidator implements IDynamicLoadableTaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesReversionLogTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return MOAIDConfigurationConstants.SERVICE_REVERSION;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - Reversion Logging Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ Map<String, String> newConfigValues = new HashMap<String, String>();
+
+ String eventCodes = input.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES);
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ newConfigValues.put(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES,
+ KeyValueUtils.normalizeCSVValueString(eventCodes));
+
+ }
+
+ if (newConfigValues.isEmpty())
+ return null;
+ else
+ return newConfigValues;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String isEnabled = input.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED);
+ String eventCodes = input.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES);
+
+ if (Boolean.parseBoolean(isEnabled) && MiscUtil.isEmpty(eventCodes)) {
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED,
+ "Reversion - Logger Enabled",
+ LanguageHelper.getErrorString("error.oa.reversion.log.enabled")));
+
+ }
+
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ String[] codes = eventCodes.split(",");
+ for (String el: codes) {
+ try {
+ Integer.parseInt(el.trim());
+
+ } catch (NumberFormatException e) {
+ log.info("", e);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES,
+ "Reversion - Logger Enabled",
+ LanguageHelper.getErrorString("error.oa.reversion.log.eventcodes")));
+ break;
+
+ }
+
+ }
+
+ }
+
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator#getModulValidatorPrefix()
+ */
+ @Override
+ public List<String> getModulValidatorPrefix() {
+ return Arrays.asList(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES_OA
+ );
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesSSOAuthenticationTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesSSOAuthenticationTask.java
new file mode 100644
index 000000000..bf2a38cd9
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesSSOAuthenticationTask.java
@@ -0,0 +1,101 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesSSOAuthenticationTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesSSOAuthenticationTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "auth.sso";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - SSO Authentication Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ //Actually, there is nothing to validate.
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesTargetTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesTargetTask.java
new file mode 100644
index 000000000..5d23a60f6
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesTargetTask.java
@@ -0,0 +1,223 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.utils.CompanyNumberValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesTargetTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesTargetTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - Target Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+ String isBusinessService = input.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE);
+ String check;
+ if (Boolean.parseBoolean(isBusinessService)) {
+
+ //check identification type
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE);
+ if (!MOAIDConfigurationConstants.BUSINESSSERVICENAMES.keySet().contains(check)) {
+ log.info("IdentificationType is not known.");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE,
+ "BusinessService - Type",
+ LanguageHelper.getErrorString("validation.general.stork.sptarget")));
+ }
+
+ //check identification number
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE);
+ if (MiscUtil.isEmpty(check)) {
+ log.info("Empty IdentificationNumber");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE,
+ "BusinessService - Value",
+ LanguageHelper.getErrorString("validation.general.identificationnumber.empty")));
+
+ } else {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("IdentificationNumber contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE,
+ "BusinessService - Value",
+ LanguageHelper.getErrorString("validation.general.identificationnumber.valid",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+
+ if (input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE)
+ .equals(MOAIDConfigurationConstants.IDENIFICATIONTYPE_FN)) {
+ CompanyNumberValidator val = new CompanyNumberValidator();
+ if (!val.validate(check)) {
+ log.info("Not valid CompanyNumber");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE,
+ "BusinessService - Value",
+ LanguageHelper.getErrorString("validation.general.identificationnumber.fn.valid")));
+ }
+ }
+ }
+
+ } else {
+
+ //check own target
+ String useOwnTarget = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_OWN);
+ if (MiscUtil.isNotEmpty(useOwnTarget) && Boolean.parseBoolean(useOwnTarget)) {
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_NAME);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+ log.warn("TargetFriendlyName contains potentail XSS characters: " + check);
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_NAME,
+ "Own Target - FriendlyName",
+ LanguageHelper.getErrorString("validation.general.targetfriendlyname",
+ new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}) ));
+ }
+ }
+
+ //check Own Target
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.isValidAdminTarget(check)) {
+ log.info("Not valid Target");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET,
+ "Own Target - Target",
+ LanguageHelper.getErrorString("validation.general.target.admin.valid")));
+ }
+ }
+
+ } else {
+
+ //check PublicURL Prefix allows PublicService
+ String uniqueID = input.get(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+
+ //TODO: reactivate if Role based user management is complete!
+// if (!ValidationHelper.isPublicServiceAllowed(input.get(uniqueID))) {
+// log.warn("PublicURLPrefix does not allow PublicService: " + uniqueID);
+// errors.add(new ValidationObjectIdentifier(
+// MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET,
+// "PublicService - Target",
+// LanguageHelper.getErrorString("validation.general.target.publicserviceurl",
+// new Object[] {uniqueID}) ));
+//
+// }
+
+ //check Target
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET);
+ if (MiscUtil.isNotEmpty(check)) {
+ if (!ValidationHelper.isValidTarget(check)) {
+ log.info("Not valid Target");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET,
+ "PublicService - Target",
+ LanguageHelper.getErrorString("validation.general.target.valid")));
+ }
+ }
+
+ String isSubTargetUsed = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_SUB);
+ if (MiscUtil.isNotEmpty(isSubTargetUsed) && Boolean.parseBoolean(isSubTargetUsed)) {
+ check = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB);
+ if (!ValidationHelper.isValidAdminTarget(check)) {
+ log.info("Not valid Target-Subsector");
+ errors.add(new ValidationObjectIdentifier(
+ MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB,
+ "PublicService - Target SubSector",
+ LanguageHelper.getErrorString("validation.general.target.subsector.valid")));
+
+ }
+ }
+ }
+ }
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesbPKDecryptionTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesbPKDecryptionTask.java
new file mode 100644
index 000000000..96088b6eb
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesbPKDecryptionTask.java
@@ -0,0 +1,137 @@
+/*
+ * 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.config.webgui.validation.task.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.validation.ValidationHelper;
+import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException;
+import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier;
+import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator;
+import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ServicesbPKDecryptionTask extends AbstractTaskValidator implements ITaskValidator {
+ private static final Logger log = LoggerFactory.getLogger(ServicesbPKDecryptionTask.class);
+ private static final List<String> KEYWHITELIST;
+
+ static {
+ ArrayList<String> temp = new ArrayList<String>();
+ KEYWHITELIST = Collections.unmodifiableList(temp);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getKeyPrefix()
+ */
+ @Override
+ public String getKeyPrefix() {
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#getName()
+ */
+ @Override
+ public String getName() {
+ return "Service - bPK-Decryption Configuration Task";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator#postProcessing(java.util.Map, java.util.List, at.gv.egiz.components.configuration.api.Configuration)
+ */
+ @Override
+ public Map<String, String> postProcessing(Map<String, String> input,
+ List<String> keysToDelete, Configuration dbconfig) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#tastValidate(java.util.Map)
+ */
+ @Override
+ protected void taskValidate(Map<String, String> input)
+ throws ConfigurationTaskValidationException {
+ List<ValidationObjectIdentifier> errors = new ArrayList<ValidationObjectIdentifier>();
+
+
+ //TODO:
+
+
+// String check = input.get(MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME);
+// if (MiscUtil.isNotEmpty(check)) {
+// if (ValidationHelper.containsPotentialCSSCharacter(check, false)) {
+// log.warn("OAFriendlyName contains potentail XSS characters: " + check);
+// errors.add(new ValidationObjectIdentifier(
+// MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME,
+// "FriendlyName",
+// LanguageHelper.getErrorString("validation.general.oafriendlyname.valid",
+// new Object[] {ValidationHelper.getPotentialCSSCharacter(false)})));
+// }
+// } else {
+// log.info("OA friendlyName is empty");
+// errors.add(new ValidationObjectIdentifier(
+// MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME,
+// "FriendlyName",
+// LanguageHelper.getErrorString("validation.general.oafriendlyname.empty")));
+// }
+//
+// String isBusinessService = input.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE);
+// if (MiscUtil.isEmpty(isBusinessService)) {
+// log.info("OA businessservice flag is empty");
+// errors.add(new ValidationObjectIdentifier(
+// MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE,
+// "BusinessService",
+// LanguageHelper.getErrorString("validation.general.businessservice.empty")));
+//
+// }
+
+
+ if (!errors.isEmpty())
+ throw new ConfigurationTaskValidationException(errors);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator#getAllAllowedKeys()
+ */
+ @Override
+ public List<Pattern> getAllAllowedPatterns() {
+ return generatePatternsFromKeys(KEYWHITELIST);
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/CompanyNumberValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/CompanyNumberValidator.java
new file mode 100644
index 000000000..b9eb76857
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/CompanyNumberValidator.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * 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.config.webgui.validation.utils;
+
+import org.apache.commons.lang.StringUtils;
+
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+
+public class CompanyNumberValidator implements IdentificationNumberValidator {
+
+ public boolean validate(String commercialRegisterNumber) {
+
+ String normalizedNumber = commercialRegisterNumber.replaceAll(" ", "");
+ if(normalizedNumber.startsWith(MOAIDConfigurationConstants.IDENIFICATIONTYPE_FN))
+ normalizedNumber = normalizedNumber.substring(2);
+
+ return checkCommercialRegisterNumber(normalizedNumber);
+ }
+
+ private boolean checkCommercialRegisterNumber(String commercialRegisterNumber) {
+ if (commercialRegisterNumber == null) {
+ return false;
+ }
+ commercialRegisterNumber = StringUtils.leftPad(commercialRegisterNumber, 7,
+ '0');
+ if (!commercialRegisterNumber.matches("\\d{6}[abdfghikmpstvwxzy]")) {
+ return false;
+ }
+ String digits = commercialRegisterNumber.substring(0,
+ commercialRegisterNumber.length() - 1);
+ char checkDigit = commercialRegisterNumber.charAt(commercialRegisterNumber
+ .length() - 1);
+ boolean result = calcCheckDigitFromCommercialRegisterNumber(digits) == checkDigit;
+ return result;
+ }
+
+ public static char calcCheckDigitFromCommercialRegisterNumber(
+ String commercialRegisterDigits) {
+ final int[] WEIGHT = { 6, 4, 14, 15, 10, 1 };
+ final char[] CHECKDIGIT = { 'a', 'b', 'd', 'f', 'g', 'h', 'i', 'k', 'm',
+ 'p', 's', 't', 'v', 'w', 'x', 'y', 'z' };
+ if (commercialRegisterDigits == null) {
+ throw new NullPointerException("Commercial register number missing.");
+ }
+ commercialRegisterDigits = StringUtils.leftPad(commercialRegisterDigits, 6,
+ '0');
+ if (!commercialRegisterDigits.matches("\\d{6}")) {
+ throw new IllegalArgumentException(
+ "Invalid commercial register number provided.");
+ }
+ int sum = 0;
+ for (int i = 0; i < commercialRegisterDigits.length(); i++) {
+ int value = commercialRegisterDigits.charAt(i) - '0';
+ sum += WEIGHT[i] * value;
+ }
+ return CHECKDIGIT[sum % 17];
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/IdentificationNumberValidator.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/IdentificationNumberValidator.java
new file mode 100644
index 000000000..1ecbd3f82
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/IdentificationNumberValidator.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * 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.config.webgui.validation.utils;
+
+public interface IdentificationNumberValidator {
+
+ boolean validate(String idNumber);
+
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/MetaDataVerificationFilter.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/MetaDataVerificationFilter.java
new file mode 100644
index 000000000..6ec48fa43
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/MetaDataVerificationFilter.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * 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.config.webgui.validation.utils;
+
+import java.util.Iterator;
+
+import org.opensaml.common.SignableSAMLObject;
+import org.opensaml.saml2.metadata.EntitiesDescriptor;
+import org.opensaml.saml2.metadata.EntityDescriptor;
+import org.opensaml.saml2.metadata.provider.MetadataFilter;
+import org.opensaml.security.SAMLSignatureProfileValidator;
+import org.opensaml.xml.XMLObject;
+import org.opensaml.xml.security.credential.Credential;
+import org.opensaml.xml.security.x509.BasicX509Credential;
+import org.opensaml.xml.signature.SignatureValidator;
+import org.opensaml.xml.validation.ValidationException;
+
+import at.gv.egovernment.moa.id.config.webgui.exception.SignatureValidationException;
+import at.gv.egovernment.moa.logging.Logger;
+
+public class MetaDataVerificationFilter implements MetadataFilter {
+
+ BasicX509Credential credential;
+
+ public MetaDataVerificationFilter(BasicX509Credential credential) {
+ this.credential = credential;
+ }
+
+
+ public void doFilter(XMLObject metadata) throws SignatureValidationException {
+
+ if (metadata instanceof EntitiesDescriptor) {
+ EntitiesDescriptor entitiesDescriptor = (EntitiesDescriptor) metadata;
+ if(entitiesDescriptor.getSignature() == null) {
+ throw new SignatureValidationException("Root element of metadata file has to be signed");
+ }
+ try {
+ processEntitiesDescriptor(entitiesDescriptor);
+
+ } catch (SignatureValidationException e) {
+ throw new SignatureValidationException("Invalid signature element in EntitiesDescriptor");
+ }
+
+ } if (metadata instanceof EntityDescriptor) {
+ try {
+ EntityDescriptor entity = (EntityDescriptor) metadata;
+ if (entity.getSignature() != null)
+ verify(entity, this.credential);
+
+ else
+ throw new SignatureValidationException("Root element of metadata file has to be signed", null);
+
+ } catch (SignatureValidationException e) {
+ throw new SignatureValidationException("Invalid signature element in EntityDescriptor", null);
+ }
+ }
+ }
+
+ private void processEntitiesDescriptor(EntitiesDescriptor desc) throws SignatureValidationException {
+ Iterator<EntitiesDescriptor> entID = desc.getEntitiesDescriptors().iterator();
+
+ if(desc.getSignature() != null) {
+ verify(desc, this.credential);
+ }
+
+ while(entID.hasNext()) {
+ processEntitiesDescriptor(entID.next());
+ }
+
+ Iterator<EntityDescriptor> entIT = desc.getEntityDescriptors().iterator();
+
+ while(entIT.hasNext()) {
+ EntityDescriptor entity = entIT.next();
+ if (entity.getSignature() != null)
+ verify(entity, this.credential);
+ }
+ }
+
+ private void verify(SignableSAMLObject entityDescriptor, Credential cred)
+ throws SignatureValidationException {
+ if (entityDescriptor.getSignature() == null) {
+ throw new SignatureValidationException("PVP2X Metadata not signed");
+ }
+
+ try {
+ SAMLSignatureProfileValidator sigValidator = new SAMLSignatureProfileValidator();
+ sigValidator.validate(entityDescriptor.getSignature());
+ } catch (ValidationException e) {
+ Logger.error("Failed to validate Signature", e);
+ throw new SignatureValidationException("Failed to validate Signature", e);
+ }
+
+ SignatureValidator sigValidator = new SignatureValidator(cred);
+ try {
+ sigValidator.validate(entityDescriptor.getSignature());
+ } catch (ValidationException e) {
+ Logger.error("Failed to verfiy Signature", e);
+ throw new SignatureValidationException("Failed to verfiy Signature", e);
+
+ }
+ }
+}
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/SchemaValidationFilter.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/SchemaValidationFilter.java
new file mode 100644
index 000000000..587afe381
--- /dev/null
+++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/utils/SchemaValidationFilter.java
@@ -0,0 +1,98 @@
+/*
+ * 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.config.webgui.validation.utils;
+
+import org.opensaml.saml2.metadata.provider.FilterException;
+import org.opensaml.saml2.metadata.provider.MetadataFilter;
+import org.opensaml.xml.XMLObject;
+
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.Validator;
+
+import org.opensaml.common.xml.SAMLSchemaBuilder;
+
+import org.xml.sax.SAXException;
+
+import at.gv.egovernment.moa.id.config.webgui.exception.SchemaValidationException;
+import at.gv.egovernment.moa.logging.Logger;
+
+/**
+ * @author tlenz
+ *
+ */
+public class SchemaValidationFilter implements MetadataFilter {
+
+ private boolean isActive = true;
+
+ /**
+ *
+ */
+ public SchemaValidationFilter(boolean useSchemaValidation) {
+ this.isActive = useSchemaValidation;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.opensaml.saml2.metadata.provider.MetadataFilter#doFilter(org.opensaml.xml.XMLObject)
+ */
+ @Override
+ public void doFilter(XMLObject arg0) throws SchemaValidationException {
+
+ String errString = null;
+
+ if (isActive) {
+ try {
+ Schema test = SAMLSchemaBuilder.getSAML11Schema();
+ Validator val = test.newValidator();
+ DOMSource source = new DOMSource(arg0.getDOM());
+ val.validate(source);
+ Logger.info("Metadata Schema validation check done OK");
+ return;
+
+ } catch (SAXException e) {
+ if (Logger.isDebugEnabled() || Logger.isTraceEnabled())
+ Logger.warn("Metadata Schema validation FAILED with exception:", e);
+ else
+ Logger.warn("Metadata Schema validation FAILED with message: "+ e.getMessage());
+
+ errString = e.getMessage();
+
+ } catch (Exception e) {
+ if (Logger.isDebugEnabled() || Logger.isTraceEnabled())
+ Logger.warn("Metadata Schema validation FAILED with exception:", e);
+ else
+ Logger.warn("Metadata Schema validation FAILED with message: "+ e.getMessage());
+
+ errString = e.getMessage();
+
+ }
+
+ throw new SchemaValidationException("Metadata Schema validation FAILED with message: "+ errString);
+
+ } else
+ Logger.info("Metadata Schema validation check is DEACTIVATED!");
+
+ }
+
+}
diff --git a/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.configuration.meta.api.ConfigurationModul b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.configuration.meta.api.ConfigurationModul
new file mode 100644
index 000000000..f228893b9
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.configuration.meta.api.ConfigurationModul
@@ -0,0 +1 @@
+at.gv.egovernment.moa.id.config.webgui.MOAIDConfigurationModul \ No newline at end of file
diff --git a/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider
new file mode 100644
index 000000000..b0b17a83c
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider
@@ -0,0 +1 @@
+at.gv.egovernment.moa.id.config.webgui.MOAIDSpringResourceProvider \ No newline at end of file
diff --git a/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator
new file mode 100644
index 000000000..8e29f32f0
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.modul.IModuleValidator
@@ -0,0 +1,5 @@
+at.gv.egovernment.moa.id.config.webgui.validation.modul.impl.GeneralConfigurationValidator
+at.gv.egovernment.moa.id.config.webgui.validation.modul.impl.GatewayValidator
+at.gv.egovernment.moa.id.config.webgui.validation.modul.impl.InterfederationIDPValidator
+at.gv.egovernment.moa.id.config.webgui.validation.modul.impl.OnlineApplicationValidator
+at.gv.egovernment.moa.id.config.webgui.validation.modul.impl.VIDPValidator
diff --git a/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator
new file mode 100644
index 000000000..8faf16843
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/META-INF/services/at.gv.egovernment.moa.id.config.webgui.validation.task.IDynamicLoadableTaskValidator
@@ -0,0 +1,5 @@
+at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesProtocolOpenIDTask
+at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesProtocolPVP2XTask
+at.gv.egovernment.moa.id.config.webgui.validation.task.impl.GeneralSTORKConfigurationTask
+at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesAuthenticationSTORKTask
+at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesProtocolSTORKTask \ No newline at end of file
diff --git a/id/moa-id-webgui/src/main/resources/applicationResources_de.properties b/id/moa-id-webgui/src/main/resources/applicationResources_de.properties
new file mode 100644
index 000000000..bb0499020
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/applicationResources_de.properties
@@ -0,0 +1,525 @@
+title=MOA-ID 2.x Configuration Tool
+
+
+config.01=Configfile is not found. ({0})
+config.02=Configfile is not readable. ({0})
+config.03=Hibernate Database connector can not be initialized
+config.04=OpenSAML (PVP2 Login) can not be initialized
+config.05=Configuration file not defined
+config.06=Configfile {1} does not start with {0} prefix.
+
+error.title=Fehler:
+error.login.internal=W\u00E4hrend der Verarbeitung ist ein interner Fehler aufgetreten. Bitte Versuchen Sie es nocheinmal oder kontaktieren Sie den Administrator.
+error.general.text=W\u00E4hrend der Verarbeitung ist ein interner Fehler aufgetreten. Bitte Versuchen Sie es nocheinmal oder kontaktieren Sie den Administrator.
+errors.listOAs.noOA=Es wurden keine Online-Applikationen in der Datenbank gefunden.
+errors.listIDPs.noIDP=Es wurden kein IdentityProvider f\u00FCr Interfederation in der Datenbank gefunden.
+errors.edit.oa.oaid=Es wurde keine g\u00FCtige Online-Applikations-ID \u00FCbergeben.
+errors.edit.oa.oaid.allowed=Sie besitzen nicht die ben\u00F6tigen Rechte um auf diese Online-Applikation zuzugreifen.
+error.oa.pvp2.certificate=Das hinterlegte PVP2 Zertifikat konnte nicht gelesen werden.
+error.db.oa.store=Die Konfiguration konnte nicht in der Datenbank gespeichert werden.
+errors.notallowed=Sie besitzen nicht die n\u00F6tigen Rechte um diese Funktion zu benutzen.
+errors.importexport.nofile=Es wurde keine Datei angegeben.
+errors.importexport.legacyimport=Der Importvorgang der Legacy-Konfiguration wurde mit einem Fehler abgebrochen (Fehler={0}).
+errors.importexport.export=Die MOA-ID 2.x Konfiguration konnte nicht in ein XML File exportiert werden. (Fehler={0})
+errors.importexport.import=Der Importvorgang der XML Konfiguration wurde mit einem Fehler abgebrochen (Fehler={0}).
+errors.importexport.export.noconfig=Die Konfiguration kann nicht exportiert werden da keine MOA-ID Konfiguration vorhanden ist.
+errors.edit.user.userid=Es wurde keine g\u00FCtige User ID \u00FCbergeben.
+errors.edit.user.save=Der Benutzer konnte nicht in die Datenbank eingetragen werden.
+errors.edit.user.notallowed=Das Bearbeiten fremder Benutzereinstellungen ist nur dem Admin erlaubt.
+error.login=Der Anmeldevorgang wurde abgebrochen. Bitte Versuchen sie es noch einmal.
+error.mail.send=An die angegebene Mailadresse konnte keine Nachticht versendet werden.
+error.mail.verification=Der Verifikationsvorgang wurde durch einen internen Fehler unterbrochen. Bitte Versuchen sie es noch einmal.
+error.editoa.mailverification=Die Verwaltung von Online-Applikationen ist vor\u00FCbergehend deaktiviert, da die Mailadresse des Benutzeraccounts noch nicht verifiziert wurde.
+error.bkuformpreview.notpossible="Die Vorschau konnte nicht generiert werden da ein interner Fehler auftreten ist."
+error.oa.oauth.redirecturi=Redirect URL ist keine richtige URL
+error.oa.oauth.clientSecret=Client-Secret darf nicht leer sein
+error.oa.oauth.keyname=Key-Name darf nicht leer sein
+error.oa.oauth.keystore=Keystore darf nicht leer sein und muss eine richtige URL sein.
+
+
+mail.userrequest.subject=Accountanforderung MOA-ID 2.x Konfigurationstool
+
+webpages.slo.error=Der Abmeldevorgang bei allen Online-Applikationen war nicht erfolgreich. Bitte schlie \t\u00DFen Sie aus Sicherheitsgr\u00FCnden ihren Browser.
+webpages.slo.success=Sie wurden erfolgreich bei allen Online-Applikationen abgemeldet.
+
+webpages.error.header=Es ist ein Fehler aufgetreten
+webpages.index.header=Willkommen bei der MOA-ID 2.x Konfigurationsapplikation
+webpages.index.desciption.head=Um dieses Service nutzen zu k\u00F6nnen m\u00FCssen sie sich einloggen.
+webpages.index.login=Anmelden
+webpages.index.logout=Abmelden
+webpages.index.login.pvp2=Anmeldung mit B\u00FCrgerkarte oder Handy-Signature
+webpages.index.login.notallowed=Entweder sind Benutzername oder Passwort sind nicht korrekt oder der Account wurde noch nicht aktiviert.
+webpages.index.username.unkown=Der Benutzer ist nicht bekannt.
+webpages.index.username.notactive=Der Benutzer wurde durch den Administrator noch nicht freigeschalten.
+webpages.index.password.false=Das Passwort stimmt nicht.
+
+webpages.inportexport.header=Konfiguration Importieren/Exportieren
+webpages.inportexport.success=Die Konfiguration konnte erfolgreich importiert werden.
+webpages.inportexport.legacyimport.header=Legacy Konfiguration importieren (MOA-ID < 2.0)
+webpages.inportexport.legacyimport.upload=Legacy Konfiguration
+webpages.edit.import=Importieren
+webpages.edit.export=Exportieren
+webpages.inportexport.import.header=MOA-ID 2.x Konfiguration
+webpages.inportexport.import.upload=Konfiguration importieren
+webpages.inportexport.import.download=Konfiguration exportieren
+webpages.inportexport.descripten=ACHTUNG\: Die importierte Konfiguration ersetzt eine aktuell vorhandene Konfiguration vollst\u00E4ndig\!
+
+webpages.usermanagement.newuser=Neuen Benutzer erstellen
+webpages.usermanagement.header=Benutzerverwaltung
+webpages.listUsers.list.header=Liste aller vorhandenen Benutzer
+webpages.listUsers.list.first=Familien-/Firmenname
+webpages.listUsers.list.second=Vorname
+webpages.listUsers.list.third=Benutzername
+webpages.edituser.header=Benutzerdaten
+webpages.edituser.givenname=Vorname
+webpages.edituser.familyName=Familienname
+webpages.edituser.institut=Organisation
+webpages.edituser.phone=Telefonnummer
+webpages.edituser.mail=EMail Adresse
+webpages.edituser.access.header=Zugangsdaten
+webpages.edituser.username=Benutzername
+webpages.edituser.password=Kennwort
+webpages.edituser.password_second=Kennwort wiederholen
+webpages.edituser.bpk=BPK
+webpages.edituser.role.header=Rechte und Role
+webpages.edituser.active=Benutzer ist aktiviert
+webpages.edituser.admin=Benutzer ist Admin
+webpages.edit.delete.user=Benutzer l\u00F6schen
+webpages.edit.newUser=Neuen Benutzer anfordern
+webpages.edituser.isusernamepasswordallowed=Benutzername/Passwort erlauben
+webpages.edituser.changemailaddress.verify=Bevor Sie Online-Applikationen verwalten k\u00F6nnen muss Ihre Mailadresse verifzieren werden. Eine entsprechende Mail wurde bereits an Ihr angegebenes Postfach versendet.
+webpages.edituser.verify.mail.button=Mailadresse pr\u00FCfen
+webpages.edituser.verify.mail.message=Es wurde eine Verifikationsmail an Ihr Postfach versendet
+
+webpages.mainpage.menu.oa.insert=Neue Applikation anlegen
+webpages.mainpage.menu.oa.display=Meine Applikationen
+webpages.mainpage.menu.oa.search=Applikation suchen
+webpages.mainpage.menu.general.user=Meine Daten
+webpages.mainpage.menu.general.importexport=Importieren/Exportieren
+webpages.mainpage.menu.general.config.moaid=Allgemeine Konfiguration
+webpages.mainpage.menu.general.usermanagement=Benutzerverwaltung
+webpages.mainpage.menu.general.adminrequests=Offene Anfragen
+webpages.mainpage.menu.interfederation=Interfederation
+
+webpages.interfederation.header=IDP Interfederation Konfiguration
+webpages.interfederation.list.header=Liste aller konfiguerierten IDPs
+webpages.inderfederation.moaid.header=Interfederation
+webpages.inderfederation.moaid.businessServiceIDP=Privatwirtschaftlicher IDP
+webpages.inderfederation.moaid.inboundSSO=Eingehendes SSO erlauben
+webpages.inderfederation.moaid.outboundSSO=Ausgehendes SSO erlauben
+webpages.inderfederation.moaid.storeSSOSession=SSO Session speichern
+webpages.inderfederation.moaid.attributQueryURL=AttributQuery Service URL
+webpages.inderfederation.moaid.sendPassivRequest=Verwende SAML2 isPassive Attribut
+webpages.inderfederation.moaid.perfomLocalAuthOnError=Im Fehlerfall Authentifizierung lokal durchf\u00FChren
+webpages.interfederation.new.header=Neuen Identity Provider hinzuf\u00FCgen
+webpages.interfederation.new.vidp=STORK VIDP
+webpages.interfederation.new.moaid=MOA-ID IDP
+webpages.interfederation.new.gateway=STORK<->PVP Gateway
+webpages.inderfederation.gateway.entityID=EntityID des PVP Portals
+
+
+
+webpages.moaconfig.save.success=Die MOA-ID Konfiguration wurde erfolgreich gespeichert.
+webpages.moaconfig.header=Allgemeine Konfiguration
+webpages.oaconfig.general.publicURLPreFix=Public URL Prefix
+webpages.moaconfig.defaultbkus.header=Default BKUs
+webpages.moaconfig.slrequesttemplates.header=SecurityLayer Request Templates
+webpages.moaconfig.slrequesttemplates.local=Locale BKU
+webpages.moaconfig.slrequesttemplates.handy=Handy BKU
+webpages.moaconfig.slrequesttemplates.online=Online BKU
+webpages.moaconfig.certificates.header=Zertifikatspr\u00FCfung
+webpages.moaconfig.certificates.certstore=CertStoreDirecorty
+webpages.moaconfig.certificates.trustmanagerrev=TrustManagerRevocationChecking
+webpages.moaconfig.certificates.trustCACerts=TrustedCACertificates
+webpages.moaconfig.certificates.chainingmode=ChainingMode
+webpages.moaconfig.timeout.header=Session TimeOuts
+webpages.moaconfig.timeout.assertion=Anmeldedaten [sec]
+webpages.moaconfig.timeout.MOASessionCreated=SSO Session authentifiziert [sec]
+webpages.moaconfig.timeout.MOASessionUpdated=SSO Session letzter Zugriff [sec]
+webpages.moaconfig.moasp.header=MOA-SP Konfiguration
+webpages.moaconfig.moasp.idltrustprofile=Personenbindung Trustprofil
+webpages.moaconfig.moasp.authtrustprofile=Authentfizierungsblock Trustprofil
+webpages.moaconfig.moasp.authblocktransform=Authentfizierungsblock Transformationen
+webpages.moaconfig.moasp.url=URL zum MOA-SP Service
+webpages.moaconfig.identitylinksigners=IdentityLinkSigners
+webpages.moaconfig.services.header=Externe Services
+webpages.moaconfig.services.mandates=Online-Vollmachten Service URL
+webpages.moaconfig.services.szrgw=SZR Gateway Service URL
+webpages.moaconfig.sso.header=Single Sign-On
+webpages.moaconfig.sso.PublicUrl=SSO Service URL-Prefix
+webpages.moaconfig.sso.FriendlyName=SSO Service Name
+webpages.moaconfig.services.sso.Target=SSO Service Target
+webpages.moaconfig.services.sso.SpecialText=SSO AuthBlockText
+webpages.moaconfig.protocols.header=Protokolle
+webpages.moaconfig.protocols.allowed.header=Protokolle aktivieren
+webpages.moaconfig.protocols.legacy.header=Legacy Modus aktivieren
+webpages.moaconfig.protocols.legacy.saml1=SAML1
+webpages.moaconfig.protocols.legacy.pvp2=PVP2.1
+webpages.moaconfig.protocols.oauth=OpenID Connect
+webpages.moaconfig.protocols.saml1.header=SAML1 Konfiguration
+webpages.moaconfig.protocols.saml1.sourceID=SourceID
+webpages.moaconfig.protocols.pvp2.header=PVP2 Konfiguration
+webpages.moaconfig.protocols.pvp2.PublicUrlPrefix=PVP2 Service URL-Prefix
+webpages.moaconfig.protocols.pvp2.IssuerName=PVP Service Name
+webpages.moaconfig.protocols.pvp2.org.header=Organisation
+webpages.moaconfig.protocols.pvp2.org.name=Kurzbezeichnung
+webpages.moaconfig.protocols.pvp2.org.displayname=Vollst\u00E4ndiger Name
+webpages.moaconfig.protocols.pvp2.org.url=URL der Organisation
+webpages.moaconfig.protocols.pvp2.contact.header=Kontaktdaten
+webpages.moaconfig.protocols.pvp2.contact.surename=Familienname
+webpages.moaconfig.protocols.pvp2.contact.givenname=Vorname
+webpages.moaconfig.protocols.pvp2.contact.email=Mailadresse
+webpages.moaconfig.protocols.pvp2.contact.company=Unternehmen
+webpages.moaconfig.protocols.pvp2.contact.phone=Telefonnummer
+webpages.moaconfig.protocols.pvp2.contact.type=Type des Kontakts
+webpages.moaconfig.sl.transormations.header=SecurityLayer Transformationen
+webpages.moaconfig.sl.transormations.filename=Dateiname
+webpages.moaconfig.sl.transormations.upload=Neue Transformation hochladen
+
+webpages.listOAs.list.elInfo=Type
+webpages.listOAs.list.first=Eindeutige Kennung
+webpages.listOAs.list.second=Name der Online-Applikation
+
+webpages.searchoa.header=Online-Applikation suchen
+webpages.searchoa.search.friendlyname=Name der Online-Applikation
+webpages.searchoa.butten.search=Suchen
+
+webpages.oaconfig.header=Konfiguration der Onlineapplikation
+webpages.oaconfig.general.isActive=Online-Applikation ist aktiviert
+webpages.oaconfig.general.bku.header=BKU Konfiguration
+webpages.oaconfig.general.bku.local=Locale BKU
+webpages.oaconfig.general.bku.online=Online BKU
+webpages.oaconfig.general.bku.handy=Handy BKU
+webpages.oaconfig.general.bku.slversion=SecurityLayer Version
+webpages.oaconfig.general.bku.keyboxidentifier=KeyBoxIdentifier
+webpages.oaconfig.general.bku.legacy=SecurityLayerTemplates (Legacy Request)
+webpages.oaconfig.general.bku.sltemplate.first=SecurityLayer Template
+webpages.oaconfig.general.bku.sltemplate.second=SecurityLayer Template (WhiteList)
+webpages.oaconfig.general.bku.sltemplate.third=SecurityLayer Template (WhiteList)
+
+webpages.oaconfig.general.bku.delete=L\u00F6schen
+webpages.oaconfig.general.bku.bkuselection.header=BKU-Selection Template
+webpages.oaconfig.general.bku.bkuselection.filename=Dateiname
+webpages.oaconfig.general.bku.bkuselection.upload=Neues Template hochladen
+webpages.oaconfig.general.bku.sendassertion.header=Send-Assertion Template
+webpages.oaconfig.general.bku.sendassertion.filename=Dateiname
+webpages.oaconfig.general.bku.sendassertion.upload=Neues Template hochladen
+
+webpages.oaconfig.bPKEncDec.header=Fremd-bPK Konfiguration
+webpages.oaconfig.bPKEncDec.keystore.header=KeyStore Konfiguration
+webpages.oaconfig.bPKEncDec.filename=Dateiname
+webpages.oaconfig.bPKEncDec.delete=L\u00F6schen
+webpages.oaconfig.bPKEncDec.upload=KeyStore hochladen
+webpages.oaconfig.bPKEncDec.keyStorePassword=KeyStore Password
+webpages.oaconfig.bPKEncDec.keyAlias=Schl\u00FCsselname
+webpages.oaconfig.bPKEncDec.keyPassword=Schl\u00FCsselpassword
+
+webpages.oaconfig.general.identification=Eindeutiger Identifikatior (PublicURLPrefix)
+webpages.oaconfig.general.mandate.header=Vollmachten
+webpages.oaconfig.general.mandate.profiles=Profile
+webpages.oaconfig.general.mandate.usemandate=Vollmachten (ja/nein)
+webpages.oaconfig.general.friendlyname=Name der Online-Applikation
+webpages.oaconfig.general.isbusinessservice=Privatwirtschaftliche Applikation
+webpages.oaconfig.general.isstorkservice=Stork Applikation
+webpages.oaconfig.general.public.header=&Ouml;ffentlicher Bereich
+webpages.oaconfig.general.stork.header=STORK Bereich
+webpages.oaconfig.general.stork.countrycode=Landesvorwahl
+webpages.oaconfig.general.target.friendlyname=Bezeichnung des Bereichs (Frei w\u00E4hlbar)
+webpages.oaconfig.general.target.admin.checkbox=Anderen Bereich frei definieren
+webpages.oaconfig.general.target.admin=Bereich (Frei w\u00E4hlbar)
+webpages.oaconfig.general.target.friendlyname.disabled=Bezeichnung des Bereichs (vom Administrator eingestellt)
+webpages.oaconfig.general.target.admin.disabled=Bereich (vom Administrator eingestellt)
+webpages.oaconfig.general.target=Bereich (Target)
+webpages.oaconfig.general.target.subsector=Sub-Bereich
+webpages.oaconfig.general.target.subsector.checkbox=Target verfeinern
+webpages.oaconfig.general.business.header=Privatwirtschaftlicher Bereich
+webpages.oaconfig.general.business.value=Identifikationsnummer
+webpages.oaconfig.general.business.type=Type der Identifikationsnummer
+webpages.oaconfig.general.aditional.header=Zus&auml;tzliche allgemeine Einstellungen
+webpages.oaconfig.general.aditional.authblocktext=AuthblockText
+webpages.oaconfig.general.aditional.iframe=B\u00FCrgerkartenauswahl im IFrame
+webpages.oaconfig.general.aditional.useUTC=UTC Zeit verwenden
+webpages.oaconfig.general.aditional.calculateHPI="TODO!"
+webpages.oaconfig.general.isHideBPKAuthBlock=bPK/wbPK im AuthBlock ausblenden
+
+webpages.oaconfig.menu.saml1.show=SAML1 Konfiguration einblenden
+webpages.oaconfig.menu.saml1.hidden=SAML1 Konfiguration ausblenden
+webpages.oaconfig.menu.pvp2.show=PVP2 Konfiguration einblenden
+webpages.oaconfig.menu.pvp2.hidden=PVP2 Konfiguration ausblenden
+webpages.oaconfig.menu.oauth20.show=OAuth 2.0 Konfiguration einblenden
+webpages.oaconfig.menu.oauth20.hidden=OAuth 2.0 Konfiguration ausblenden
+webpages.oaconfig.menu.vidp.show=VIDP Konfiguration einblenden
+webpages.oaconfig.menu.vidp.hidden=VIDP Konfiguration ausblenden
+
+webpages.oaconfig.menu.stork=STORK Konfiguration
+
+webpages.oaconfig.protocols.header=Authentifizierungsprotokolle
+
+webpages.oaconfig.general.BKUSelection.button.show=Login-Fenster Konfiguration einblenden
+webpages.oaconfig.general.BKUSelection.button.hidden=Login-Fenster Konfiguration ausblenden
+webpages.oaconfig.general.BKUSelection.header=Formularkonfiguration
+webpages.oaconfig.general.BKUSelection.isOnlyMandateLoginAllowed=Nur Vollmachtenanmeldung erlauben
+webpages.oaconfig.general.BKUSelection.backgroundcolor=Hintergrundfarbe der BKU-Auswahl
+webpages.oaconfig.general.BKUSelection.frontcolor=Vordergrundfarbe der BKU-Auswahl
+webpages.oaconfig.general.BKUSelection.header.backgroundcolor=Hintergrundfarbe der \u00DCberschrift
+webpages.oaconfig.general.BKUSelection.header.frontcolor=Vordergrundfarbe der \u00DCberschrift
+webpages.oaconfig.general.BKUSelection.header.text=\u00DCberschriftstext
+webpages.oaconfig.general.BKUSelection.header.button.background=Hintergrundfarbe der Schaltfl\u00E4chen
+webpages.oaconfig.general.BKUSelection.header.button.background.focus=Hintergrundfarbe der Schaltfl\u00E4chen (Focus)
+webpages.oaconfig.general.BKUSelection.header.button.front=Vordergrundfarbe der Schaltfl\u00E4chen
+webpages.oaconfig.general.BKUSelection.redirectTarget=Targetparameter
+webpages.oaconfig.general.BKUSelection.fonttype=Formularschrifttyp
+webpages.oaconfig.general.BKUSelection.fonttype.list=Formularschrifttypen
+webpages.oaconfig.general.BKUSelection.header.applet.height=Appleth\u00F6he
+webpages.oaconfig.general.BKUSelection.header.applet.width=Appletbreite
+
+webpages.oaconfig.general.testing.header=Test Identit\u00E4ten
+webpages.oaconfig.general.testing.usetesting=Test Identit\u00E4ten erlauben
+webpages.oaconfig.general.testing.oids=OIDs f\u00FCr Test Identit\u00E4ten einschr\u00E4nken.
+
+webpages.oaconfig.sso.header=Single Sign-On
+webpages.oaconfig.sso.singlelogouturl=Single Log-Out URL
+webpages.oaconfig.sso.useauthdataframe=Zus\u00E4tzliche Userabfrage
+webpages.oaconfig.sso.usesso=Single Sign-On verwenden
+
+webpages.oaconfig.stork.header=Secure idenTity acrOss boRders linKed
+webpages.oaconfig.stork.enabledcpeps=aktivierte Ziell&auml;nder
+webpages.oaconfig.stork.attributes.header=angeforderte Attribute
+webpages.oaconfig.stork.attributes.used=anfordern?
+webpages.oaconfig.stork.attributes.name=Attributname
+webpages.oaconfig.stork.attributes.mandatory=obligatorisch?
+webpages.oaconfig.stork.usestork=STORK Logon aktivieren
+webpages.moaconfig.stork.pepslist=C-PEPS Konfiguration
+webpages.moaconfig.stork.newpeps=Neuen PEPS konfigurieren
+webpages.moaconfig.stork.removepeps=l\u00F6schen
+webpages.moaconfig.stork.qaa.default=Standard QAA-Level ausw\u00E4hlen
+webpages.moaconfig.stork.attributes.heading=Attributkonfiguration
+webpages.moaconfig.stork.attributes.new=Neues Attribut hinzuf\u00FCgen
+webpages.moaconfig.stork.attributes.heading.name=Attributname
+webpages.moaconfig.stork.attributes.heading.mandatory=zwingend
+webpages.moaconfig.stork.attributes.remove=l\u00F6schen
+webpages.moaconfig.stork.qaa=Mindest-QAA-Level f\u00FCr diese OA ausw\u00E4hlen
+
+webpages.oaconfig.protocols.saml1.header=SAML1 Konfiguration
+webpages.oaconfig.saml1.isActice=SAML1 aktivieren
+webpages.oaconfig.saml1.provideStammZahl=Stammzahl \u00FCbertragen
+webpages.oaconfig.saml1.provideAuthBlock=Authentifizierungsblock \u00FCbertragen
+webpages.oaconfig.saml1.provideIdentityLink=Personenbindung \u00FCbertragen
+webpages.oaconfig.saml1.provideCertificate=Zertifikat \u00FCbertragen
+webpages.oaconfig.saml1.provideFullMandateData=Vollst\u00E4ndige Vollmacht \u00FCbertragen
+webpages.oaconfig.saml1.useCondition=Usecondition
+webpages.oaconfig.saml1.conditionLength=ConditionLength
+webpages.oaconfig.saml1.provideAllErrors=Fehlermeldungen an OA \u00FCbertragen
+
+webpages.oaconfig.protocols.pvp2.header=PVP2.x Konfiguration
+webpages.oaconfig.pvp2.reload=PVP2.x konfiguration neu laden
+webpages.oaconfig.pvp2.metaDataURL=URL zu den Metadaten
+webpages.oaconfig.pvp2.certifcate=Zertifikat hochladen
+webpages.oaconfig.pvp2.certifcate.info=Infos zum Zertifikat
+
+webpages.oaconfig.protocols.oauth20.header=OAuth 2.0 Konfiguration
+webpages.oaconfig.oauth20.clientId=Client ID
+webpages.oaconfig.oauth20.clientSecret=Client Passwort
+webpages.oaconfig.oauth20.redirectUri=Redirect Uri
+
+webpages.oaconfig.vidp.enabled=VIDP interface aktiv
+webpages.oaconfig.vidp.requireconsent=Zustimmung f\u00FCr das Ausliefern der Attribute vom Benutzer einholen?
+webpages.oaconfig.vidp.ap.new=Neuen Attribut Provider erstellen
+webpages.oaconfig.vidp.ap.remove=Entfernen
+webpages.oaconfig.vidp.ap.list=Liste der konfigurierten Attribut Provider
+
+
+message.title=Meldung:
+webpages.oaconfig.success=Die Online-Applikation {0} konnte erfolgreich gespeichert werden.
+webpages.oaconfig.success.admin=Die Online-Applikation {0} konnte erfolgreich gespeichert werden. Es ist jedoch eine Aktivierung durch den Administrator erforderlich.
+webpages.oaconfig.cancle=Die Bearbeitung der Online-Applikation {0} wurde abgebrochen.
+webpages.idp.success=Der IdentityProvider {0} konnte erfolgreich gespeichert werden.
+webpages.idp.cancle=Die Bearbeitung des IdentityProvider {0} wurde abgebrochen.
+
+webpages.oaconfig.delete.message=Die Online-Applikation {0} wurde erfolgreich gel\u00F6scht.
+webpages.oaconfig.delete.error=Die Online-Applikation {0} konnte nicht gel\u00F6scht werden.
+
+webpages.edit.save=\u00C4nderungen Speichern
+webpages.edit.back=Zur\u00FCck und \u00C4nderungen verwerfen
+webpages.edit.delete=Online-Applikation l\u00F6schen
+
+webpages.header.info=Sie sind angemeldet als:
+webpages.header.lastlogin=Letzte Anmeldung am:
+
+webpages.openadminrequests.header=Offene Antr\u00E4ge
+webpages.openadminrequests.users.header=Benutzeraccounts
+webpages.openadminrequests.oas.header=Online-Applikationen
+
+
+validation.newuser.mailaddress=Die Validierung der Mailadresse konnte erfolgreich durchgef\u00FChrt werden.
+
+validation.edituser.familyname.empty=Der Familienname ist leer.
+validation.edituser.familyname.valid=Der Familienname enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.edituser.givenname.empty=Der Vorname ist leer.
+validation.edituser.givenname.valid=Der Vorname enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.edituser.institut.empty=Die Organisation ist leer.
+validation.edituser.institut.valid=Die Organisation enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.edituser.mail.empty=Die EMail Adresse ist leer.
+validation.edituser.mail.valid=Die EMail Adresse hat kein g\u00FCltiges Format.
+validation.edituser.phone.empty=Die Telefonnummer ist leer.
+validation.edituser.phone.valid=Die Telefonnummer hat kein g\u00FCltiges Form
+validation.edituser.username.empty=Der Benutzername ist leer.
+validation.edituser.username.valid=Der Benutzername enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.edituser.username.duplicate=Der Benutzername ist bereits vergeben
+validation.edituser.password.empty=Das Passwort ist leer.
+validation.edituser.password.valid=Das Passwort konnte nicht in einen g\u00FCltigen Schl\u00FCssel transferiert werden.
+validation.edituser.password.equal=Die Passw\u00F6rter sind nicht identisch.
+validation.edituser.bpk.valid=Die BPK enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+
+validation.general.SAML1SourceID=Die SAML1SourceID enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.publicURLprefix.empty=Public URL Prefix Feld ist leer.
+validation.general.publicURLprefix.valid=Public URL Prefix hat kein g\u00FCltiges Format.
+validation.general.businessservice.empty=Die Application ist weder dem \u00F6ffentlichen noch dem privaten Sektor zugeordnet.
+validation.general.certStoreDirectory.empty=CertStoreDirectory Feld ist leer.
+validation.general.certStoreDirectory.valid=Das CertStoreDirectory Feld enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.Defaultchainigmode.empty=Es wurde kein DefaultChainingMode gew\u00E4hlt.
+validation.general.Defaultchainigmode.valid=Der DefaultChainingMode enth\u00E4lt einen ung\u00F6ltigen Wert.
+validation.general.IdentityLinkSigners.empty=Es wurde kein IdentityLinkSigner angegeben
+validation.general.IdentityLinkSigners.valid=Der IdentityLinkSigner in der Zeile {0} enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {1}
+validation.general.mandateservice.valid=Die URL zum Online-Vollmachten Service hat kein g\u00F6ltiges Format.
+validation.general.moasp.auth.transformation.empty=Die Transformation f\u00F6r den Authentfizierungsblock ist leer.
+validation.general.moasp.auth.transformation.valid=Die Transformation f\u00F6r den Authentfizierungsblock in der Zeile {0} enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {1}
+validation.general.moasp.auth.trustprofile.empty=Das TrustProfile zur Pr\u00F6fung des Authentfizierungsblock ist leer.
+validation.general.moasp.auth.trustprofile.valid=Das TrustProfile zur Pr\u00F6fung des Authentfizierungsblock enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.moasp.idl.trustprofile.empty=Das TrustProfile zur Pr\u00F6fung der Personenbindung ist leer.
+validation.general.moasp.idl.trustprofile.valid=Das TrustProfile zur Pr\u00F6fung der Personenbindung enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.moaspss.url.valid=Die URL zum MOA-SP/SS Service hat kein g\u00F6ltiges Format.
+validation.general.protocol.pvp2.issuername.valid=PVP2\: Service Name enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.protocol.pvp2.org.displayname.valid=PVP2 Organisation\: Vollst\u00E4ndiger Name enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.protocol.pvp2.org.name.valid=PVP2 Organisation\: Kurzbezeichnung enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.protocol.pvp2.org.url.valid=PVP2 Organisation\: URL hat kein g\u00F6ltiges Format.
+validation.general.protocol.pvp2.serviceurl.valid=PVP2\: Service URL-Prefix hat kein g\u00F6ltiges Format.
+validation.general.protocol.pvp2.contact.company.valid=PVP2 Kontaktdaten\: Der Firmenname enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.protocol.pvp2.contact.givenname.valid=PVP2 Kontaktdaten\: Der Familienname enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.protocol.pvp2.contact.surename.valid=PVP2 Kontaktdaten\: Der Vorname enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.protocol.pvp2.contact.type.valid=PVP2 Kontaktdaten: Der angegebene Kontakttyp existiert nicht.
+validation.general.protocol.pvp2.contact.mail.valid=PVP2 Kontaktdaten\: Die EMail Adresse ist nicht g\u00FCltig.
+validation.general.protocol.pvp2.contact.phone.valid=PVP2 Kontaktdaten\: Die Telefonnummer ist nicht g\u00FCltig.
+validation.general.timeouts.assertion.valid=Das Feld Assertion TimeOut hat keinen g\u00F6ltigen Wert.
+validation.general.timeouts.moasessioncreated.valid=Das Feld MOASessionCreated TimeOut hat keinen g\u00FCltigen Wert.
+validation.general.timeouts.moasessionupdated.valid=Das Feld MOASessionUpdated TimeOut hat keinen g\u00FCltigen Wert.
+
+validation.general.slrequest.handy.empty=Die URL zum SecurityLayer Template f\u00F6r die Handy-BKU ist leer.
+validation.general.slrequest.handy.valid=Die URL zum SecurityLayer Template f\u00F6r die Handy-BKU hat kein g\u00F6ltiges Format.
+validation.general.slrequest.local.empty=Die URL zum SecurityLayer Template f\u00F6r die locale BKU ist leer.
+validation.general.slrequest.local.valid=Die URL zum SecurityLayer Template f\u00F6r die locale BKU hat kein g\u00F6ltiges Format.
+validation.general.slrequest.online.empty=Die URL zum SecurityLayer Template f\u00F6r die Online-BKU ist leer.
+validation.general.slrequest.online.valid=Die URL zum SecurityLayer Template f\u00F6r die Online-BKU hat kein g\u00F6ltiges Format.
+validation.general.sso.friendlyname.valid=Der SSO Service Name enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.sso.identificationnumber.valid=Die SSO IdentificationNumber enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.sso.publicurl.valid=Der SSO Service URL-Prefix hat kein g\u00F6ltiges Format.
+validation.general.sso.specialauthtext.valid=Der SSO AuthBlockText enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.sso.target.empty=Das SSO Target Feld ist leer.
+validation.general.sso.target.valid=Das SSO Target Feld enth\u00E4lt ein ung\u00FCltiges Target.
+validation.general.szrgw.url.valid=Die URL des SZR Gateways hat kein g\u00F6ltiges Format.
+validation.general.trustedcacerts.empty=Das Feld TrustedCACertificates ist leer.
+validation.general.trustedcacerts.valid=Das Feld TrustedCACertificates enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.slrequest.filename.valid=Der Dateiname der angegebenen SecurtityLayer Transformation enth\u00E4lt ein ung\u00FCltiges Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.slrequest.file.valid=Die angegebenen AuthBlock Transformation konnte nicht geladen werden.
+validation.general.slrequest.file.empty=Die AuthBlock Transformation ist leer.
+
+validation.general.aditionalauthblocktext=Der Zusatztext f\u00FCr den AuthBlock enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.bku.handy.empty=Die URL f\u00FCr die Handy-BKU ist leer.
+validation.general.bku.handy.valid=Die URL f\u00FCr die Handy-BKU hat kein g\u00FCltiges Format.
+validation.general.bku.local.empty=Die URL f\u00FCr die lokale BKU ist leer.
+validation.general.bku.local.valid=Die URL f\u00FCr die locale BKU hat kein g\u00FCltiges Format.
+validation.general.bku.online.empty=Die URL f\u00FCr die Online-BKU ist leer.
+validation.general.bku.online.valid=Die URL f\u00FCr die Online-BKU hat kein g\u00FCltiges Format.
+validation.general.oafriendlyname.empty=Es wurde kein Name f\u00FCr die Online-Applikation angegeben.
+validation.general.oafriendlyname.valid=Der Name der Online-Applikation enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.keyboxidentifier.empty=Es wurde kein KeyBoxIdentifier ausgew\u00E4hlt.
+validation.general.keyboxidentifier.valid=Der KeyBoxIdentifier hat ein ung\u00FCltiges Format.
+validation.general.sltemplates.empty=Wenn der Legacymodus verwendet werden soll muss zumindest ein SecurityLayer Template angegeben werden.
+validation.general.sltemplate1.valid=Die erste SecurityLayer Template URL hat kein g\u00FCltiges Format.
+validation.general.sltemplate2.valid=Die zweite SecurityLayer Template URL hat kein g\u00FCltiges Format.
+validation.general.sltemplate3.valid=Die dritte SecurityLayer Template URL hat kein g\u00FCltiges Format.
+validation.general.mandate.profiles=Die Liste von Vollmachtsprofilen enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.mandate.usemandate=Die Konfiguration von Vollmachtsprofile ist nur mit aktivierten Vollmachten m\u00F6glich.
+validation.general.target.empty=Der Target f\u00FCr die Online-Applikation ist leer.
+validation.general.target.valid=Der Target f\u00FCr die Online-Applikation hat kein g\u00FCltiges Format.
+validation.general.target.subsector.valid=Der Target-Subsektor hat kein g\u00FCltiges Format.
+validation.general.target.admin.valid=Der Admin-Target f\u00FCr die Online-Applikation hat kein g\u00FCltiges Format.
+validation.general.target.publicserviceurl=Die Domain des eindeutigen Identifiers f\u00FCr die Online-Applikation erlaubt nur Applikationen aus dem privatwirtschaftlichen Bereich.
+validation.general.slversion=Die SecurityLayer Version ist kein Zahlenformat.
+validation.general.slversion.business=Im privatwirtschaftlichen Bereich muss die SecurityLayerversion mindestes 1.2 betragen. Die SLVersion wurde auf 1.2 ge\u00E4ndert.
+validation.general.targetfriendlyname=Der Name des Bereichs (Target) enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.identificationtype.valid=Der Identifikationstype wird nicht unterst\u00FCtzt.
+validation.general.identificationnumber.empty=Im privatwirtschaftlichen Bereich ist eine Identifikationsnummer erforderlich.
+validation.general.identificationnumber.valid=Die Identifikationsnummer f\u00FCr den privatwirtschaftlichen Bereich enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.identificationnumber.fn.valid=Die Firmenbuchnummer hat kein g\u00FCltiges Format.
+validation.general.oaidentifier.empty=Es wurde kein eindeutiger Identifier f\u00FCr die Online-Applikation angegeben.
+validation.general.oaidentifier.valid=Der eindeutige Identifier f\u00FCr die Online-Applikation ist keine g\u00FCltige URL.
+validation.general.oaidentifier.notunique=Der gew\u00E4hlte eindeutige Identifier ist bereits vorhanden. Eine Eintragung der Online-Applikation ist nicht m\u00F6glich.
+validation.general.stork.sptarget=Der STORK SP-Target ist leer.
+validation.general.stork.sptargetsize=Die Definition von STORK SP-Target ist nicht korrekt: zu viele Buchstaben.
+validation.general.bkuselection.filename.valid=Der Dateiname des BKU-Selektion Templates enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.bkuselection.file.valid=Das BKU-Selektion Templates konnte nicht geladen werden.
+validation.general.bkuselection.file.selected=Es kann nur EIN BKU-Selektion Template angegeben werden.
+validation.general.sendassertion.filename.valid=Der Dateiname des Send-Assertion Templates enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.sendassertion.file.valid=Das Send-Assertion Templates konnte nicht geladen werden.
+validation.general.sendassertion.file.selected=Es kann nur EIN Send-Assertion Template angegeben werden.
+validation.general.testcredentials.oid.valid=Die Testdaten OID {0} ist ung\u00FCltig.
+
+validation.bPKDec.keyStorePassword.empty=Das Password f\u00FCr den KeyStore ist leer.
+validation.bPKDec.keyStorePassword.valid=Das Password f\u00FCr den KeyStore enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.bPKDec.keyAlias.empty=Der Schl\u00FCsselname ist leer.
+validation.bPKDec.keyAlias.valid=Der Schl\u00FCsselname enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.bPKDec.keyPassword.empty=Das Password f\u00FCr den privaten Schl\u00FCssel ist leer.
+validation.bPKDec.keyPassword.valid=Das Password f\u00FCr den privaten Schl\u00FCssel enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.bPKDec.keyStore.filename.valid=Der Dateiname des KeyStores enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.bPKDec.keyStore.file.valid=Der KeyStore konnte nicht geladen oder ge\u00F6ffnet werden. Eventuell sind das Passwort oder der Schl\u00FCsselname nicht korrekt.
+validation.bPKDec.keyStore.file.selected=Es kann nur EIN KeyStore angegeben werden.
+
+validation.stork.cpeps.cc=CPEPS L\u00E4ndercode folgt nicht ISO 3166-2
+validation.stork.cpeps.empty=CPEPS Konfiguration ist unvollst\u00E4ndig
+validation.stork.cpeps.url=CPEPS URL ist ung\u00FCltig
+validation.stork.cpeps.duplicate=L\u00E4ndercodes sind nicht eindeutig
+validation.stork.requestedattributes=STORK Attribute sind fehlerhaft. Bsp.: attr1, attr2
+validation.stork.qaa.outofrange=G\u00FCltige QAA Werte sind 1, 2, 3, und 4
+validation.stork.attributes.empty=Es muss mindestens ein Attribut definiert sein
+validation.stork.ap.url.valid=Ung\u00FCltige AttributProvider Url
+validation.stork.ap.name.empty=Ung\u00FCltiger AttributProvider Name
+validation.stork.ap.name.valid=Ung\u00FCltiger AttributProvider Name
+validation.stork.ap.attributes.valid=Ung\u00FCltige Attributconfiguration f\u00FCr ein Attribut Provider Plugin. Feld darf nicht leer sein und ist als csv anzugeben.
+
+validation.pvp2.metadataurl.empty=Keine Metadaten URL angegeben.
+validation.pvp2.metadataurl.valid=Die Metadaten URL wei\u00DFt kein g\u00FCltiges URL Format auf.
+validation.pvp2.metadataurl.read=Unter der angegebenen Metadaten URL konnten keine Informationen abgerufen werden.
+validation.pvp2.metadata.verify.sig=Die Metadaten konnten nicht mit dem angegebenen Zertifikat verifziert werden.
+validation.pvp2.metadata.verify.schema=Die Schema-Validierung der Metadaten ist fehlgeschlagen.
+validation.pvp2.metadata.verify.general=Bei der Validierung der Metadaten ist ein allgemeiner Fehler aufgetreten.
+validation.pvp2.certificate.format=Das angegebene PVP2 Zertifikat wei\u00DFt kein g\u00FCltiges Format auf.
+validation.pvp2.certificate.notfound=Kein PVP2 Zertifikat eingef\u00FCgt.
+validation.pvp2.metadata.ssl=Das SSL Serverzertifikat des Metadaten Service ist nicht vertrauensw\u00FCrdig.
+validation.pvp2.metadata.validation=Die Metadaten konnten von der angegebenen URL geladen werden, jedoch schlug die Validierung der Metadaten fehl.
+
+validation.sso.logouturl.empty=Eine URL zum Single Log-Out Service ist erforderlich.
+validation.sso.logouturl.valid=Die URL zum Single Log-Out Service wei\u00DFt kein g\u00FCltiges Format auf.
+
+validation.interfederation.moaidp.queryurl.valid=Die URL zum AttributQuery Service wei\u00DFt kein g\u00FCltiges Format auf.
+validation.interfederation.moaidp.queryurl.empty=Die URL zum AttributQuery Service muss konfiguriert werden.
+validation.interfederation.moaidp.metadataurl.publicservice=Die Domain des Metadaten Services f\u00FCr diesen IDP erlaubt nur Applikationen aus dem privatwirtschaftlichen Bereich.
+validation.interfederation.gateway.entityID.valid=Die EntityID zum PVP Portal wei\u00DFt kein g\u00FCltiges Format auf.
+validation.interfederation.gateway.entityID.empty=Die EntityID zum PVP Portal muss konfiguriert werden.
+
+validation.saml1.providestammzahl=ProvideStammZahl kann nicht mit Applikationen aus dem privatwirtschaftlichen Bereich kombiniert werden.
+
+validation.general.bkuselection.specialfeatures.valid=Die speziellen Einstellungen f\u00FCr die BKU Auswahl (Vollmachtsanmeldung ausblenden / zwingend voraussetzen) k\u00F6nnen nicht in Kombination mit SSO verwendet werden.
+validation.general.bkuselection.specialfeatures.combination=Eine zwingend erforderliche Vollmachtenanmeldung in Kombination mit einer ausgeblendeten Vollmachtenauswahlcheckbox ist nicht m\u00F6glich.
+validation.general.form.color.background=Die Hintergrundfarbe f\\u00FCr die BKU Auswahl enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.color.front=Die Vordergrundfarbe f\\u00FCr die BKU Auswahl enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.header.color.back=Die Hintergrundfarbe der BKU-Auswahl\\u00FCberschrift enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.header.color.front=Die Vordergrundfarbe der BKU-Auswahl\\u00FCberschrift enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.header.text=Die BKU-Auswahl\\u00FCberschrift enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.form.button.color.back.focus=Die Hintergrundfarbe f\\u00FCr Focus der BKU-Auswahlbuttons enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.button.color.back=Die Hintergrundfarbe der BKU-Auswahlbuttons enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.button.color.front=Die Vordergrundfarbe der BKU-Auswahlbuttons enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.appletredirecttarget=Der RedirectTarget beinhaltet einen ung\\u00FCltiten Wert.
+validation.general.form.fonttype=Der BKU-Auswahl Schrifttyp enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}
+validation.general.form.applet.width=Die Appleth\u00F6he ist keine g\\u00FCltige Zahl.
+validation.general.form.applet.height=Die Appletbreite ist keine g\\u00FCltige Zahl.
diff --git a/id/moa-id-webgui/src/main/resources/applicationResources_en.properties b/id/moa-id-webgui/src/main/resources/applicationResources_en.properties
new file mode 100644
index 000000000..420ac27ec
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/applicationResources_en.properties
@@ -0,0 +1,522 @@
+title=MOA-ID 2.x Configuration Tool
+
+
+config.01=Configfile is not found. ({0})
+config.02=Configfile is not readable. ({0})
+config.03=Hibernate Database connector can not be initialized
+config.04=OpenSAML (PVP2 Login) can not be initialized
+config.05=Configuration file is not defined
+config.06=Configfile {1} does not start with {0} prefix.
+
+error.title=Error:
+error.login.internal=The error occurred during the processing. Please try again or contact Administrator.
+error.general.text=During the processing the error condition occured. Please try again or contact the administrator.
+errors.listOAs.noOA=There is no Online-Application found in the database.
+errors.listIDPs.noIDP=There is no interfederation IdentityProvider found in the database.
+errors.edit.oa.oaid=There is no valid Online-Application ID transfered.
+errors.edit.oa.oaid.allowed=You do not possess the necessary rights in order to access this Online-Application.
+error.oa.pvp2.certificate=Provided PVP2 certificate could not be read.
+error.db.oa.store=The configuration could not be saved in the database.
+errors.notallowed=You do not posses necessary righs in order to use this function.
+errors.importexport.nofile=There is no file provided.
+errors.importexport.legacyimport=The Import of the legacy configuration was interrupted due to the error. (Error={0}).
+errors.importexport.export=The MOA-ID 2.x configuration could not be exported to XML file. (Error={0})
+errors.importexport.import=The import of XML configuration was interrupted due to the error. (Error={0}).
+errors.importexport.export.noconfig=The configuration could not be exported as there is no MOA-ID configuration available.
+errors.edit.user.userid=There is no valid user ID provided.
+errors.edit.user.save=The user could not be inserted in the database.
+errors.edit.user.notallowed=The editing of the other users configuration can be only done by administrators.
+error.login=The login procedure was interrupted. Please try again.
+error.mail.send=The message could not be sent to the provided address.
+error.mail.verification=The verification procedure was interrupted due to the error. Please try again.
+error.editoa.mailverification=The administration of the Online-Applications is temporarly deactivated because the email address of user's account is not verified.
+error.bkuformpreview.notpossible="The preview could not be generated as due to internal error."
+error.oa.oauth.redirecturi=Redirect URL ist not valid URL
+error.oa.oauth.clientSecret=Client-Secret cannot be blank
+error.oa.oauth.keyname=Key-Name cannot be blank
+error.oa.oauth.keystore=Keystore cannot be blank and has to be provided in the form of valid URL.
+
+mail.userrequest.subject=Requesting accounts - MOA-ID 2.x Config Tool
+
+
+webpages.slo.error=LogOut process finished with an error. For security reasons, please close your browser.
+webpages.slo.success=LogOut process finished successful
+
+webpages.error.header=The error occured
+webpages.index.header=Welcome to MOA-ID 2.x Configuration
+webpages.index.desciption.head=In order to use this service you should log in
+webpages.index.login=Login
+webpages.index.logout=Logout
+webpages.index.login.pvp2=Login with Buergerkarte or Handy-Signature
+webpages.index.login.notallowed=The user name or password are wrong, or the user account is not activated.
+webpages.index.username.unkown=The user is unknown.
+webpages.index.username.notactive=The user is still not activated by the administrator.
+webpages.index.password.false=The password is not valid.
+
+webpages.inportexport.header=Import/export configuration
+webpages.inportexport.success=The configuration was imported successfully
+webpages.inportexport.legacyimport.header=Import legacy configuration (MOA-ID < 2.0)
+webpages.inportexport.legacyimport.upload=Legacy configuration
+webpages.edit.import=Import
+webpages.edit.export=Export
+webpages.inportexport.import.header=MOA-ID 2.x configuration
+webpages.inportexport.import.upload=Import configuration
+webpages.inportexport.import.download=Export configuration
+webpages.inportexport.descripten=WARNING\: The imported configuration will completely replace currently active configuration\!
+
+webpages.usermanagement.newuser=Create new user
+webpages.usermanagement.header=User management
+webpages.listUsers.list.header=List all users
+webpages.listUsers.list.first=Surname-/Company
+webpages.listUsers.list.second=Name
+webpages.listUsers.list.third=User name
+webpages.edituser.header=User data
+webpages.edituser.givenname=Name
+webpages.edituser.familyName=Surname
+webpages.edituser.institut=Organization
+webpages.edituser.phone=Phone number
+webpages.edituser.mail=Email Address
+webpages.edituser.access.header=Login
+webpages.edituser.username=User name
+webpages.edituser.password=Password
+webpages.edituser.password_second=Repeat password
+webpages.edituser.bpk=BPK
+webpages.edituser.role.header=Rights and roles
+webpages.edituser.active=The user is activated
+webpages.edituser.admin=The user is admin
+webpages.edit.delete.user=Remove user
+webpages.edit.newUser=Request new user
+webpages.edituser.isusernamepasswordallowed=Allow username/password
+webpages.edituser.changemailaddress.verify=Your email address should be verified, in order to be able to manage Online-Applications. The verification email has been already sent to your email-address.
+webpages.edituser.verify.mail.button=Check email address
+webpages.edituser.verify.mail.message=Verification email has been sent to your inbox.
+
+webpages.mainpage.menu.oa.insert=Create new application
+webpages.mainpage.menu.oa.display=My applications
+webpages.mainpage.menu.oa.search=Find application
+webpages.mainpage.menu.general.user=My data
+webpages.mainpage.menu.general.importexport=Import/export
+webpages.mainpage.menu.general.config.moaid=General configuration
+webpages.mainpage.menu.general.usermanagement=User management
+webpages.mainpage.menu.general.adminrequests=Open requests
+
+webpages.mainpage.menu.interfederation=Interfederation
+webpages.interfederation.header=IDP Interfederation Configuration
+webpages.interfederation.list.header=List of all interfederation IDPs
+webpages.inderfederation.moaid.businessServiceIDP=BusinessService IDP
+webpages.inderfederation.moaid.header=Interfederation
+webpages.inderfederation.moaid.inboundSSO=Allow inbound SSO
+webpages.inderfederation.moaid.outboundSSO=Allow outbound SSO
+webpages.inderfederation.moaid.storeSSOSession=Store SSO session
+webpages.inderfederation.moaid.attributQueryURL=AttributQuery service URL
+webpages.inderfederation.moaid.sendPassivRequest=Use SAML2 isPassive attribute
+webpages.inderfederation.moaid.perfomLocalAuthOnError=Local authentication in case of an error
+webpages.interfederation.new.header=Add new Identity Provider
+webpages.interfederation.new.vidp=STORK VIDP
+webpages.interfederation.new.moaid=MOA-ID IDP
+webpages.interfederation.new.gateway=STORK<->PVP Gateway
+webpages.inderfederation.gateway.entityID=PVP portal EntityID
+
+webpages.moaconfig.save.success=MOA-ID has been successfully saved.
+webpages.moaconfig.header=General configuration
+webpages.oaconfig.general.publicURLPreFix=Public URL Prefix
+webpages.moaconfig.defaultbkus.header=Default CCE
+webpages.moaconfig.slrequesttemplates.header=SecurityLayer Request Templates
+webpages.moaconfig.slrequesttemplates.local=Local CCE
+webpages.moaconfig.slrequesttemplates.handy=Mobile CCE
+webpages.moaconfig.slrequesttemplates.online=Online CCE
+webpages.moaconfig.certificates.header=Certificate check
+webpages.moaconfig.certificates.certstore=CertStoreDirectory
+webpages.moaconfig.certificates.trustmanagerrev=TrustManagerRevocationChecking
+webpages.moaconfig.certificates.trustCACerts=TrustedCACertificates
+webpages.moaconfig.certificates.chainingmode=ChainingMode
+webpages.moaconfig.timeout.header=Session TimeOuts
+webpages.moaconfig.timeout.assertion=Assertion [sec]
+webpages.moaconfig.timeout.MOASessionCreated=SSO Session authenticated [sec]
+webpages.moaconfig.timeout.MOASessionUpdated=SSO Session last access[sec]
+webpages.moaconfig.moasp.header=MOA-SP configuration
+webpages.moaconfig.moasp.idltrustprofile=Trustprofile for IdentityLink
+webpages.moaconfig.moasp.authtrustprofile=Trustprofile for authentication block
+webpages.moaconfig.moasp.authblocktransform=Transformations for authentication block
+webpages.moaconfig.moasp.url=URL for MOA-SP Service
+webpages.moaconfig.identitylinksigners=IdentityLinkSigners
+webpages.moaconfig.services.header=External Services
+webpages.moaconfig.services.mandates=Online-Mandate Service URL
+webpages.moaconfig.services.szrgw=SZR Gateway Service URL
+webpages.moaconfig.sso.header=Single Sign-On
+webpages.moaconfig.sso.PublicUrl=SSO Service URL-Prefix
+webpages.moaconfig.sso.FriendlyName=SSO Service Name
+webpages.moaconfig.services.sso.Target=SSO Service Target
+webpages.moaconfig.services.sso.SpecialText=SSO AuthBlockText
+webpages.moaconfig.protocols.header=Logging
+webpages.moaconfig.protocols.allowed.header=Activate logging
+webpages.moaconfig.protocols.legacy.header=Activate Legacy Mode
+webpages.moaconfig.protocols.legacy.saml1=SAML1
+webpages.moaconfig.protocols.legacy.pvp2=PVP2.1
+webpages.moaconfig.protocols.oauth=OpenID Connect
+webpages.moaconfig.protocols.saml1.header=SAML1 Configuration
+webpages.moaconfig.protocols.saml1.sourceID=SourceID
+webpages.moaconfig.protocols.pvp2.header=PVP2 Configuration
+webpages.moaconfig.protocols.pvp2.PublicUrlPrefix=PVP2 Service URL-Prefix
+webpages.moaconfig.protocols.pvp2.IssuerName=PVP Service Name
+webpages.moaconfig.protocols.pvp2.org.header=Organization
+webpages.moaconfig.protocols.pvp2.org.name=Short description
+webpages.moaconfig.protocols.pvp2.org.displayname=Complete name
+webpages.moaconfig.protocols.pvp2.org.url=Organization's URL
+webpages.moaconfig.protocols.pvp2.contact.header=Contact data
+webpages.moaconfig.protocols.pvp2.contact.surename=Surname
+webpages.moaconfig.protocols.pvp2.contact.givenname=Name
+webpages.moaconfig.protocols.pvp2.contact.email=E-mail address
+webpages.moaconfig.protocols.pvp2.contact.company=Company
+webpages.moaconfig.protocols.pvp2.contact.phone=Phone number
+webpages.moaconfig.protocols.pvp2.contact.type=Contact type
+webpages.moaconfig.sl.transormations.header=SecurityLayer Transformations
+webpages.moaconfig.sl.transormations.filename=File name
+webpages.moaconfig.sl.transormations.upload=Upload new transformations
+
+webpages.listOAs.list.elInfo=Type
+webpages.listOAs.list.first=Unique identifier
+webpages.listOAs.list.second=Name of the Online-Application
+
+webpages.searchoa.header=Find Online-Application
+webpages.searchoa.search.friendlyname=Name of the Online-Applikation
+webpages.searchoa.butten.search=Search
+
+webpages.oaconfig.header=Configuration of the Online-Application
+webpages.oaconfig.general.isActive=Online-Application is activated
+webpages.oaconfig.general.bku.header=CCE configuration
+webpages.oaconfig.general.bku.local=Local CCE
+webpages.oaconfig.general.bku.online=Online CCE
+webpages.oaconfig.general.bku.handy=Mobile CCE
+webpages.oaconfig.general.bku.slversion=SecurityLayer Version
+webpages.oaconfig.general.bku.keyboxidentifier=KeyBoxIdentifier
+webpages.oaconfig.general.bku.legacy=SecurityLayerTemplates (Legacy Request)
+webpages.oaconfig.general.bku.sltemplate.first=SecurityLayer Template
+webpages.oaconfig.general.bku.sltemplate.second=SecurityLayer Template (WhiteList)
+webpages.oaconfig.general.bku.sltemplate.third=SecurityLayer Template (WhiteList)
+
+webpages.oaconfig.general.testing.header=Test Credentials
+webpages.oaconfig.general.testing.usetesting=Allow test credentials
+webpages.oaconfig.general.testing.oids=Use special test credential OIDs
+
+webpages.oaconfig.general.bku.delete=Remove
+webpages.oaconfig.general.bku.bkuselection.header=CCE-Selection Template
+webpages.oaconfig.general.bku.bkuselection.filename=Filename
+webpages.oaconfig.general.bku.bkuselection.upload=Upload new template
+webpages.oaconfig.general.bku.sendassertion.header=Send-Assertion Template
+webpages.oaconfig.general.bku.sendassertion.filename=Filename
+webpages.oaconfig.general.bku.sendassertion.upload=Upload new template
+
+webpages.oaconfig.bPKEncDec.header=Foreign-bPK Configuration
+webpages.oaconfig.bPKEncDec.keystore.header=Keystore configuration
+webpages.oaconfig.bPKEncDec.filename=Filename
+webpages.oaconfig.bPKEncDec.delete=Remove
+webpages.oaconfig.bPKEncDec.upload=Upload new keystore
+webpages.oaconfig.bPKEncDec.keyStorePassword=Keystore password
+webpages.oaconfig.bPKEncDec.keyAlias=Key alias
+webpages.oaconfig.bPKEncDec.keyPassword=Key password
+
+webpages.oaconfig.general.identification=Unique identifier (PublicURLPrefix)
+webpages.oaconfig.general.mandate.header=Mandates
+webpages.oaconfig.general.mandate.profiles=Profile
+webpages.oaconfig.general.mandate.usemandate=Mandates (ja/nein)
+webpages.oaconfig.general.friendlyname=Name of the Online-Application
+webpages.oaconfig.general.isbusinessservice=Private sector application
+webpages.oaconfig.general.isstorkservice=Stork application
+webpages.oaconfig.general.public.header=Public sector
+webpages.oaconfig.general.stork.header=STORK sector
+webpages.oaconfig.general.stork.countrycode=Country code
+webpages.oaconfig.general.target.friendlyname=Name of the sector (arbitrary defined)
+webpages.oaconfig.general.target.admin.checkbox=Define other sector arbitrary
+webpages.oaconfig.general.target.admin=Sector (arbitrary defined)
+webpages.oaconfig.general.target.friendlyname.disabled=Name of the sector (defined by admin)
+webpages.oaconfig.general.target.admin.disabled=Sector (defined by admin)
+webpages.oaconfig.general.target=Sector (Target)
+webpages.oaconfig.general.target.subsector=Sub-sector
+webpages.oaconfig.general.target.subsector.checkbox=Refine target
+webpages.oaconfig.general.business.header=Private sector
+webpages.oaconfig.general.business.value=Identification number
+webpages.oaconfig.general.business.type=Type of identification number
+webpages.oaconfig.general.aditional.header=Additional general settings
+webpages.oaconfig.general.aditional.authblocktext=AuthblockText
+webpages.oaconfig.general.aditional.iframe=Selection of citizen card in IFrame
+webpages.oaconfig.general.aditional.useUTC=Use UTC time
+webpages.oaconfig.general.aditional.calculateHPI="TODO!"
+webpages.oaconfig.general.isHideBPKAuthBlock=Hide bPK/wbPK from AuthBlock
+
+webpages.oaconfig.menu.saml1.show=Show SAML1 configuration
+webpages.oaconfig.menu.saml1.hidden=Hide SAML1 configuration
+webpages.oaconfig.menu.pvp2.show=Show PVP2 configuration
+webpages.oaconfig.menu.pvp2.hidden=Hide PVP2 configuration
+webpages.oaconfig.menu.oauth20.show=Show OAuth 2.0 configuration
+webpages.oaconfig.menu.oauth20.hidden=Hide OAuth 2.0 configuration
+webpages.oaconfig.menu.vidp.show=Show VIDP configuration
+webpages.oaconfig.menu.vidp.hidden=Hide VIDP configuration
+
+webpages.oaconfig.menu.stork=STORK configuration
+
+webpages.oaconfig.protocols.header=Authentication protocols
+
+webpages.oaconfig.general.BKUSelection.button.show=Show configuration of login window
+webpages.oaconfig.general.BKUSelection.button.hidden=Hide configuration of login window
+webpages.oaconfig.general.BKUSelection.header=Configuration of form
+webpages.oaconfig.general.BKUSelection.isOnlyMandateLoginAllowed=Allow mandated login only
+webpages.oaconfig.general.BKUSelection.backgroundcolor=Background color of CCE-Auswahl
+webpages.oaconfig.general.BKUSelection.frontcolor=Foreground color of CCE-Auswahl
+webpages.oaconfig.general.BKUSelection.header.backgroundcolor=Background color of header
+webpages.oaconfig.general.BKUSelection.header.frontcolor=Foreground color of header
+webpages.oaconfig.general.BKUSelection.header.text=Header text
+webpages.oaconfig.general.BKUSelection.header.button.background=Background color of button
+webpages.oaconfig.general.BKUSelection.header.button.background.focus=Background color of button (focus)
+webpages.oaconfig.general.BKUSelection.header.button.front=Foreground color of buton
+webpages.oaconfig.general.BKUSelection.redirectTarget=Targetparameter
+webpages.oaconfig.general.BKUSelection.fonttype=Form font type
+webpages.oaconfig.general.BKUSelection.fonttype.list=Form font type list
+webpages.oaconfig.general.BKUSelection.header.applet.height=Height of applet
+webpages.oaconfig.general.BKUSelection.header.applet.width=Width of applet
+
+webpages.oaconfig.sso.header=Single Sign-On
+webpages.oaconfig.sso.singlelogouturl=Single Log-Out URL
+webpages.oaconfig.sso.useauthdataframe=Additional user request
+webpages.oaconfig.sso.usesso=Use Single Sign-On
+
+webpages.oaconfig.stork.header=Secure idenTity acrOss boRders linKed
+webpages.oaconfig.stork.usestork=Activate STORK Logon
+webpages.oaconfig.stork.attributes.header=requested attributes
+webpages.oaconfig.stork.attributes.used=require?
+webpages.oaconfig.stork.attributes.name=Attribute name
+webpages.oaconfig.stork.attributes.mandatory=mandatory?
+webpages.oaconfig.stork.enabledcpeps=activated target countries
+webpages.moaconfig.stork.pepslist=C-PEPS configuration
+webpages.moaconfig.stork.newpeps=Configure new PEPS
+webpages.moaconfig.stork.removepeps=remove
+webpages.moaconfig.stork.qaa.default=Select standard QAA-Level
+webpages.moaconfig.stork.attributes.heading=Configuration of attributes
+webpages.moaconfig.stork.attributes.new=Add new attribute
+webpages.moaconfig.stork.attributes.heading.name=Name of attribute
+webpages.moaconfig.stork.attributes.heading.mandatory=mandatory
+webpages.moaconfig.stork.attributes.remove=remove
+webpages.moaconfig.stork.qaa=Select minimal QAA-Level for current OA
+
+webpages.oaconfig.protocols.saml1.header=SAML1 configuration
+webpages.oaconfig.saml1.isActice=Activate SAML1
+webpages.oaconfig.saml1.provideStammZahl=Transfer SourcePIN
+webpages.oaconfig.saml1.provideAuthBlock=Transfer Authentication block
+webpages.oaconfig.saml1.provideIdentityLink=Transfer IdentityLink
+webpages.oaconfig.saml1.provideCertificate=Transfer certificate
+webpages.oaconfig.saml1.provideFullMandateData=Transfer complete mandate data
+webpages.oaconfig.saml1.useCondition=Use condition
+webpages.oaconfig.saml1.conditionLength=Condition length
+webpages.oaconfig.saml1.provideAllErrors=Transfer errors to application
+
+webpages.oaconfig.protocols.pvp2.header=PVP2.x configuration
+webpages.oaconfig.pvp2.reload=Load new PVP2.x configuration
+webpages.oaconfig.pvp2.metaDataURL=Metadata URL
+webpages.oaconfig.pvp2.certifcate=Upload certificate
+webpages.oaconfig.pvp2.certifcate.info=Certificate infos
+
+webpages.oaconfig.protocols.oauth20.header=OAuth 2.0 configuration
+webpages.oaconfig.oauth20.clientId=Client ID
+webpages.oaconfig.oauth20.clientSecret=Client Password
+webpages.oaconfig.oauth20.redirectUri=Redirect URI
+
+webpages.oaconfig.vidp.enabled=VIDP interface is active
+webpages.oaconfig.vidp.requireconsent=Ask the user for attributes transfer consent?
+webpages.oaconfig.vidp.ap.new=Create new attribute provider
+webpages.oaconfig.vidp.ap.remove=Remove
+webpages.oaconfig.vidp.ap.list=List of configured attribute providers
+
+
+message.title=Announcement:
+webpages.oaconfig.success=The Online-Application {0} could be saved.
+webpages.oaconfig.success.admin=Online-Applikation {0} could be saved. The activation by the Administrator is necessary.
+webpages.oaconfig.cancle=The processing of Online-Applikation {0} was interrupted.
+webpages.idp.success=IdentityProvider {0} could be saved.
+webpages.idp.cancle=The processing of IdentityProvider {0} was interrupted.
+
+webpages.oaconfig.delete.message=Online-Application {0} was succesfully removed.
+webpages.oaconfig.delete.error=Online-Application {0} could not be removed.
+
+webpages.edit.save=Save changes
+webpages.edit.back=Forget changes and go back
+webpages.edit.delete=Remove Online-Application
+
+webpages.header.info=You are logged in as:
+webpages.header.lastlogin=Last login on:
+
+webpages.openadminrequests.header=Active requests:
+webpages.openadminrequests.users.header=User accounts
+webpages.openadminrequests.oas.header=Online-Applications
+
+
+validation.newuser.mailaddress=Validation of eMail address completed.
+
+validation.edituser.familyname.empty=The surname is blank.
+validation.edituser.familyname.valid=The surname contains forbidden characters. The following characters are not allowed\: {0}
+validation.edituser.givenname.empty=The name is blank.
+validation.edituser.givenname.valid=The name contains forbidden characters. The following characters are not allowed\: {0}
+validation.edituser.institut.empty=The organization is blank.
+validation.edituser.institut.valid=The organization contains forbidden characters. The following characters are not allowed\: {0}
+validation.edituser.mail.empty=The eMail address is blank.
+validation.edituser.mail.valid=The eMail address has invalid format.
+validation.edituser.phone.empty=The phone number is blank.
+validation.edituser.phone.valid=The phone number has invalid form
+validation.edituser.username.empty=The user name is blank.
+validation.edituser.username.valid=The user name contains forbidden characters. The following characters are not allowed\: {0}
+validation.edituser.username.duplicate=The user name is already used
+validation.edituser.password.empty=The password is blank.
+validation.edituser.password.valid=The password could not be transferred into valid key.
+validation.edituser.password.equal=The passwords are not identical.
+validation.edituser.bpk.valid=BPK contains forbidden characters. The following characters are not allowed\: {0}
+
+validation.general.SAML1SourceID=SAML1SourceID contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.publicURLprefix.empty=Public URL Prefix is blank.
+validation.general.publicURLprefix.valid=Public URL Prefix has invalid format.
+validation.general.businessservice.empty=Online application is no public or private application.
+validation.general.certStoreDirectory.empty=CertStoreDirectory is blank.
+validation.general.certStoreDirectory.valid=CertStoreDirectory Feld contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.Defaultchainigmode.empty=There is no DefaultChainingMode selected.
+validation.general.Defaultchainigmode.valid=DefaultChainingMode contains invalid value.
+validation.general.IdentityLinkSigners.empty=There is no IdentityLinkSigner given
+validation.general.IdentityLinkSigners.valid=IdentityLinkSigner in the line {0} contains forbidden characters. The following characters are not allowed\: {1}
+validation.general.mandateservice.valid=URL for Online-Mandating Service has invalid format.
+validation.general.moasp.auth.transformation.empty=Transformation for authentication block is blank.
+validation.general.moasp.auth.transformation.valid=Transformation for authentication block in the line {0} contians forbidden characters. The following characters are not allowed\: {1}
+validation.general.moasp.auth.trustprofile.empty=TrustProfile for checking of authentication block is blank.
+validation.general.moasp.auth.trustprofile.valid=TrustProfile for checking of authentication block contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.moasp.idl.trustprofile.empty=TrustProfile for checking of IdentityLink is blank.
+validation.general.moasp.idl.trustprofile.valid=TrustProfile for checking of IdentityLink contain forbidden characters. The following characters are not allowed\: {0}
+validation.general.moaspss.url.valid=URL for MOA-SP/SS service has invalid format.
+validation.general.protocol.pvp2.issuername.valid=PVP2\: service name contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.protocol.pvp2.org.displayname.valid=PVP2 organization\: complete name contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.protocol.pvp2.org.name.valid=PVP2 organization\: Short description contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.protocol.pvp2.org.url.valid=PVP2 organization\: URL has invalid format.
+validation.general.protocol.pvp2.serviceurl.valid=PVP2\: service URL-Prefix has invalid format.
+validation.general.protocol.pvp2.contact.company.valid=PVP2 contact data\: the company name contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.protocol.pvp2.contact.givenname.valid=PVP2 contact data\: the surname contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.protocol.pvp2.contact.surename.valid=PVP2 contact data\: the name contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.protocol.pvp2.contact.type.valid=PVP2 contact data: the provided contact type is not existing.
+validation.general.protocol.pvp2.contact.mail.valid=PVP2 contact data\: the e-Mail address provided is invalid.
+validation.general.protocol.pvp2.contact.phone.valid=PVP2 contact data\: the phone number provided is invalid.
+validation.general.timeouts.assertion.valid=The field assertion timeout has invalid value.
+validation.general.timeouts.moasessioncreated.valid=The field MOASessionCreated TimeOut has invalid value.
+validation.general.timeouts.moasessionupdated.valid=The field MOASessionUpdated TimeOut has invalid value.
+
+validation.general.slrequest.handy.empty=URL for SecurityLayer Template for die Handy-CCE is blank.
+validation.general.slrequest.handy.valid=URL for SecurityLayer Template for Mobile-CCE has invalid format.
+validation.general.slrequest.local.empty=URL for SecurityLayer Template for local CCE is blank.
+validation.general.slrequest.local.valid=URL for SecurityLayer Template for local CCE has invalid format.
+validation.general.slrequest.online.empty=URL for SecurityLayer Template for Online-CCE is blank.
+validation.general.slrequest.online.valid=URL for SecurityLayer Template for die Online-CCE has invalid format.
+validation.general.sso.friendlyname.valid=SSO Service Name contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.sso.identificationnumber.valid=SSO IdentificationNumber contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.sso.publicurl.valid=SSO Service URL-Prefix has invalid format.
+validation.general.sso.specialauthtext.valid=SSO AuthBlockText contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.sso.target.empty=SSO Target field is blank.
+validation.general.sso.target.valid=SSO Target field contains invalid target.
+validation.general.szrgw.url.valid=URL for SZR Gateway has invalid format.
+validation.general.trustedcacerts.empty=Field TrustedCACertificates is blank.
+validation.general.trustedcacerts.valid=Das Feld TrustedCACertificates contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.slrequest.filename.valid=File name of provided AuthBlock transformation contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.slrequest.file.valid=The provided AuthBlock transformation could not be loaded.
+validation.general.slrequest.file.empty=The AuthBlock transformation is empty
+
+validation.general.aditionalauthblocktext=The additional text for AuthBlock contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.bku.handy.empty=URL for Mobile-CCE is blank.
+validation.general.bku.handy.valid=URL for Mobile-CCE has invalid format.
+validation.general.bku.local.empty=URL for local CCE is blank.
+validation.general.bku.local.valid=URL for local CCE has invalid format.
+validation.general.bku.online.empty=URL for Online-CCE is blank.
+validation.general.bku.online.valid=URL for Online-CCE has invalid format.
+validation.general.oafriendlyname.empty=There is no name for Online-Application provided.
+validation.general.oafriendlyname.valid=The name of Online-Application contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.keyboxidentifier.empty=There is no KeyBoxIdentifier selected.
+validation.general.keyboxidentifier.valid=The KeyBoxIdentifier has invalid format.
+validation.general.sltemplates.empty=When the Legacy mod is used werden, at least one SecurityLayer Template should be provided.
+validation.general.sltemplate1.valid=First SecurityLayer Template URL has invalid format.
+validation.general.sltemplate2.valid=Second SecurityLayer Template URL has invalid format.
+validation.general.sltemplate3.valid=Third SecurityLayer Template URL has invalid format.
+validation.general.mandate.profiles=The list of Mandate profiles contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.mandate.usemandate=The configuration of Mandate profile is only with activated mandating support possible.
+validation.general.target.empty=The Target for the Online-Application is blank.
+validation.general.target.valid=The Target for the Online-Application has invalid format.
+validation.general.target.subsector.valid=The Target-Subsector has invalid format.
+validation.general.target.admin.valid=The Admin-Target for the Online-Application has invalid format.
+validation.general.target.publicserviceurl=The domain of unique identifier for the Online-Application permits applications from the private sector only.
+validation.general.slversion=The version of SecurityLayer is not the number.
+validation.general.slversion.business=In private sector the version of SecurityLayer should be at least 1.2. SLVersion was set on 1.2.
+validation.general.targetfriendlyname=The name of the sector (Target) contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.identificationtype.valid=The identification type is not supported.
+validation.general.identificationnumber.empty=The identification number is necessary for private sector.
+validation.general.identificationnumber.valid=The identification number for the private sector contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.identificationnumber.fn.valid=The identification number has invalid format.
+validation.general.oaidentifier.empty=There is no unique identifier for the Online-Application provided.
+validation.general.oaidentifier.valid=The unique identifier for the Online-Application is not valid URL.
+validation.general.oaidentifier.notunique=The selected unique identifier is already available. Registration of the Online-Application was not possible.
+validation.general.stork.sptarget=STORK SP-Target is blank.
+validation.general.stork.sptargetsize=The Definition of STORK SP-Target is incorrect: too many characters.
+validation.general.bkuselection.filename.valid=The file name of CCE-selection template contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.bkuselection.file.valid=The CCE-selection template could not be loaded.
+validation.general.bkuselection.file.selected=Only one CCE-selection template can be provided.
+validation.general.sendassertion.filename.valid=The file name of Send-Assertion Templates contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.sendassertion.file.valid=Send-Assertion Templates could not be loaded.
+validation.general.sendassertion.file.selected=Only one Send-Assertion Template can be provided.
+validation.general.testcredentials.oid.valid=The OID {0} for test credentials is not a valid.
+
+validation.bPKDec.keyStorePassword.empty=KeyStore password is blank.
+validation.bPKDec.keyStorePassword.valid=The keyStore password contains forbidden characters. The following characters are not allowed\: {0}
+validation.bPKDec.keyAlias.empty=Key alias is blank.
+validation.bPKDec.keyAlias.valid=The key alias contains forbidden characters. The following characters are not allowed\: {0}
+validation.bPKDec.keyPassword.empty=Key password is blank.
+validation.bPKDec.keyPassword.valid=The key password contains forbidden characters. The following characters are not allowed\: {0}
+validation.bPKDec.keyStore.filename.valid=The keyStore filename contains forbidden characters. The following characters are not allowed\: {0}
+validation.bPKDec.keyStore.file.valid=KeyStore can not loaded. Maybe keyStore password or key alias are wrong.
+validation.bPKDec.keyStore.file.selected=Only one keyStore can be provided.
+
+validation.stork.cpeps.cc=CPEPS country code is not based on 3166-2
+validation.stork.cpeps.empty=CPEPS configuration is incomplete
+validation.stork.cpeps.url=CPEPS URL is invalid
+validation.stork.cpeps.duplicate=Country codes are not unique
+validation.stork.requestedattributes=STORK attributes are incorrect. Example: attr1, attr2
+validation.stork.qaa.outofrange=Valid QAA values are 1, 2, 3, and 4
+validation.stork.attributes.empty=Only one attribute can be provided
+validation.stork.ap.url.valid=Invalid URL of AttributeProvider
+validation.stork.ap.name.empty=Invalid name of AttributeProvider
+validation.stork.ap.name.valid=Invalid Name of AttributeProvider
+validation.stork.ap.attributes.valid=Invalid attribute configuration for Attribute Provider Plugin. The field may not be blank und must be provided as csv.
+
+validation.pvp2.metadataurl.empty=There is no metadata URL provided.
+validation.pvp2.metadataurl.valid=The metadata URL has invalid URL format .
+validation.pvp2.metadataurl.read=No information could be found under provided URL.
+validation.pvp2.metadata.verify.sig=The metadata could not be verified with the provided certificate.
+validation.pvp2.metadata.verify.schema=Metadata schema validation FAILED.
+validation.pvp2.metadata.verify.general=Metadata validation has an generic error.
+validation.pvp2.certificate.format=The provided PVP2 certificate has invalid format.
+validation.pvp2.certificate.notfound=There is no PVP2 inserted.
+validation.pvp2.metadata.ssl=The SSL server certificate is not trusted.
+
+validation.sso.logouturl.empty=URL for Single Log-Out Service is necessary.
+validation.sso.logouturl.valid=URL for Single Log-Out Service has incorrect format.
+
+validation.interfederation.moaidp.queryurl.valid=URL for AttributQuery Service has incorrect format.
+validation.interfederation.moaidp.queryurl.empty=URL for AttributQuery Service is necessary.
+validation.interfederation.moaidp.metadataurl.publicservice=The domain of Metadata service for that IDP permits private sector only.
+validation.interfederation.gateway.entityID.valid=PVP portal EntityID has an incorrect format.
+validation.interfederation.gateway.entityID.empty=PVP portal EntityID is necessary.
+
+validation.saml1.providestammzahl=ProvideSourcePIN cannot be combined with applications from private sector.
+
+validation.general.bkuselection.specialfeatures.valid=The special settings for the selection of CCE (Hide mandate login / compulsory required) could not be used in combination with SSO.
+validation.general.bkuselection.specialfeatures.combination=Required mandate based in combination with hidden checkbox for selection of mandating is not possible.
+validation.general.form.color.background=Background color for CCE selection contains invalid hexadecimal value. (e.g. \\\#FFFFFF)
+validation.general.form.color.front=Foreground color for CCE selection contains invalid hexadecimal value. (e.g. \\\#FFFFFF)
+validation.general.form.header.color.back=Background color for the caption of CCE selection contains no valid hexadecimal value. (e.g. \\\#FFFFFF)
+validation.general.form.header.color.front=Foreground collor for the caption of CCE selection contains no valid hexadecimal value. (e.g. \\\#FFFFFF)
+validation.general.form.header.text=The caption of CCE contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.form.button.color.back.focus=Die Hintergrundfarbe f\\u00FCr Focus der CCE-Auswahlbuttons enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)
+validation.general.form.button.color.back=Background color for selection buttons for CCE contains no valid hexadecimal value. (e.g. \\\#FFFFFF)
+validation.general.form.button.color.front=Foreground color for selection buttons for CCE contains no valid hexadecimal value. (e.g. \\\#FFFFFF)
+validation.general.form.appletredirecttarget=RedirectTarget contains invalud value.
+validation.general.form.fonttype=Font type for CCE selection contains forbidden characters. The following characters are not allowed\: {0}
+validation.general.form.applet.width=The height of applet is invalid number.
+validation.general.form.applet.height=The width of applet is invalid number.
diff --git a/id/moa-id-webgui/src/main/resources/gui/meta.properties b/id/moa-id-webgui/src/main/resources/gui/meta.properties
new file mode 100644
index 000000000..0abf358d9
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/gui/meta.properties
@@ -0,0 +1,76 @@
+__BASE__.moaidgeneral.0=moa.id.general
+__BASE__.moaidoa.0=moa.id.services.oa
+__BASE__.moaidinterfederation.0=moa.id.services
+
+moa.id.general.__TY=general
+moa.id.general.__CA=General Configuration
+moa.id.general.__DE=General MOA-ID Configuration
+
+moa.id.services.__TY=GROUP
+moa.id.services.__CA=MOA-ID Interfederation Services
+moa.id.services.__DE=Interfederation Services
+
+##Online application##
+moa.id.services.oa.__TY=ARRAY
+moa.id.services.oa.__ADD=true
+moa.id.services.oa.__DEL=true
+moa.id.services.oa.__CA=List of online Applications
+moa.id.services.oa.__DE=All actually configured online application
+moa.id.services.oa.__CTY=moaidoa
+moa.id.services.oa.__CCA=Unique ID;Friendlyname
+moa.id.services.oa.__CIDS=uniqueID;friendlyName
+moa.id.services.oa.__CDE=Online Application
+
+moa.id.services.oa.__TE.friendlyName=Sample Name
+moa.id.services.oa.__TE.uniqueID=http://sampleonline.application.com/
+moa.id.services.oa.__TE.isActive=false
+
+##V-IDP##
+moa.id.services.vidp.__GR=moa.id.services
+moa.id.services.vidp.__TY=ARRAY
+moa.id.services.vidp.__ADD=true
+moa.id.services.vidp.__DEL=true
+moa.id.services.vidp.__CA=List of V-IDPs
+moa.id.services.vidp.__DE=All actually configured V-IDP instances
+moa.id.services.vidp.__CTY=moaidvidp
+moa.id.services.vidp.__CCA=Unique ID;Friendlyname
+moa.id.services.vidp.__CIDS=uniqueID;friendlyName
+moa.id.services.vidp.__CDE=V-IDP
+
+moa.id.services.vidp.__TE.friendlyName=Sample V-IDP
+moa.id.services.vidp.__TE.uniqueID=http://sampleonline.application.com/
+moa.id.services.vidp.__TE.isActive=false
+
+##I-IDP##
+moa.id.services.iidp.__GR=moa.id.services
+moa.id.services.iidp.__TY=ARRAY
+moa.id.services.iidp.__ADD=true
+moa.id.services.iidp.__DEL=true
+moa.id.services.iidp.__CA=List of Interfederation IDPs
+moa.id.services.iidp.__DE=All actually configured I-IDP instances
+moa.id.services.iidp.__CTY=moaidiidp
+moa.id.services.iidp.__CCA=Unique ID;Friendlyname
+moa.id.services.iidp.__CIDS=uniqueID;friendlyName
+moa.id.services.iidp.__CDE=I-IDP
+
+moa.id.services.iidp.__TE.friendlyName=Sample I-IDP
+moa.id.services.iidp.__TE.uniqueID=http://sampleonline.application.com/
+moa.id.services.iidp.__TE.isActive=false
+
+##Gateway##
+moa.id.services.gateway.__GR=moa.id.services
+moa.id.services.gateway.__TY=ARRAY
+moa.id.services.gateway.__ADD=true
+moa.id.services.gateway.__DEL=true
+moa.id.services.gateway.__CA=List of STORK<->PVP Gateways
+moa.id.services.gateway.__DE=All actually configured Gateway instances
+moa.id.services.gateway.__CTY=moaidgateway
+moa.id.services.gateway.__CCA=Unique ID;Friendlyname
+moa.id.services.gateway.__CIDS=uniqueID;friendlyName
+moa.id.services.gateway.__CDE=V-IDP
+
+moa.id.services.gateway.__TE.friendlyName=Sample Gateway
+moa.id.services.gateway.__TE.uniqueID=http://sampleonline.application.com/
+moa.id.services.gateway.__TE.isActive=false
+
+
diff --git a/id/moa-id-webgui/src/main/resources/gui/types/gateway.json b/id/moa-id-webgui/src/main/resources/gui/types/gateway.json
new file mode 100644
index 000000000..50ccd200c
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/gui/types/gateway.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "http://www.egiz.gv.at/dynUI/OA",
+ "typeName": "moaidgateway",
+ "type": "object",
+ "title": "STORK<->PVP Gateway",
+ "format": "tabs",
+ "properties": {
+ "isActive" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/isactive",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "is Active"
+ },
+ "uniqueID": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/uniqueId",
+ "type": "string",
+ "format": "url",
+ "title": "Unique Identifier (PublicURLPrefix)"
+ },
+ "friendlyName": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/friendlyname",
+ "type": "string",
+ "title": "Friendlyname"
+ },
+ "businessservice" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/type",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Private Sector application"
+ },
+ "interfederation": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation",
+ "type": "object",
+ "title": "PVP Gateway",
+ "description": "STORK<->PVP Gateway configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "forward.IDP": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/forward/entityID",
+ "type": "string",
+ "title": "PVP portal EntityID"
+ }
+ }
+ }
+ },
+ "required": ["uniqueID", "friendlyName"]
+}
diff --git a/id/moa-id-webgui/src/main/resources/gui/types/general.json b/id/moa-id-webgui/src/main/resources/gui/types/general.json
new file mode 100644
index 000000000..f12b71eea
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/gui/types/general.json
@@ -0,0 +1,480 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "http://www.egiz.gv.at/dynUI/general",
+ "typeName": "general",
+ "type": "object",
+ "title": "General MOA-ID Configuration",
+ "format": "tabs",
+ "properties": {
+ "publicURLPrefix": {
+ "id": "http://www.egiz.gv.at/dynUI/general/publicurlprefix",
+ "type": "string",
+ "format": "url",
+ "title": "Public URL Prefix"
+ },
+ "defaults.bku": {
+ "id": "http://www.egiz.gv.at/dynUI/general/bkuurls",
+ "type": "object",
+ "title": "Default BKUs",
+ "description": "Default BKUs for authentication",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "onlineBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/bkuurls/online",
+ "type": "string",
+ "format": "url",
+ "title": "Online BKU"
+ },
+ "handyBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/bkuurls/handy",
+ "type": "string",
+ "format": "url",
+ "title": "Handy BKU"
+ },
+ "localBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/bkuurls/local",
+ "type": "string",
+ "format": "url",
+ "title": "Local BKU"
+ }
+ }
+ },
+ "defaults.templates": {
+ "id": "http://www.egiz.gv.at/dynUI/general/templates",
+ "type": "object",
+ "title": "Default SL-Templates",
+ "description": "Default SecurityLayer templates",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "onlineBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/templates/online",
+ "type": "string",
+ "title": "Online BKU"
+ },
+ "handyBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/templates/handy",
+ "type": "string",
+ "title": "Handy BKU"
+ },
+ "localBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/templates/local",
+ "type": "string",
+ "title": "Local BKU"
+ }
+ }
+ },
+ "auth": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth",
+ "type": "object",
+ "title": "Authentication",
+ "description": "Authentication configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "authblock.transformation": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/authblock/transform",
+ "type": "object",
+ "format": "file",
+ "title": "AuthBlock transformation",
+ "description": "XML Transformation for AuthBlock generation",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/authblock/transform/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/authblock/transform/preview",
+ "type": "string"
+ },
+ "filename" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/general/auth/authblock/transform/filename",
+ "type": "string"
+ }
+ }
+ },
+ "timeouts": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/timeouts",
+ "type": "object",
+ "title": "Timeout Configuration",
+ "description": "Session and Process timeout configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "sso.create" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/timeouts/ss/create",
+ "type": "integer",
+ "title": "SSO created"
+ },
+ "sso.update" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/timeouts/sso/update",
+ "type": "integer",
+ "title": "SSO updated"
+ },
+ "transaction" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/timeouts/transaction",
+ "type": "integer",
+ "title": "Transaction"
+ }
+ }
+ },
+ "moasp": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/moasp",
+ "type": "object",
+ "title": "MOA-SP",
+ "description": "IdentityLink and Authblock validation",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "trustprofile.idl.prod" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/moasp/trust/idl",
+ "type": "string",
+ "title": "TrustProfile IdentityLink"
+ },
+ "trustprofile.authblock.prod" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/moasp/trust/authblock",
+ "type": "string",
+ "title": "TrustProfile AuthBlock"
+ },
+ "authblock.transform" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/moasp/authblock/transform",
+ "type": "string",
+ "title": "AuthBlock Transformation"
+ }
+ }
+ },
+ "certificate": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/certificate",
+ "type": "object",
+ "title": "X509 validation",
+ "description": "Validation of X509 certificates",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "certstore.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/certificate/certstore",
+ "type": "string",
+ "title": "CertStore URL (relative to MOA-ID config directory)"
+ },
+ "truststore.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/certificate/truststore",
+ "type": "string",
+ "title": "TrustStore URL (relative to MOA-ID config directory)"
+ },
+ "revocationchecking" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/certificate/revocationchecking",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Activate X509 certificate revocation check"
+ }
+ }
+ },
+ "services": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/services",
+ "type": "object",
+ "title": "External services",
+ "description": "Configuration of externel services",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "ovs.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/services/ovs/url",
+ "type": "string",
+ "format": "url",
+ "title": "URL to online mandate service (OVS)"
+ },
+ "szrgw.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/services/szrgw/url",
+ "type": "string",
+ "format": "url",
+ "title": "URL to Stammzahlenregistergateway (SZR-GW)"
+ }
+ }
+ },
+ "sso": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/sso",
+ "type": "object",
+ "title": "SSO Configuration",
+ "description": "Single Sign-On authentication",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "servicename" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/sso/idpname",
+ "type": "string",
+ "title": "Service name"
+ },
+ "target" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/sso/target",
+ "type": "string",
+ "title": "Service Target"
+ },
+ "authblock.text" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/sso/authblocktext",
+ "type": "string",
+ "format": "textarea",
+ "title": "AuthBlock Text"
+ }
+ }
+ }
+ }
+ },
+ "reversion.log": {
+ "id": "http://www.egiz.gv.at/dynUI/general/reversion/log",
+ "type": "object",
+ "title": "Revisions-Logging",
+ "description": "General Revision-Logging",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "eventcodes": {
+ "id": "http://www.egiz.gv.at/dynUI/general/reversion/log/eventcodes",
+ "type": "string",
+ "title": "EventCodes (CSV)"
+ }
+ }
+ },
+ "protocols": {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols",
+ "type": "object",
+ "title": "Protocols",
+ "description": "Authentication protocol configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "saml1": {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/saml1",
+ "type": "object",
+ "title": "SAML1 Configuration",
+ "description": "SAML1 authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/saml1/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enabled"
+ },
+ "legacy" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/saml1/legacy",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Legacy mode enabled"
+ },
+ "sourceID" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/saml1/sourceid",
+ "type": "string",
+ "title": "SourceID"
+ }
+ }
+ },
+ "pvp2x": {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x",
+ "type": "object",
+ "title": "PVP Configuration",
+ "description": "PVP 2.x authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enabled"
+ },
+ "legacy" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2/legacyx",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Legacy mode enabled"
+ },
+ "metadata" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata",
+ "type": "object",
+ "title": "Metadata",
+ "description": "PVP 2.x Metadata configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "servicename" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/servicename",
+ "type": "string",
+ "title": "Service Name"
+ },
+ "org.name.short" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/org/name/short",
+ "type": "string",
+ "title": "Organisation - Short name"
+ },
+ "org.name.full" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/org/name/full",
+ "type": "string",
+ "title": "Organisation - Full name"
+ },
+ "org.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/org/url",
+ "type": "string",
+ "format": "url",
+ "title": "Organisation - URL"
+ },
+ "contact.givenname" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/contact/givenname",
+ "type": "string",
+ "title": "Contact - Givenname"
+ },
+ "contact.familyname" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/contact/familyname",
+ "type": "string",
+ "title": "Contact - Familyname"
+ },
+ "contact.company" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/contact/company",
+ "type": "string",
+ "title": "Contact - Company"
+ },
+ "contact.mail" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/contact/mail",
+ "type": "string",
+ "format": "email",
+ "title": "Contact - Mail"
+ },
+ "contact.phone" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/contact/phone",
+ "type": "string",
+ "format": "tel",
+ "title": "Contact - phone"
+ },
+ "contact.type" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/pvp2x/metadata/contact/type",
+ "type": "string",
+ "title": "Contact - Type",
+ "enum": [
+ "technical",
+ "support",
+ "administrative",
+ "billing",
+ "other"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "openID": {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/openid",
+ "type": "object",
+ "title": "OpenID Connect Configuration",
+ "description": "OpenID Connect authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/general/protocols/openid/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enabled"
+ }
+ }
+ }
+ }
+ },
+ "auth.stork": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/stork",
+ "type": "object",
+ "title": "STORK",
+ "description": "STORK cross boarder eID",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "qaa": {
+ "id": "http://www.egiz.gv.at/dynUI/general/auth/stork/qaa",
+ "type": "integer",
+ "title": "Minimal QAA level"
+ },
+ "cpeps" : {
+ "type": "array",
+ "title": "C-PEPS services",
+ "format": "table",
+ "options": {
+ "collapsed": true
+ },
+ "items": {
+ "type": "object",
+ "properties": {
+ "countrycode": {
+ "type": "string",
+ "title": "CountryCode"
+ },
+ "url": {
+ "type": "string",
+ "format": "url",
+ "title": "URL"
+ },
+ "support.xmldsig": {
+ "type": "boolean",
+ "format": "checkbox",
+ "title": "XMLDsig supported"
+ }
+ }
+ }
+ },
+ "attributes" : {
+ "type": "array",
+ "title": "STORK attributes",
+ "format": "table",
+ "options": {
+ "collapsed": true
+ },
+ "items": {
+ "type": "object",
+ "properties": {
+ "friendlyname": {
+ "type": "string",
+ "title": "Attribute name"
+ },
+ "mandatory": {
+ "type": "boolean",
+ "format": "checkbox",
+ "title": "Mandatory"
+ }
+ }
+ }
+ }
+ }
+ },
+ "reversion.log": {
+ "id": "http://www.egiz.gv.at/dynUI/general/reversion/log",
+ "type": "object",
+ "title": "Revision Logging",
+ "description": "Default Revisions-Logging",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "eventcodes": {
+ "id": "http://www.egiz.gv.at/dynUI/general/reversion/log/eventcodes",
+ "type": "string",
+ "title": "EventCodes (CSV)"
+ }
+ }
+ }
+ },
+ "required": ["publicURLPrefix"]
+}
diff --git a/id/moa-id-webgui/src/main/resources/gui/types/iidp.json b/id/moa-id-webgui/src/main/resources/gui/types/iidp.json
new file mode 100644
index 000000000..a42254c36
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/gui/types/iidp.json
@@ -0,0 +1,124 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "http://www.egiz.gv.at/dynUI/OA",
+ "typeName": "moaidiidp",
+ "type": "object",
+ "title": "Interfederation IDP",
+ "format": "tabs",
+ "properties": {
+ "isActive" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/isactive",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "is Active"
+ },
+ "uniqueID": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/uniqueId",
+ "type": "string",
+ "format": "url",
+ "title": "Unique Identifier (PublicURLPrefix)"
+ },
+ "friendlyName": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/friendlyname",
+ "type": "string",
+ "title": "Friendlyname"
+ },
+ "businessservice" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/type",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Private Sector application"
+ },
+ "interfederation": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation",
+ "type": "object",
+ "title": "PVP Gateway",
+ "description": "STORK<->PVP Gateway configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "SSO.inbound": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/sso/inbound",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Allow inbound SSO"
+ },
+ "SSO.outbound": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/sso/outbound",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Allow outbound SSO"
+ },
+ "SSO.store": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/sso/store",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Store SSO session"
+ },
+ "passiveReqeust": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/passiveReqeust",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Use SAML2 isPassive attribute"
+ },
+ "localAuthOnError": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/sso/localAuthOnError",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Local authentication in case of an error"
+ },
+ "attributequery.url": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/interfederation/attributequery/url",
+ "type": "string",
+ "title": "AttributeQuery service URL"
+ }
+ }
+ },
+ "protocols": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols",
+ "type": "object",
+ "title": "Protocols",
+ "description": "Authentication protocol configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "pvp2x": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x",
+ "type": "object",
+ "title": "PVP Configuration",
+ "description": "PVP 2.x authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "URL" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/url",
+ "type": "string",
+ "title": "Metadata URL"
+ },
+ "certificate": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/certificate",
+ "type": "object",
+ "format": "file",
+ "title": "Metadata certificate",
+ "description": "Certificate for metadata signature validation",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/certificate/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/certificate/preview",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "required": ["uniqueID", "friendlyName"]
+}
diff --git a/id/moa-id-webgui/src/main/resources/gui/types/oa.json b/id/moa-id-webgui/src/main/resources/gui/types/oa.json
new file mode 100644
index 000000000..c22c2560c
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/gui/types/oa.json
@@ -0,0 +1,702 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "http://www.egiz.gv.at/dynUI/OA",
+ "typeName": "moaidoa",
+ "type": "object",
+ "title": "Online Application Configuration",
+ "format": "tabs",
+ "properties": {
+ "isActive" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/isactive",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "is Active"
+ },
+ "uniqueID": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/uniqueId",
+ "type": "string",
+ "format": "url",
+ "title": "Unique Identifier (PublicURLPrefix)"
+ },
+ "friendlyName": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/friendlyname",
+ "type": "string",
+ "title": "Friendlyname"
+ },
+ "businessservice" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/type",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Private Sector application"
+ },
+ "auth.target": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target",
+ "type": "object",
+ "title": "Target definition",
+ "description": "bPK or wbPK target definitions",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "public": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public",
+ "type": "object",
+ "title": "Public Sector definition",
+ "description": "bPK target definitions",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "target" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/target",
+ "type": "string",
+ "title": "Target",
+ "enum": [
+ "AR",
+ "AS",
+ "BF",
+ "BW",
+ "EA",
+ "EF",
+ "GH",
+ "GS",
+ "JR",
+ "KL",
+ "KU",
+ "LF",
+ "LV",
+ "RT",
+ "SA",
+ "SF",
+ "SO",
+ "SV",
+ "UW",
+ "VT",
+ "VV",
+ "WT",
+ "ZP",
+ "BR",
+ "HR",
+ "KI",
+ "OI",
+ "PV",
+ "RD",
+ "VS",
+ "ZU"
+ ]
+ },
+ "use.sub" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/usesubtarget",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Use sub-target"
+ },
+ "target.sub" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/subtarget",
+ "type": "string",
+ "title": "Sub-Target"
+ },
+ "own" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/own",
+ "type": "object",
+ "title": "Own Target",
+ "description": "Own Target definition",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "use" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/useowntarget",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Use own-target"
+ },
+ "target" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/owntarget",
+ "type": "string",
+ "title": "Own target"
+ },
+ "name" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/public/owntarget/friendlyname",
+ "type": "string",
+ "title": "Own target - friendlyname"
+ }
+ }
+ }
+ }
+ },
+ "business": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/private",
+ "type": "object",
+ "title": "Private Sector definition",
+ "description": "wbPK target definitions",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "type" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/private/type",
+ "type": "string",
+ "title": "Sector Type",
+ "enum": [
+ "FN",
+ "ZVR",
+ "ERSB",
+ "STORK"
+ ]
+ },
+ "value" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/private/value",
+ "type": "string",
+ "title": "Identifier"
+ }
+ }
+ }
+ }
+ },
+ "auth": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth",
+ "type": "object",
+ "title": "Authentication",
+ "description": "Authentication configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "bku": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku",
+ "type": "object",
+ "title": "BKU configuration",
+ "description": "Online application specific BKU communikation",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "onlineBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/online",
+ "type": "string",
+ "title": "Online BKU"
+ },
+ "handyBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/handy",
+ "type": "string",
+ "title": "Handy BKU"
+ },
+ "localBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/local",
+ "type": "string",
+ "title": "Local BKU"
+ },
+ "keyBoxIdentifier" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/keyBoxIdentifier",
+ "type": "string",
+ "title": "KeyBoxIdentifier",
+ "enum": [
+ "SecureSignatureKeypair",
+ "CertifiedKeypair"
+ ]
+ },
+ "template": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/template",
+ "type": "object",
+ "title": "SecurityLayer Templates",
+ "description": "Online application specific SecurityLayer templates",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "legacy" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/template/legacy",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Activate Legacy Mode"
+ },
+ "first.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/first/url",
+ "type": "string",
+ "title": "First SL-Template"
+ },
+ "second.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/second/url",
+ "type": "string",
+ "title": "Second SL-Template"
+ },
+ "third.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/third/url",
+ "type": "string",
+ "title": "Third SL-Template"
+ }
+ }
+ }
+ }
+ },
+ "templates": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/templates",
+ "type": "object",
+ "title": "BKU selection customization",
+ "description": "Customization of the BKU selection form",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "customize": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize",
+ "type": "object",
+ "title": "Customize default template",
+ "description": "Customization of the default template",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "fonttype" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/fonttype",
+ "type": "string",
+ "title": "Font Type"
+ },
+ "color.back" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/color/back",
+ "type": "string",
+ "title": "Backcolor"
+ },
+ "color.front" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/color/front",
+ "type": "string",
+ "title": "Frontcolor"
+ },
+ "header.color.back" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/header/color/back",
+ "type": "string",
+ "title": "Header Backcolor"
+ },
+ "header.color.front" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/header/color/front",
+ "type": "string",
+ "title": "Header Frontcolor"
+ },
+ "header.text" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/header/text",
+ "type": "string",
+ "title": "Header Text"
+ },
+ "button.color.back.focus" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/button/color/back/focus",
+ "type": "string",
+ "title": "Font Type"
+ },
+ "button.color.front" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/button/color/front",
+ "type": "string",
+ "title": "Font Type"
+ },
+ "applet.redirecttarget" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/applet/redirecttarget",
+ "type": "string",
+ "title": "Applet - Redirect Target",
+ "enum": [
+ "_parent",
+ "_blank",
+ "_self",
+ "_top"
+ ]
+ },
+ "applet.hight" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/applet/hight",
+ "type": "string",
+ "title": "Applet - Hight"
+ },
+ "applet.width" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/applet/width",
+ "type": "string",
+ "title": "Applet - Width"
+ }
+ }
+ },
+ "bkuselection": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/bkuselection",
+ "type": "object",
+ "format": "file",
+ "title": "BKU selection template",
+ "description": "Applicatio specific BKU selection template",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/bkuselection/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/bkuselection/preview",
+ "type": "string"
+ },
+ "filename" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/bkuselection/filename",
+ "type": "string"
+ }
+ }
+ },
+ "bkuselection.delete": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/bkuselection/delete",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Delete BKUSelection Template"
+ },
+ "sendAssertion": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/sendAssertion",
+ "type": "object",
+ "format": "file",
+ "title": "SendAssertion selection template",
+ "description": "Applicatio specific SendAssertion template",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/sendAssertion/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/sendAssertion/preview",
+ "type": "string"
+ },
+ "filename" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/sendAssertion/filename",
+ "type": "string"
+ }
+ }
+ },
+ "sendAssertion.delete": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/bkuselection/delete",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Delete SendAssertion Template"
+ }
+ }
+ },
+ "authblock": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/authblock",
+ "type": "object",
+ "title": "AuthBlock configuration",
+ "description": "Online application specific AuthBlock configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "removebPK" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/authblock/removebpk",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Remove bPK/wbPK"
+ },
+ "additionaltext" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/authblock/text",
+ "type": "string",
+ "format": "textarea",
+ "title": "Additional AuthBlock Text"
+ }
+ }
+ },
+ "testcredentials": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/testcredentials",
+ "type": "object",
+ "title": "Test identities",
+ "description": "Test identities configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/testcredentials/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enable test identities"
+ },
+ "oids" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/testcredentials/oids",
+ "type": "string",
+ "title": "Allowed test-identity OIDs"
+ }
+ }
+ },
+ "mandates.ovs": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/mandates",
+ "type": "object",
+ "title": "Mandates",
+ "description": "Online mandate configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "use" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/mandates/use",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Mandates (yes/no)"
+ },
+ "only" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/mandates/only",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Only mandates allowed"
+ },
+ "profiles" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/mandates/profiles",
+ "type": "string",
+ "title": "Allowed mandated profiles"
+ }
+ }
+ },
+ "sso": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/sso",
+ "type": "object",
+ "title": "Single Sign-On (SSO)",
+ "description": "Single Sign-On configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/sso/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Single Sign-On (yes/no)"
+ },
+ "userRequest" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/sso/sendassertionrequest",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Additional Userrequest"
+ }
+ }
+ },
+ "stork": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/stork",
+ "type": "object",
+ "title": "STORK",
+ "description": "STORK configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/stork/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enable STORK logon"
+ },
+ "minqaalevel" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/stork/minqaa",
+ "type": "string",
+ "title": "Minimum QAA Level",
+ "enum": [
+ "4",
+ "3",
+ "2",
+ "1"
+ ]
+ },
+ "countries" : {
+ "type": "array",
+ "title": "Countries",
+ "format": "table",
+ "options": {
+ "collapsed": true,
+ "disable_array_add": true,
+ "disable_array_delete": true,
+ "disable_array_reorder": true
+ },
+ "items": {
+ "type": "object",
+ "properties": {
+ "countrycode": {
+ "type": "string",
+ "readOnly": true,
+ "title": "CountryCode"
+ },
+ "enabled": {
+ "type": "boolean",
+ "format": "checkbox",
+ "title": "Enabled"
+ }
+ }
+ }
+ },
+ "attributes" : {
+ "type": "array",
+ "title": "Attributes",
+ "format": "table",
+ "options": {
+ "collapsed": true,
+ "disable_array_add": true,
+ "disable_array_delete": true,
+ "disable_array_reorder": true
+ },
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "readOnly": true,
+ "title": "CountryCode"
+ },
+ "requested": {
+ "type": "boolean",
+ "format": "checkbox",
+ "title": "Requested"
+ },
+ "mandatory": {
+ "type": "boolean",
+ "format": "checkbox",
+ "title": "Mandatory"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "reversion.log": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/reversion/log",
+ "type": "object",
+ "title": "Revisions-Logging",
+ "description": "Service specific Revision-Logging",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/reversion/log/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enabled"
+ },
+ "eventcodes": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/reversion/log/eventcodes",
+ "type": "string",
+ "title": "EventCodes (CSV)"
+ }
+ }
+ },
+ "protocols": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols",
+ "type": "object",
+ "title": "Protocols",
+ "description": "Authentication protocol configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "saml1": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1",
+ "type": "object",
+ "title": "SAML1 Configuration",
+ "description": "SAML1 authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enabled"
+ },
+ "idl" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/idl",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "IdentityLink"
+ },
+ "baseid" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/baseid",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "BaseID"
+ },
+ "authblock" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/authblock",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "AuthBlock"
+ },
+ "certificate" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/certificate",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Signer Certificate"
+ },
+ "mandate" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/mandate",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Full mandate"
+ },
+ "returnError" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/saml1/returnError",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Return Errors to Application"
+ }
+ }
+ },
+ "pvp2x": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x",
+ "type": "object",
+ "title": "PVP Configuration",
+ "description": "PVP 2.x authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "URL" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/url",
+ "type": "string",
+ "title": "Metadata URL"
+ },
+ "certificate": {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/certificate",
+ "type": "object",
+ "format": "file",
+ "title": "Metadata certificate",
+ "description": "Certificate for metadata signature validation",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/certificate/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/pvp2x/metadata/certificate/preview",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "openID" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/openid",
+ "type": "object",
+ "title": "OpenID Connect Configuration",
+ "description": "OpenID Connect authentication protocol",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "clientID" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/openid/clientid",
+ "type": "string",
+ "readOnly" : true,
+ "title": "Client-ID"
+ },
+ "secret" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/openid/clientsecret",
+ "type": "string",
+ "readOnly" : true,
+ "title": "Client-Secret"
+ },
+ "redirectURL" : {
+ "id": "http://www.egiz.gv.at/dynUI/oa/protocols/openid/redirectURL",
+ "type": "string",
+ "title": "Client-Secret"
+ }
+ }
+ }
+ }
+ }
+ },
+ "required": ["uniqueID", "friendlyName"]
+}
diff --git a/id/moa-id-webgui/src/main/resources/gui/types/vidp.json b/id/moa-id-webgui/src/main/resources/gui/types/vidp.json
new file mode 100644
index 000000000..1fc2601df
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/gui/types/vidp.json
@@ -0,0 +1,371 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "id": "http://www.egiz.gv.at/dynUI/OA",
+ "typeName": "moaidvidp",
+ "type": "object",
+ "title": "STORK V-IDP",
+ "format": "tabs",
+ "properties": {
+ "isActive" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/isactive",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "is Active"
+ },
+ "uniqueID": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/uniqueId",
+ "type": "string",
+ "format": "url",
+ "title": "Unique Identifier (PublicURLPrefix)"
+ },
+ "friendlyName": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/friendlyname",
+ "type": "string",
+ "title": "Friendlyname"
+ },
+ "businessservice" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/type",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Private Sector application"
+ },
+ "auth.target": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target",
+ "type": "object",
+ "title": "Target definition",
+ "description": "bPK or wbPK target definitions",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "business": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/private",
+ "type": "object",
+ "title": "Private Sector definition",
+ "description": "wbPK target definitions",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "type" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/private/type",
+ "type": "string",
+ "title": "Sector Type",
+ "enum": [
+ "FN",
+ "ZVR",
+ "ERSB",
+ "STORK"
+ ]
+ },
+ "value" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/target/private/value",
+ "type": "string",
+ "title": "Identifier"
+ }
+ }
+ }
+ }
+ },
+ "auth": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth",
+ "type": "object",
+ "title": "Authentication",
+ "description": "Authentication configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "bku": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku",
+ "type": "object",
+ "title": "BKU configuration",
+ "description": "Online application specific BKU communikation",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "onlineBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/online",
+ "type": "string",
+ "title": "Online BKU"
+ },
+ "handyBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/handy",
+ "type": "string",
+ "title": "Handy BKU"
+ },
+ "localBKU" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/local",
+ "type": "string",
+ "title": "Local BKU"
+ },
+ "keyBoxIdentifier" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/keyBoxIdentifier",
+ "type": "string",
+ "title": "KeyBoxIdentifier",
+ "enum": [
+ "SecureSignatureKeypair",
+ "CertifiedKeypair"
+ ]
+ },
+ "template": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/template",
+ "type": "object",
+ "title": "SecurityLayer Templates",
+ "description": "Online application specific SecurityLayer templates",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "legacy" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/bku/template/legacy",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Activate Legacy Mode"
+ },
+ "first.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/first/url",
+ "type": "string",
+ "title": "First SL-Template"
+ },
+ "second.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/second/url",
+ "type": "string",
+ "title": "Second SL-Template"
+ },
+ "third.url" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/third/url",
+ "type": "string",
+ "title": "Third SL-Template"
+ }
+ }
+ }
+ }
+ },
+ "templates": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/templates",
+ "type": "object",
+ "title": "BKU selection customization",
+ "description": "Customization of the BKU selection form",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "customize": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize",
+ "type": "object",
+ "title": "Customize default template",
+ "description": "Customization of the default template",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "fonttype" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/fonttype",
+ "type": "string",
+ "title": "Font Type"
+ },
+ "color.back" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/color/back",
+ "type": "string",
+ "title": "Backcolor"
+ },
+ "color.front" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/color/front",
+ "type": "string",
+ "title": "Frontcolor"
+ },
+ "header.color.back" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/header/color/back",
+ "type": "string",
+ "title": "Header Backcolor"
+ },
+ "header.color.front" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/header/color/front",
+ "type": "string",
+ "title": "Header Frontcolor"
+ },
+ "header.text" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/header/text",
+ "type": "string",
+ "title": "Header Text"
+ },
+ "button.color.back.focus" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/button/color/back/focus",
+ "type": "string",
+ "title": "Font Type"
+ },
+ "button.color.front" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/button/color/front",
+ "type": "string",
+ "title": "Font Type"
+ },
+ "applet.redirecttarget" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/applet/redirecttarget",
+ "type": "string",
+ "title": "Applet - Redirect Target",
+ "enum": [
+ "_parent",
+ "_blank",
+ "_self",
+ "_top"
+ ]
+ },
+ "applet.hight" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/applet/hight",
+ "type": "string",
+ "title": "Applet - Hight"
+ },
+ "applet.width" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/customize/applet/width",
+ "type": "string",
+ "title": "Applet - Width"
+ }
+ }
+ },
+ "bkuselection": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/bkuselection",
+ "type": "object",
+ "format": "file",
+ "title": "BKU selection template",
+ "description": "Applicatio specific BKU selection template",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/bkuselection/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/bkuselection/preview",
+ "type": "string"
+ },
+ "filename" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/bkuselection/filename",
+ "type": "string"
+ }
+ }
+ },
+ "sendAssertion": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/sendAssertion",
+ "type": "object",
+ "format": "file",
+ "title": "SendAssertion selection template",
+ "description": "Applicatio specific SendAssertion template",
+ "properties": {
+ "data" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/template/sendAssertion/data",
+ "type": "string"
+ },
+ "preview" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/sendAssertion/preview",
+ "type": "string"
+ },
+ "filename" : {
+ "id": "http://www.egiz.gv.at/dynUIOA/auth/template/sendAssertion/filename",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "authblock": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/authblock",
+ "type": "object",
+ "title": "AuthBlock configuration",
+ "description": "Online application specific AuthBlock configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "removebPK" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/authblock/removebpk",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Remove bPK/wbPK"
+ },
+ "additionaltext" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/authblock/text",
+ "type": "string",
+ "format": "textarea",
+ "title": "Additional AuthBlock Text"
+ }
+ }
+ },
+ "testcredentials": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/testcredentials",
+ "type": "object",
+ "title": "Test identities",
+ "description": "Test identities configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "enabled" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/testcredentials/enabled",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Enable test identities"
+ },
+ "oids" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/testcredentials/oids",
+ "type": "string",
+ "title": "Allowed test-identity OIDs"
+ }
+ }
+ },
+ "stork": {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/stork",
+ "type": "object",
+ "title": "STORK",
+ "description": "STORK configuration",
+ "options": {
+ "collapsed": true
+ },
+ "properties": {
+ "requireConsent" : {
+ "id": "http://www.egiz.gv.at/dynUI/OA/auth/stork/requireConsent",
+ "type": "boolean",
+ "format" : "checkbox",
+ "title": "Ask the user for attributes transfer consent"
+ },
+ "attributeprovider" : {
+ "type": "array",
+ "title": "Attribute-Provider Plug-ins",
+ "format": "table",
+ "options": {
+ "collapsed": true
+ },
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Attribute Plug-in",
+ "enum": [
+ "StorkAttributeRequestProvider",
+ "EHvdAttributeProvider_deprecated",
+ "EHvdAttributeProvider",
+ "SignedDocAttributeRequestProvider",
+ "MandateAttributeRequestProvider",
+ "PVPAuthenticationProvider"
+ ]
+ },
+ "url": {
+ "type": "string",
+ "format": "url",
+ "title": "URL"
+ },
+ "attributes": {
+ "type": "string",
+ "title": "Attribute (CSV)"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "required": ["uniqueID", "friendlyName"]
+}
diff --git a/id/moa-id-webgui/src/main/resources/moaid.webgui.beans.xml b/id/moa-id-webgui/src/main/resources/moaid.webgui.beans.xml
new file mode 100644
index 000000000..0ee7ac89c
--- /dev/null
+++ b/id/moa-id-webgui/src/main/resources/moaid.webgui.beans.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <bean id="moaidconfigurationmodul" class="at.gv.egovernment.moa.id.config.webgui.MOAIDConfigurationModul">
+ <!-- <property name="databaseConfiguration" ref="moaidconfig"/> -->
+ </bean>
+
+ <bean id="moaidConfigurationValidiation" class="at.gv.egovernment.moa.id.config.webgui.validation.MOAIDConfigurationValidator">
+ <!-- <property name="databaseConfiguration" ref="moaidconfig"/> -->
+ </bean>
+
+ <bean id="moaidServiceGeneralInfoTask" class="at.gv.egovernment.moa.id.config.webgui.validation.task.impl.ServicesGeneralInformationTask">
+ <!-- <property name="databaseConfiguration" ref="moaidconfig"/> -->
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/id/moa-id-webgui/src/test/java/META-INF/MANIFEST.MF b/id/moa-id-webgui/src/test/java/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..254272e1c
--- /dev/null
+++ b/id/moa-id-webgui/src/test/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/id/oa/pom.xml b/id/oa/pom.xml
index 173019c1b..191eb2be6 100644
--- a/id/oa/pom.xml
+++ b/id/oa/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>MOA</groupId>
<artifactId>id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/id/pom.xml b/id/pom.xml
index 6b296e84a..49dd99a1c 100644
--- a/id/pom.xml
+++ b/id/pom.xml
@@ -8,6 +8,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>id</artifactId>
+ <version>3.x</version>
<packaging>pom</packaging>
<name>MOA ID</name>
@@ -16,6 +17,7 @@
<!-- <module>templates</module> -->
<module>server</module>
<module>ConfigWebTool</module>
+ <module>moa-id-webgui</module>
</modules>
<properties>
diff --git a/id/readme_3.0.0.txt b/id/readme_3.0.0.txt
new file mode 100644
index 000000000..0f44b87b8
--- /dev/null
+++ b/id/readme_3.0.0.txt
@@ -0,0 +1,550 @@
+===============================================================================
+MOA ID Version Release 3.0.0 - Wichtige Informationen zur Installation
+===============================================================================
+
+-------------------------------------------------------------------------------
+A. Neuerungen/Änderungen
+-------------------------------------------------------------------------------
+
+Mit MOA ID Version 3.0.0 wurden folgende Neuerungen und Änderungen eingeführt,
+die jetzt erstmals in der Veröffentlichung enthalten sind (siehe auch
+history.txt im gleichen Verzeichnis):
+
+- Änderungen
+ - Redesign des Datenmodels für die Configuration
+ - Redesign des Authentifizierungsprozessmanagment
+ - Anpassung VIDP Code für STORK
+ - Update von TrustStore und CertSTore
+ - Kleinere Bug-Fixes
+ - Update von Libraries
+
+-------------------------------------------------------------------------------
+B. Durchführung eines Updates
+-------------------------------------------------------------------------------
+
+Es wird generell eine Neuinstallation lt. Handbuch empfohlen! Dennoch ist auch
+eine Aktualisierung bestehender Installationen möglich. Je nachdem von welcher
+MOA-ID Version ausgegangen wird ergibt sich eine Kombination der nachfolgend
+angebebenen Updateschritte.
+
+Hinweis: Wenn Sie die bestehende Konfiguration von MOA-ID 2.x.x in MOA-ID 3.0.0
+reimportieren möchten, so muss diese vor dem Update mit Hilfe der import/export
+Funktion der grafischen Konfigurationsoberfläche in eine Datei exportiert werden.
+Diese Datei dient dann als Basis für den Import in MOA-ID 3.0.0.
+
+...............................................................................
+B.1 Durchführung eines Updates von Version 2.2.1 auf Version 3.0.0
+...............................................................................
+
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-3.0.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME_ID\endorsed und loeschen Sie diese Dateien danach.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+8. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+9. Update der Default html-Templates für die Bürgerkartenauswahl.
+
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\htmlTemplates.
+ b.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id-configuration\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id-configuration\htmlTemplates.
+
+10. Update der STORK Konfiguration
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\stork
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\stork.
+ b.) Passen Sie die STORK Konfiguration laut Handbuch -> Konfiguration ->
+ 2.4 Konfiguration des SamlEngines an.
+
+11. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id\moa-id.properties
+
+12. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Configration Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id-configuration\moa-id-configtool.properties
+
+13. Hinzufügen der zusätzlichen Konfigurationsdatei in der MOA-ID-Configuration
+ CATALINA_HOME\conf\moa-id-configuration\userdatabase.properties
+
+14. Update der Tomcat Start-Skripts:
+ - Die Konfigurationsdateien für MOA-ID-Auth und MOA-ID-Configuration müssen
+ nur als URI (file:/...) übergeben werden.
+
+15. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.1 Durchführung eines Updates von Version 2.2.0 auf Version 2.2.1
+...............................................................................
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.2.1.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+7. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+8. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+...............................................................................
+B.1 Durchführung eines Updates von Version 2.1.2 auf Version 2.2.0
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.2.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME_ID\endorsed und loeschen Sie diese Dateien danach.
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+8. Kopieren der folgenden Dateien:
+ Sollte die Datei bereits vorhanden sein erstellen Sie ein Backup der
+ Datei bevor Sie diese durch die neue Version ersetzen.
+ a.) MOA_ID_AUTH_INST/conf/moa-id/stork/StorkSamlEngine_VIDP.xml ->
+ CATALINA_HOME/conf/moa-id/stork/StorkSamlEngine_VIDP.xml
+ b.) MOA_ID_AUTH_INST/conf/moa-id/stork/StorkSamlEngine_outgoing.xml ->
+ CATALINA_HOME/conf/moa-id/stork/StorkSamlEngine_outgoing.xml
+
+9. Dem STORK KeyStores unter MOA_ID_AUTH_INST/conf/moa-id/keys/storkDemoKeys.jks
+ (Passwort=local-demo) wurden neue vertrauenswürdige Zertifikate hinzugefügt.
+ Gleichen Sie bei Bedarf die Zertifikate dieses KeyStores mit Ihrem aktuell
+ verwendeten KeyStore ab.
+
+10. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+11. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+
+12. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+...............................................................................
+B.2 Durchführung eines Updates von Version 2.1.1 auf Version 2.1.2
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.1.2.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME_ID\endorsed und loeschen Sie diese Dateien danach.
+
+5. Kopieren Sie alle Dateien aus dem Verzeichnis MOA_ID_AUTH_INST\endorsed in das
+ Verzeichnis CATALINA_HOME_ID\endorsed
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+8. Kopieren der folgenden Dateien
+ a.) MOA_ID_AUTH_INST/conf/moa-id/stork/StorkSamlEngine_VIDP.xml ->
+ CATALINA_HOME/conf/moa-id/stork/StorkSamlEngine_VIDP.xml
+ Sollte die Datei bereits vorhanden sein erstellen Sie ein Backup der
+ Datei slo_template.html bevor Sie diese durch die neue Version ersetzen.
+
+9. Dem STORK KeyStores unter MOA_ID_AUTH_INST/conf/moa-id/keys/storkDemoKeys.jks
+ (Passwort=local-demo) wurden neue vertrauenswürdige Zertifikate hinzugefügt.
+ Gleichen Sie bei Bedarf die Zertifikate dieses KeyStores mit Ihrem aktuell
+ verwendeten KeyStore ab.
+
+10. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.3 Durchführung eines Updates von Version 2.1.0 auf Version 2.1.1
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.1.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Erstellen Sie eine Sicherungskopie aller "iaik*.jar"-Dateien im Verzeichnis
+ JAVA_HOME\jre\lib\ext und loeschen Sie diese Dateien danach.
+
+4. Kopieren Sie alle Dateien aus dem Verzeichnis MOA_ID_AUTH_INST\ext in das
+ Verzeichnis JAVA_HOME\jre\lib\ext (Achtung: Java 1.4.x wird nicht mehr
+ unterstuetzt).
+
+5. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Datei moa-id-auth.war als
+ auch das komplette Verzeichnis moa-id-auth.
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+8. Hinzufügen der zusätzlichen Konfigurationsparameter in der
+ MOA-ID-Configuration Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id-configuration\moa-id-configtool.properties
+ a.) general.moaconfig.key=..... (Passwort zum Ver- und
+ Entschlüsseln von Konfigurationsparametern in der Datenbank)
+
+9. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth
+ Konfigurationsdatei CATALINA_HOME\conf\moa-id\moa-id.properties
+ a.) configuration.moaconfig.key=..... (Passwort zum Ver- und
+ Entschlüsseln von Konfigurationsparametern in der Datenbank)
+
+10. Kopieren der folgenden Dateien
+ a.) MOA_ID_AUTH_INST/conf/moa-id/htmlTemplates/slo_template.html ->
+ CATALINA_HOME/conf/moa-id/htmlTemplates/slo_template.html
+ Sollte die Datei bereits vorhanden sein erstellen Sie ein Backup der
+ Datei slo_template.html bevor Sie diese durch die neue Version ersetzen.
+
+11. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+12. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+13. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.4 Durchführung eines Updates von Version 2.0.1 auf Version 2.1.0
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.1.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Datei moa-id-auth.war als
+ auch das komplette Verzeichnis moa-id-auth.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Update der STORK Konfiguration
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\stork
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\stork.
+ b.) Passen Sie die STORK Konfiguration laut Handbuch -> Konfiguration ->
+ 2.4 Konfiguration des SamlEngines an.
+
+7. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Configuration Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id-configuration\moa-id-configtool.properties
+ a.) general.ssl.certstore=certs/certstore
+ b.) general.ssl.truststore=certs/truststore
+
+8. Kopieren des folgenden zusätzlichen Ordners MOA_ID_AUTH_INST/conf/moa-id-configuration/certs
+ nach CATALINA_HOME\conf\moa-id-configuration\
+
+9. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id\moa-id.properties und Anpassung an das zu verwendeten Schlüsselpaar.
+ a.) protocols.pvp2.idp.ks.assertion.encryption.alias=pvp_assertion
+ protocols.pvp2.idp.ks.assertion.encryption.keypassword=password
+
+10. Kopieren der folgenden zusätzlichen Ordner aus MOA_ID_AUTH_INST/conf/moa-id/
+ nach CATALINA_HOME\conf\moa-id\
+ a.) MOA_ID_AUTH_INST/conf/moa-id/SLTemplates -> CATALINA_HOME\conf\moa-id\
+ b.) MOA_ID_AUTH_INST/conf/moa-id/htmlTemplates/slo_template.html ->
+ CATALINA_HOME/conf/moa-id/htmlTemplates/slo_template.html
+
+11. Neuinitialisieren des Datenbank Schema für die MOA-Session. Hierfür stehen
+ zwei Varianten zur Verfügung.
+ a.) Ändern Sie in der Konfigurationsdatei für das Modul MOA-ID-Auth
+ CATALINA_HOME\conf\moa-id\moa-id.properties die Zeile
+ moasession.hibernate.hbm2ddl.auto=update
+ zu
+ moasession.hibernate.hbm2ddl.auto=create
+ Danach werden die Tabellen beim nächsten Startvorgang neu generiert.
+
+ b.) Löschen Sie alle Tabellen aus dem Datenbank Schema für die MOA-Sessixson
+ Informationen per Hand. Alle Tabellen werden beim nächsten Start autmatisch neu generiert.
+
+12 . Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.5 Durchführung eines Updates von Version 2.0-RC1 auf Version 2.0.1
+...............................................................................
+
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.0.1.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+ Für MOA ID Proxy:
+ Entpacken Sie die Distribution von MOA-ID-Proxy (moa-id-proxy-2.0.1.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_PROXY_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Datei moa-id-auth.war als
+ auch das komplette Verzeichnis moa-id-auth.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+7. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+8. Update der Default html-Templates für die Bürgerkartenauswahl.
+
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\htmlTemplates.
+ b.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id-configuration\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id-configuration\htmlTemplates.
+
+9. Update der STORK Konfiguration
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\stork
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\stork.
+ b.) Passen Sie die STORK Konfiguration laut Handbuch -> Konfiguration ->
+ 2.4 Konfiguration des SamlEngines an.
+
+10. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id\moa-id.properties
+
+ a.) configuration.validation.certificate.QC.ignore=false
+ b.) protocols.pvp2.assertion.encryption.active=false
+
+11. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.6 Durchführung eines Updates von Version <= 1.5.1
+...............................................................................
+
+Bitte führen Sie eine Neuinstallation von MOA ID laut Handbuch durch und passen
+Sie die mitgelieferte Musterkonfiguration entsprechend Ihren Bedürfnissen unter
+Zuhilfenahme Ihrer bisherigen Konfiguration an.
+
diff --git a/id/readme_3.0.1.txt b/id/readme_3.0.1.txt
new file mode 100644
index 000000000..da99a3105
--- /dev/null
+++ b/id/readme_3.0.1.txt
@@ -0,0 +1,585 @@
+===============================================================================
+MOA ID Version Release 3.0.1 - Wichtige Informationen zur Installation
+===============================================================================
+
+-------------------------------------------------------------------------------
+A. Neuerungen/Änderungen
+-------------------------------------------------------------------------------
+
+Mit MOA ID Version 3.0.1 wurden folgende Neuerungen und Änderungen eingeführt,
+die jetzt erstmals in der Veröffentlichung enthalten sind (siehe auch
+history.txt im gleichen Verzeichnis). Da es sich bei der Version 3.0.1 nur um
+Version mit minimaler Fehlerbereinigung handelt sind zusätzlich auch alle
+Änderungen aus der Version 3.0.0 zur Information gelisted:
+
+- Änderungen
+ - Bug-Fix für Testkarten mit Testkarten-OID
+ - Update TrustStore
+
+Anpassungen aus MOA-ID 3.0.0
+- Änderungen
+ - Redesign des Datenmodels für die Configuration
+ - Redesign des Authentifizierungsprozessmanagment
+ - Anpassung VIDP Code für STORK
+ - Update von TrustStore und CertSTore
+ - Kleinere Bug-Fixes
+ - Update von Libraries
+
+-------------------------------------------------------------------------------
+B. Durchführung eines Updates
+-------------------------------------------------------------------------------
+
+Es wird generell eine Neuinstallation lt. Handbuch empfohlen! Dennoch ist auch
+eine Aktualisierung bestehender Installationen möglich. Je nachdem von welcher
+MOA-ID Version ausgegangen wird ergibt sich eine Kombination der nachfolgend
+angebebenen Updateschritte.
+
+Hinweis: Wenn Sie die bestehende Konfiguration von MOA-ID 2.x.x in MOA-ID 3.0.0
+reimportieren möchten, so muss diese vor dem Update mit Hilfe der import/export
+Funktion der grafischen Konfigurationsoberfläche in eine Datei exportiert werden.
+Diese Datei dient dann als Basis für den Import in MOA-ID 3.0.0.
+
+...............................................................................
+B.0 Durchführung eines Updates von Version 3.0.0 auf Version 3.0.1
+...............................................................................
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-3.0.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war
+ als auch das komplette Verzeichnis moa-id-auth.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Update der TrustStores für WebService Zugriffe.
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\certs\ca-certs
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\certs\ca-certs.
+ b.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\certs\certstore\toBeAdded
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\certs\certstore\toBeAdded.
+
+6. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+...............................................................................
+B.1 Durchführung eines Updates von Version 2.2.1 auf Version 3.0.1
+...............................................................................
+
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-3.0.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME_ID\endorsed und loeschen Sie diese Dateien danach.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+8. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+9. Update der Default html-Templates für die Bürgerkartenauswahl.
+
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\htmlTemplates.
+ b.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id-configuration\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id-configuration\htmlTemplates.
+
+10. Update der STORK Konfiguration
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\stork
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\stork.
+ b.) Passen Sie die STORK Konfiguration laut Handbuch -> Konfiguration ->
+ 2.4 Konfiguration des SamlEngines an.
+
+11. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id\moa-id.properties
+
+12. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Configration Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id-configuration\moa-id-configtool.properties
+
+13. Hinzufügen der zusätzlichen Konfigurationsdatei in der MOA-ID-Configuration
+ CATALINA_HOME\conf\moa-id-configuration\userdatabase.properties
+
+14. Update der Tomcat Start-Skripts:
+ - Die Konfigurationsdateien für MOA-ID-Auth und MOA-ID-Configuration müssen
+ nur als URI (file:/...) übergeben werden.
+
+15. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.1 Durchführung eines Updates von Version 2.2.0 auf Version 2.2.1
+...............................................................................
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.2.1.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+7. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+8. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+...............................................................................
+B.1 Durchführung eines Updates von Version 2.1.2 auf Version 2.2.0
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.2.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME_ID\endorsed und loeschen Sie diese Dateien danach.
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+8. Kopieren der folgenden Dateien:
+ Sollte die Datei bereits vorhanden sein erstellen Sie ein Backup der
+ Datei bevor Sie diese durch die neue Version ersetzen.
+ a.) MOA_ID_AUTH_INST/conf/moa-id/stork/StorkSamlEngine_VIDP.xml ->
+ CATALINA_HOME/conf/moa-id/stork/StorkSamlEngine_VIDP.xml
+ b.) MOA_ID_AUTH_INST/conf/moa-id/stork/StorkSamlEngine_outgoing.xml ->
+ CATALINA_HOME/conf/moa-id/stork/StorkSamlEngine_outgoing.xml
+
+9. Dem STORK KeyStores unter MOA_ID_AUTH_INST/conf/moa-id/keys/storkDemoKeys.jks
+ (Passwort=local-demo) wurden neue vertrauenswürdige Zertifikate hinzugefügt.
+ Gleichen Sie bei Bedarf die Zertifikate dieses KeyStores mit Ihrem aktuell
+ verwendeten KeyStore ab.
+
+10. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+11. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+
+12. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+...............................................................................
+B.2 Durchführung eines Updates von Version 2.1.1 auf Version 2.1.2
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.1.2.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Dateien moa-id-auth.war und
+ moa-id-configuration.war als auch das komplette Verzeichnis moa-id-auth
+ und das komplette Verzeichnis moa-id-configuration.
+
+4. Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME_ID\endorsed und loeschen Sie diese Dateien danach.
+
+5. Kopieren Sie alle Dateien aus dem Verzeichnis MOA_ID_AUTH_INST\endorsed in das
+ Verzeichnis CATALINA_HOME_ID\endorsed
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+8. Kopieren der folgenden Dateien
+ a.) MOA_ID_AUTH_INST/conf/moa-id/stork/StorkSamlEngine_VIDP.xml ->
+ CATALINA_HOME/conf/moa-id/stork/StorkSamlEngine_VIDP.xml
+ Sollte die Datei bereits vorhanden sein erstellen Sie ein Backup der
+ Datei slo_template.html bevor Sie diese durch die neue Version ersetzen.
+
+9. Dem STORK KeyStores unter MOA_ID_AUTH_INST/conf/moa-id/keys/storkDemoKeys.jks
+ (Passwort=local-demo) wurden neue vertrauenswürdige Zertifikate hinzugefügt.
+ Gleichen Sie bei Bedarf die Zertifikate dieses KeyStores mit Ihrem aktuell
+ verwendeten KeyStore ab.
+
+10. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.3 Durchführung eines Updates von Version 2.1.0 auf Version 2.1.1
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.1.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Erstellen Sie eine Sicherungskopie aller "iaik*.jar"-Dateien im Verzeichnis
+ JAVA_HOME\jre\lib\ext und loeschen Sie diese Dateien danach.
+
+4. Kopieren Sie alle Dateien aus dem Verzeichnis MOA_ID_AUTH_INST\ext in das
+ Verzeichnis JAVA_HOME\jre\lib\ext (Achtung: Java 1.4.x wird nicht mehr
+ unterstuetzt).
+
+5. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Datei moa-id-auth.war als
+ auch das komplette Verzeichnis moa-id-auth.
+
+6. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+7. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+8. Hinzufügen der zusätzlichen Konfigurationsparameter in der
+ MOA-ID-Configuration Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id-configuration\moa-id-configtool.properties
+ a.) general.moaconfig.key=..... (Passwort zum Ver- und
+ Entschlüsseln von Konfigurationsparametern in der Datenbank)
+
+9. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth
+ Konfigurationsdatei CATALINA_HOME\conf\moa-id\moa-id.properties
+ a.) configuration.moaconfig.key=..... (Passwort zum Ver- und
+ Entschlüsseln von Konfigurationsparametern in der Datenbank)
+
+10. Kopieren der folgenden Dateien
+ a.) MOA_ID_AUTH_INST/conf/moa-id/htmlTemplates/slo_template.html ->
+ CATALINA_HOME/conf/moa-id/htmlTemplates/slo_template.html
+ Sollte die Datei bereits vorhanden sein erstellen Sie ein Backup der
+ Datei slo_template.html bevor Sie diese durch die neue Version ersetzen.
+
+11. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+12. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+13. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.4 Durchführung eines Updates von Version 2.0.1 auf Version 2.1.0
+...............................................................................
+ 1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.1.0.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Datei moa-id-auth.war als
+ auch das komplette Verzeichnis moa-id-auth.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Update der STORK Konfiguration
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\stork
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\stork.
+ b.) Passen Sie die STORK Konfiguration laut Handbuch -> Konfiguration ->
+ 2.4 Konfiguration des SamlEngines an.
+
+7. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Configuration Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id-configuration\moa-id-configtool.properties
+ a.) general.ssl.certstore=certs/certstore
+ b.) general.ssl.truststore=certs/truststore
+
+8. Kopieren des folgenden zusätzlichen Ordners MOA_ID_AUTH_INST/conf/moa-id-configuration/certs
+ nach CATALINA_HOME\conf\moa-id-configuration\
+
+9. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id\moa-id.properties und Anpassung an das zu verwendeten Schlüsselpaar.
+ a.) protocols.pvp2.idp.ks.assertion.encryption.alias=pvp_assertion
+ protocols.pvp2.idp.ks.assertion.encryption.keypassword=password
+
+10. Kopieren der folgenden zusätzlichen Ordner aus MOA_ID_AUTH_INST/conf/moa-id/
+ nach CATALINA_HOME\conf\moa-id\
+ a.) MOA_ID_AUTH_INST/conf/moa-id/SLTemplates -> CATALINA_HOME\conf\moa-id\
+ b.) MOA_ID_AUTH_INST/conf/moa-id/htmlTemplates/slo_template.html ->
+ CATALINA_HOME/conf/moa-id/htmlTemplates/slo_template.html
+
+11. Neuinitialisieren des Datenbank Schema für die MOA-Session. Hierfür stehen
+ zwei Varianten zur Verfügung.
+ a.) Ändern Sie in der Konfigurationsdatei für das Modul MOA-ID-Auth
+ CATALINA_HOME\conf\moa-id\moa-id.properties die Zeile
+ moasession.hibernate.hbm2ddl.auto=update
+ zu
+ moasession.hibernate.hbm2ddl.auto=create
+ Danach werden die Tabellen beim nächsten Startvorgang neu generiert.
+
+ b.) Löschen Sie alle Tabellen aus dem Datenbank Schema für die MOA-Sessixson
+ Informationen per Hand. Alle Tabellen werden beim nächsten Start autmatisch neu generiert.
+
+12 . Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.5 Durchführung eines Updates von Version 2.0-RC1 auf Version 2.0.1
+...............................................................................
+
+1. Stoppen Sie den Tomcat, in dem Ihre bisherige Installation betrieben wird.
+ Fertigen Sie eine Sicherungskopie Ihrer kompletten Tomcat-Installation an.
+
+2. Entpacken Sie die Distribution von MOA-ID-Auth (moa-id-auth-2.0.1.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_AUTH_INST
+ bezeichnet.
+ Für MOA ID Proxy:
+ Entpacken Sie die Distribution von MOA-ID-Proxy (moa-id-proxy-2.0.1.zip) in
+ ein temporäres Verzeichnis, in weiterer Folge als MOA_ID_PROXY_INST
+ bezeichnet.
+
+3. Wechseln Sie in jenes Verzeichnis, das die Webapplikation von MOA ID Auth
+ beinhaltet (für gewöhnlich ist dieses Verzeichnis CATALINA_HOME_ID/webapps,
+ wobei CATALINA_HOME_ID für das Basisverzeichnis der Tomcat-Installation
+ für MOA ID steht). Löschen Sie darin sowohl die Datei moa-id-auth.war als
+ auch das komplette Verzeichnis moa-id-auth.
+
+4. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-auth.war nach
+ CATALINA_HOME_ID/webapps.
+
+5. Kopieren Sie die Datei MOA_ID_AUTH_INST/moa-id-configuration.war nach
+ CATALINA_HOME_ID/webapps.
+
+6. Update des Cert-Stores.
+ Kopieren Sie den Inhalt des Verzeichnisses
+ MOA_ID_INST_AUTH\conf\moa-spss\certstore in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss\certstore. Wenn Sie gefragt werden, ob Sie
+ vorhandene Dateien oder Unterverzeichnisse überschreiben sollen, dann
+ bejahen sie das.
+
+7. Update der Trust-Profile. Wenn Sie Ihre alten Trust-Profile durch die Neuen ersetzen
+ wollen, dann gehen Sie vor, wie in Punkt a). Wenn Sie Ihre eigenen Trust-Profile
+ beibehalten wollen, dann gehen Sie vor, wie in Punkt b).
+
+ a. Gehen Sie wie folgt vor, um die Trust-Profile auszutauschen:
+
+ 1) Löschen Sie das Verzeichnis CATALINA_HOME\conf\moa-spss\trustprofiles.
+ 2) Kopieren Sie das Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles in das Verzeichnis
+ CATALINA_HOME\conf\moa-spss.
+
+ b. Falls Sie Ihre alten Trust-Profile beibehalten wollen, gehen Sie wie
+ folgt vor, um die Profile auf den aktuellen Stand zu bringen:
+
+ 1) Ergänzen Sie ihre Trustprofile durch alle Zertifikate aus den
+ entsprechenden Profilen im Verzeichnis
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles, die nicht in Ihren
+ Profilen enthalten sind. Am einfachsten ist es, wenn Sie den Inhalt
+ der einzelnen Profile aus der Distribution
+ (MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles) in die entsprechenden
+ Profile Ihrer Installation (CATALINA_HOME\conf\moa-spss\trustProfiles)
+ kopieren und dabei die vorhandenen gleichnamigen Zertifikate
+ überschreiben), also z.B: Kopieren des Inhalts von
+ MOA_ID_INST_AUTH\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten nach
+ CATALINA_HOME\conf\moa-spss\trustProfiles\
+ MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten usw.
+
+8. Update der Default html-Templates für die Bürgerkartenauswahl.
+
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\htmlTemplates.
+ b.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id-configuration\htmlTemplates
+ in das Verzeichnis CATALINA_HOME\conf\moa-id-configuration\htmlTemplates.
+
+9. Update der STORK Konfiguration
+ a.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_ID_INST_AUTH\conf\moa-id\stork
+ in das Verzeichnis CATALINA_HOME\conf\moa-id\stork.
+ b.) Passen Sie die STORK Konfiguration laut Handbuch -> Konfiguration ->
+ 2.4 Konfiguration des SamlEngines an.
+
+10. Hinzufügen der zusätzlichen Konfigurationsparameter in der MOA-ID-Auth Konfigurationsdatei
+ CATALINA_HOME\conf\moa-id\moa-id.properties
+
+ a.) configuration.validation.certificate.QC.ignore=false
+ b.) protocols.pvp2.assertion.encryption.active=false
+
+11. Starten Sie den Tomcat neu, achten Sie auf eventuelle Fehlermeldungen im
+ Logging von MOA ID beim Einlesen der Konfiguration.
+
+
+...............................................................................
+B.6 Durchführung eines Updates von Version <= 1.5.1
+...............................................................................
+
+Bitte führen Sie eine Neuinstallation von MOA ID laut Handbuch durch und passen
+Sie die mitgelieferte Musterkonfiguration entsprechend Ihren Bedürfnissen unter
+Zuhilfenahme Ihrer bisherigen Konfiguration an.
+
diff --git a/id/server/auth/pom.xml b/id/server/auth/pom.xml
index cf394b7ad..0a9955af0 100644
--- a/id/server/auth/pom.xml
+++ b/id/server/auth/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>MOA.id</groupId>
<artifactId>moa-id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/id/server/auth/src/main/webapp/img/online-bku-deactivated.png b/id/server/auth/src/main/webapp/img/online-bku-deactivated.png
new file mode 100644
index 000000000..c2145f12a
--- /dev/null
+++ b/id/server/auth/src/main/webapp/img/online-bku-deactivated.png
Binary files differ
diff --git a/id/server/auth/src/main/webapp/index.html b/id/server/auth/src/main/webapp/index.html
index 982c850a8..d898f8b95 100644
--- a/id/server/auth/src/main/webapp/index.html
+++ b/id/server/auth/src/main/webapp/index.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf8" >
- <title>MOA-ID 2.2.x</title>
+ <title>MOA-ID 3.0.x</title>
<link rel="stylesheet" href="./common/main.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400' rel='stylesheet' type='text/css'>
@@ -72,7 +72,7 @@
<ul>
<!--li><a href="_index.html">Allgemein</a></li-->
<!--li><a href="http://joinup.ec.europa.eu/site/moa-idspss/">Dokumentation</a></li-->
- <li><a href="http://joinup.ec.europa.eu/site/moa-idspss/moa-id-2.0.0/doc/handbook">Dokumentation</a></li>
+ <li><a href="http://joinup.ec.europa.eu/site/moa-idspss/moa-id-3.x/doc/handbook">Dokumentation</a></li>
<!--Link zu den Demo-Clients-->
<li><a href=#>Demo Clients</a></li>
<!--Link zum Konfigtool-->
@@ -82,8 +82,8 @@
</nav>
<div id="demologin" class="container">
<br/>
- <a href="#" id="loginButton" class="button" onclick="PVP2LoginIframe('https://menja.iaik.tugraz.at:8443/moa-id-oa/servlet/pvp2login')">Login</a>
- <p id="loginText">Über den Login-Button können Sie sich anschließend bei Ihrer Online-Applikation mit der Bürgerkarte oder der Handysignatur anmelden. Dazu müssen Sie allerdings zuvor die Applikation gemäß <a href="http://joinup.ec.europa.eu/site/moa-idspss/moa-id-2.0.0/doc/handbook/application/application.html#DemoApp_pvp21">Beschreibung</a> konfigurieren.</p>
+ <a href="#" id="loginButton" class="button" onClick="PVP2LoginIframe('https://menja.iaik.tugraz.at:8443/moa-id-oa/servlet/pvp2login')">Login</a>
+ <p id="loginText">Über den Login-Button können Sie sich anschließend bei Ihrer Online-Applikation mit der Bürgerkarte oder der Handysignatur anmelden. Dazu müssen Sie allerdings zuvor die Applikation gemäß <a href="http://joinup.ec.europa.eu/site/moa-idspss/moa-id-3.x/doc/handbook/application/application.html#DemoApp_pvp21">Beschreibung</a> konfigurieren.</p>
</div>
</div>
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer
new file mode 100644
index 000000000..eb051dc4d
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEUzCCAzugAwIBAgIDFE3dMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYDVQQGEwJB
+VDGBizCBiAYDVQQKHoGAAEEALQBUAHIAdQBzAHQAIABHAGUAcwAuACAAZgD8AHIA
+IABTAGkAYwBoAGUAcgBoAGUAaQB0AHMAcwB5AHMAdABlAG0AZQAgAGkAbQAgAGUA
+bABlAGsAdAByAC4AIABEAGEAdABlAG4AdgBlAHIAawBlAGgAcgAgAEcAbQBiAEgx
+GDAWBgNVBAsTD0EtVHJ1c3QtUXVhbC0wMTEYMBYGA1UEAxMPQS1UcnVzdC1RdWFs
+LTAxMB4XDTE0MDcwMTExMjExNVoXDTI0MDcwMTA5MjExNVowgc8xCzAJBgNVBAYT
+AkFUMYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwA
+cgAgAFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAA
+ZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIA
+SDEYMBYGA1UECxMPQS1UcnVzdC1RdWFsLTAxMRgwFgYDVQQDEw9BLVRydXN0LVF1
+YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmhgdxIbxTGEOH
+fXGiewI3NFldAWKFWfLofO+5I1UbvA5avt7IgsGXz/tI/f5HGUbascI0i7xG0tqV
+lA5ctQgLRqxgxHtgTkMcqsAEYdsz3LZsCdXO1QrvEBGLTSABdxiL/gSWJ6z77CSw
+x7Xg02HwxPV82cjGkSF3ENGJntuIAAnRDWn/ORHjFatNRymoMbHaOEZXSGhf7Y5F
+rrHEqGyi9E6sv784De/T1aTvskn8cWeUmDzv//omiG/a/V9KQex/61XN8OthUQVn
+X+u/liL2NKx74I2C/GgHX5B0WkPNqsSOgmlvJ/cKuT0PveUgVFDAA0oYBgcE1KDM
+lBbN0kmPAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEs8jB2F
+6W+tMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAQIN9LZbMivO9
+kWLDlDI9cTEIPpRXmgNdaBQRUpZc2ML0vDW6OVI90r8GxFQTE/I7HjrvuqQDTEL1
+qd8tthiazsLYI5eDX1CtJEFFtg25Y9t3tK2HsShb8sCj798hoXsOMFR9qhp5Fjb8
+TX4CVuQ3sK1TKeNlDmpAx6SqkYYT0CCMccsxt2j89ED8Z+B/yW19OZQk3BFDigYL
+46YsLKAC96ItFpUOs8ZbAUfUlpVA6G+09EMcDxOcuD/ebLx6I/ynwYAtqYXaizsY
+KTE35A3M2ghfGFJ+DlQoh3Bn/RG01LKXXgaVTHHMvvpxBp55wz2SocD/PpFe+D6Q
+C016YgTrrQ==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer
new file mode 100644
index 000000000..be29fb6ac
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDyzCCArOgAwIBAgIDFE3kMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1
+YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0xNDA3MDExMTIzMzNa
+Fw0yNDA3MDEwOTIzMzNaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz
+dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDIxGDAWBgNVBAMMD0Et
+VHJ1c3QtUXVhbC0wMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaR
+q9eOsFm4Ab20Hq2Z/aH86gyWa48uSUjY6eQkguHYuszr3gdcSMYZggFHQgnhfLmf
+ro/27l5rqKhWiDhWs+b+yZ1PNDhRPJy+86ycHMg9XJqErveULBSyZDdgjhSwOyrN
+ibUir/fkf+4sKzP5jjytTKJXD/uCxY4fAd9TjMEVpN3umpIS0ijpYhclYDHvzzGU
+833z5Dwhq5D8bc9jp8YSAHFJ1xzIoO1jmn3jjyjdYPnY5harJtHQL73nDQnfbtTs
+5ThT9GQLulrMgLU4WeyAWWWEMWpfVZFMJOUkmoOEer6A8e5fIAeqdxdsC+JVqpZ4
+CAKel/Arrlj1gFA//jsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQj0rJKbBRc4wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBh
+MfOINQm4XpzF6DmkOmb/ArSXHf5LObqFmIMooNr2TkyzrUTK/NE+mdrm15Rfdts7
+kZVq/ICfQSFeaPvWaAVq4plH/26OjvMTVv7DfgfPBUxDWqlCuDnDnPAVQ+yo/o5i
+BA5uUlMbp5znbDtlxwF/5gWqcn/hKxSUCP1uiOPIlKfeVvsRmBcJAdoixTM/Ic10
+pavJMGOI20onArvQZAUEbXQLA8cs8naxfF6Bo36U9nk6wn7q8VPXhViekByd17F6
+9A+ah0Iqw4SPf9BqNRIe1YxxjDhCmjWt3aoyE3ZFBuGjW+r2ipb/vGU1+2oyy2Fd
+2dMmiMQ7gGhWX9X6gWLd
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer
new file mode 100644
index 000000000..e1100c7fc
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDyzCCArOgAwIBAgIDFE31MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1
+YWwtMDMxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMzAeFw0xNDA3MDExMTMwNTZa
+Fw0yNDA3MDEwOTMwNTZaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz
+dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDMxGDAWBgNVBAMMD0Et
+VHJ1c3QtUXVhbC0wMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALOe
+JIgc0s9AA0hqqqWgK72W9XwKn5+rUJDbQc5WgHkqwP2TU3qcW/NZYSSIY6PVGO6b
+hHSEnOyMPdrBhnpvNi4m6349yT6t565LdHcoKyQg/youwpVkEPZ+e8O32hF9nqvt
+L4wZohydjMwzcHUJB/5e+0CkJYwv/bVRZzqoK0yf1midYJukxWOw7nDNKD9KdOpZ
++XXFAAZuH7BjwSqqE138y9JlGzkxIlrCeSJdGfFLwr7OHIgBdPEmQXcyOcaMUGjP
+U4VDig+gj+6OC5KjAEC+wKJZXiyhRLj+HyLTDLrQ6O8p5HI3Sov4FuwiMgcqIyzz
+o9fNyqmnT3K/vBGOqBsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIRgbfN/LCNxAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBy
+jA/CmId9oz8sy4rwEklti+8TLS/aLHkiMqUmKjuHyT/6mz4Qh4fLfAAEv8iGSZiW
++7+Gv7HTcuEEdyNNhUmMGJLSQA/3KBjlttHXLiG943wnvcZf3LtkFc+8Ia5N3bNS
+BM6q7/OFKHSS+iHcAJ8XS6SnLITYRyfo0thsXBaHpkTUkEP0uJY+yoE/EcBkvsGX
+drLIawu8YOrNZvs3S6Ag0ex5brIdqiNtlUGwRxpLwssfBho5K0NqpXAloHT9kHBd
+rGb2GrVdLIesuVivSP9zq09M8bcm3jDPCHv5bcudPZVX7rkr79VphgLfKlINA4Fw
+VxCuPLXx/4sCfANQtvuY
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
new file mode 100644
index 000000000..b9a0e5a61
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer
new file mode 100644
index 000000000..e90f5f2a6
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDXTCCAkWgAwIBAgIDFE3DMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFU
+MRAwDgYDVQQKEwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkw
+FwYDVQQDExBBLVRydXN0LW5RdWFsLTAxMB4XDTE0MDcwMTExMDk1NFoXDTI0MDcw
+MTA5MDk1NFowVTELMAkGA1UEBhMCQVQxEDAOBgNVBAoTB0EtVHJ1c3QxGTAXBgNV
+BAsTEEEtVHJ1c3QtblF1YWwtMDExGTAXBgNVBAMTEEEtVHJ1c3QtblF1YWwtMDEw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD/9RyAEZ6eHmhYzNJ328f0
+jmdSUFi6EqRqOxb3jHNPTIpK82CR6z5lmSnZQNUuCPD+htbNZffd2DKVB06NOyZ1
+2zcOMCgj4GtkZoqE0zPpPT3bpoE55nkZZe/qWEX/64wz/L/4EdkvKDSKG/UsP75M
+tmCVY5m2Eg73RVFRz4ccBIMpHel4lzEqSkdDtZOY5fnkrE333hx67nxq21vY8Eyf
+8O4fPQ5RtN8eohQCcPQ1z6ypU1R7N9jPRpnI+yzMOiwd3+QcKhHi1miCzo0pkOaB
+1CwmfsTyNl8qU0NJUL9Ta6cea7WThwTiWol2yD88cd2cy388xpbNkfrCPmZNGLoV
+AgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECE5ZzscCMocwMA4G
+A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAO3hBdwsNQOtYOAlC2PKT
+sdNexKqMefFGrGDYIEAflaudwpcqUgv7fLLhMNRMT+BcXtqXtfNHGsll2GwseuMq
+C02bPUmbfNV4P9djIz/s6qqvNQaQneFzhuXn+i0YQ10sFFVeIL3qrBMl1lwBeQ64
+/GyvrbGiHuuagEUc25CDrUqni+b+azaPUsRG6IXkIWG0H6WIMqtxIdHzAV/1raKh
+PKot1VhG2rivf1cBBGXU/0VSYBitXrLNwXwlX2ad0WiFHUF8RS9F3j2vVSYMfxer
+NPNaRLtCkHNSqCIDkMmmHJKbJbKJzMaZYmX2i2nc16HCpE/gbQc3etQCl3GvzO88
+xw==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
new file mode 100644
index 000000000..2284687bb
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy
+OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM
+EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj
+lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ
+znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH
+2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1
+k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs
+2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD
+VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC
+AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1
+hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br
+cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm
+FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ
+tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s
+FJ6N46sU7LjJLqSKYEB8usoIiw==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer
new file mode 100644
index 000000000..d17d07619
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer
new file mode 100644
index 000000000..a6a9acdc3
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer
new file mode 100644
index 000000000..1bb449441
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer
new file mode 100644
index 000000000..6c0c042b4
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
new file mode 100644
index 000000000..04627da98
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEdzCCA1+gAwIBAgIDFLT9MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwNDIw
+NVoXDTI0MDcyMzA4NDIwNVowgYcxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxFjAUBgNVBAsMDWEtc2lnbi1TU0wtMDMxFjAUBgNVBAMMDWEt
+c2lnbi1TU0wtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMjPM6
+PqgdPBPV4Efudpytt2Y4GZJfjeRdZo5SCuULDvvL+23xxBWnR3scFvfE1ekHN/YK
+k+2/qhU2B2ntoSNJSyDchNM8YPc9Lx67zZyhQTZgbBzh3IZAVb/hwuRRRV68JCBj
+r3r6v7IbwjH5XcVISdB4szx0z93aAQyKW9QkV+tD5a1vWFETvdHsZeVmDzfqcdsG
+AznPJw+9HrImCsswCWYUgPcFRkPNjj2r2NoyckVN781aWmNTAqJPf/Ckj9l9pUIt
+Vjhy8XNJW4iVDBkkykBXcGSkIau0ypJrRjsD1jKqUTIRZ/y2HlyltmwWi8OuyBLd
+LaHDbjc0b6JmqoivAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQD6h02K0A90wEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEG
+MIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQv
+b3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJl
+dm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1
+dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAbHQvTl94ommGFln3s6wmd/tr6r5R
+3FR3A7O/uiGEAqm/7B84KGkTmKHhChGMiCiMcBSGtMx1IaO+t7gimLtRL57wgeIf
+k6nsgcbBioh0nO12XDagdtj75Dr7buEFyQvFdfydi5cAwScLW+YYxtwDni9/debd
+ypFKeCRxdCX12n0oFQDPJf8YvE4CaDitBJCQrZdJBDpB6muF8mpNq8CIuyTPIBZX
+RPKJNfIraKq/Xi7tuLkvWVGVsSqJeTvP++05Tvv/44+XBpCp3sUrjsb0G0Mj90PG
+SnAapsrgzDzLO/LQ8vrB9H2oRM4iYfUxu/dKSOBVXa3WQzsLBL0/9zZ30g==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer
new file mode 100644
index 000000000..60bc9a557
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2zCCAsOgAwIBAgIDFhIPMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRwwGgYDVQQLDBNhLXNpZ24tVEVT
+VC1RdWFsLTAxMRwwGgYDVQQDDBNhLXNpZ24tVEVTVC1RdWFsLTAxMB4XDTE0MTEx
+NzA3NDAzNloXDTI0MTExMTA2NDAzNlowgZMxCzAJBgNVBAYTAkFUMUgwRgYDVQQK
+DD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4g
+RGF0ZW52ZXJrZWhyIEdtYkgxHDAaBgNVBAsME2Etc2lnbi1URVNULVF1YWwtMDEx
+HDAaBgNVBAMME2Etc2lnbi1URVNULVF1YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQD4TRgyXzhxJ2AkndX0RPY771f64dsJrReEeuShLRK5io0B
+kJWc4t7wuD1B98cJ0MUPlMmOJ2Ckc/vuLhQUyY3qEUmhMhixCUIcdHQ5yH3H0yMV
+HxyJxAG83fE8M25kpKA4TzzMW8KPd2S63wbpPElyEy7vrllrLxvdQRSDpMZMvRg8
+fvoDGAehxsnKKwlXZuMq1aSBzfMz3cMBDKxvqzDIz7yC1iWNkdiwog3a5a5PbViK
+shhZ0h+bx9WFDpiN6ooPQgcGhjD+NqIDoiOr7CUFHp+HiC6xIsEFJaBHTf3dRZ61
+0r1FDABx0Yj8+wlXSQLYq/1nR/QMwsvH0Cz1qYTPAgMBAAGjNjA0MA8GA1UdEwEB
+/wQFMAMBAf8wEQYDVR0OBAoECE8h1CulBqTdMA4GA1UdDwEB/wQEAwIBBjANBgkq
+hkiG9w0BAQUFAAOCAQEAimFu+xTm3UdyU+fO+2hz4DS20OGSC9NBDkorjzhRPWoZ
+IVhUi6yH5drqSBm4/2ZYS1Ba5npzfyJwm+cLO28ljxAApfRHlbN0y83hKv7c0I7g
+zWTMRs8X8ar5Gd7d4O5jpC4PAaZ1ozSDoE06U5im6YMLaJy/0QYvf5EQBMvLdeoc
+d1vl17JYKYqYzcX2dvayikrfiglFqDaZZ66yJPBSuiyNhXpPkbXsOoyyTPtV/0Bh
+eKIQiQyJID5aZtR7D4fBAzKdp5wB9KLQXBZ80hrwqrIuy+ME0tFaBWYBi8dzQ1iq
+/E3Qz0USfGmxPMm8y/zRqsDvxZCRiSuvzBkOXbGMdA==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer
new file mode 100644
index 000000000..e4bd48dac
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer
new file mode 100644
index 000000000..74c4ce3b8
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer
new file mode 100644
index 000000000..6c50ec079
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt
new file mode 100644
index 000000000..ebfbce9a0
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
new file mode 100644
index 000000000..b9a0e5a61
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
new file mode 100644
index 000000000..2284687bb
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy
+OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM
+EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj
+lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ
+znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH
+2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1
+k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs
+2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD
+VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC
+AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1
+hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br
+cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm
+FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ
+tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s
+FJ6N46sU7LjJLqSKYEB8usoIiw==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03.cer
new file mode 100644
index 000000000..33e776369
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/A-Trust-nQual-03.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
new file mode 100644
index 000000000..04627da98
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEdzCCA1+gAwIBAgIDFLT9MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwNDIw
+NVoXDTI0MDcyMzA4NDIwNVowgYcxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxFjAUBgNVBAsMDWEtc2lnbi1TU0wtMDMxFjAUBgNVBAMMDWEt
+c2lnbi1TU0wtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMjPM6
+PqgdPBPV4Efudpytt2Y4GZJfjeRdZo5SCuULDvvL+23xxBWnR3scFvfE1ekHN/YK
+k+2/qhU2B2ntoSNJSyDchNM8YPc9Lx67zZyhQTZgbBzh3IZAVb/hwuRRRV68JCBj
+r3r6v7IbwjH5XcVISdB4szx0z93aAQyKW9QkV+tD5a1vWFETvdHsZeVmDzfqcdsG
+AznPJw+9HrImCsswCWYUgPcFRkPNjj2r2NoyckVN781aWmNTAqJPf/Ckj9l9pUIt
+Vjhy8XNJW4iVDBkkykBXcGSkIau0ypJrRjsD1jKqUTIRZ/y2HlyltmwWi8OuyBLd
+LaHDbjc0b6JmqoivAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQD6h02K0A90wEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEG
+MIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQv
+b3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJl
+dm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1
+dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAbHQvTl94ommGFln3s6wmd/tr6r5R
+3FR3A7O/uiGEAqm/7B84KGkTmKHhChGMiCiMcBSGtMx1IaO+t7gimLtRL57wgeIf
+k6nsgcbBioh0nO12XDagdtj75Dr7buEFyQvFdfydi5cAwScLW+YYxtwDni9/debd
+ypFKeCRxdCX12n0oFQDPJf8YvE4CaDitBJCQrZdJBDpB6muF8mpNq8CIuyTPIBZX
+RPKJNfIraKq/Xi7tuLkvWVGVsSqJeTvP++05Tvv/44+XBpCp3sUrjsb0G0Mj90PG
+SnAapsrgzDzLO/LQ8vrB9H2oRM4iYfUxu/dKSOBVXa3WQzsLBL0/9zZ30g==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.cer
new file mode 100644
index 000000000..a699436ca
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/a-sign-SSL-03.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/gateway.stammzahlenregister.gv.at.cer b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/gateway.stammzahlenregister.gv.at.cer
new file mode 100644
index 000000000..ff90e35f5
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/gateway.stammzahlenregister.gv.at.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/szrgw.egiz.gv.at.crt b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/szrgw.egiz.gv.at.crt
new file mode 100644
index 000000000..0780bc44f
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/certs/truststore/szrgw.egiz.gv.at.crt
@@ -0,0 +1,33 @@
+-----BEGIN CERTIFICATE-----
+MIIFsDCCBJigAwIBAgIHASBxw0JY9jANBgkqhkiG9w0BAQUFADCBrDEcMBoGA1UE
+AxMTRXVyb1BLSSBJQUlLIFNTTCBDQTEmMCQGA1UEChMdR3JheiBVbml2ZXJzaXR5
+IG9mIFRlY2hub2xvZ3kxSDBGBgNVBAsTP0luc3RpdHV0ZSBmb3IgQXBwbGllZCBJ
+bmZvcm1hdGlvbiBQcm9jZXNzaW5nIGFuZCBDb21tdW5pY2F0aW9uczENMAsGA1UE
+BxMER3JhejELMAkGA1UEBhMCQVQwHhcNMTMxMjAzMTYzODUyWhcNMTUxMjAzMTYz
+ODUyWjCBqTELMAkGA1UEBhMCQVQxDTALBgNVBAcTBEdyYXoxJjAkBgNVBAoTHUdy
+YXogVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5MUgwRgYDVQQLEz9JbnN0aXR1dGUg
+Zm9yIEFwcGxpZWQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBhbmQgQ29tbXVuaWNh
+dGlvbnMxGTAXBgNVBAMTEHN6cmd3LmVnaXouZ3YuYXQwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQDPDRBxrsDziPzz+GAcdJ2m6kOkJcr4REzMzP9dULRv
+R6EbVvvwQgPpAEcuqH+101ZwcIHNSCSQF30HnkJVF9hQ+4jIKjvUQ96hkZUC8OyI
+9WfJfPjCtMea9Mk4YsI2DVc6xoiuNKSeZt6ER0b3YDRFX6x4QqQpgt3uIMKjHxBf
+ESB9ehKLEPnQTgIzblvVrPWRAjVd+nZq40ZW1Im9Kq2pRk1gt5xiGh0q5qCV17Yj
+mzTcO4tcgW7iFJ8Tj1Cdog7AOBkhGXGtndfhH/EwGo08PZ1PEYwA5wTVHEhq/Nom
+zBKhDBRdDBhWOuxMeX8zSffuBYf9Oa9RGZBPErUi9HgHAgMBAAGjggHWMIIB0jAO
+BgNVHQ8BAf8EBAMCBLAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/
+BAIwADBQBgNVHSAESTBHMEUGDCsGAQQBlRIBAgMBATA1MDMGCCsGAQUFBwIBFido
+dHRwOi8vZXVyb3BraS5pYWlrLmF0L2NhL2lhaWsvY3BzLzEuMy8wHQYDVR0OBBYE
+FFi1nfsT7YEJ9PKNzMHBtXbl574ZMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9j
+YS5pYWlrLnR1Z3Jhei5hdC9jYXBzby9jcmxzL0V1cm9QS0lJQUlLX1NTTC5jcmww
+gZoGCCsGAQUFBwEBBIGNMIGKMEIGCCsGAQUFBzABhjZodHRwOi8vY2EuaWFpay50
+dWdyYXouYXQvY2Fwc28vT0NTUD9jYT1FdXJvUEtJSUFJS19TU0wwRAYIKwYBBQUH
+MAKGOGh0dHA6Ly9jYS5pYWlrLnR1Z3Jhei5hdC9jYXBzby9jZXJ0cy9FdXJvUEtJ
+SUFJS19TU0wuY2VyMCEGA1UdEQQaMBiBFnRob21hcy5sZW56QGVnaXouZ3YuYXQw
+HwYDVR0jBBgwFoAUFZk0u+CXsy4oNl3WeM9osRQzuEkwDQYJKoZIhvcNAQEFBQAD
+ggEBAItlnRWi7nFbd9oahK06YNgkI6c3zPfWp3anaYOxZt+AakjI7IoV2YprNVWJ
+2RZ2KA7rM3xNO1i1/H6TcWpjIJy+zsejvyXjQbC9e+wy3hD7iqtCt4oWqzIg61NE
+u1j1u/r9/yozDEkOYv7XY+X5xNBCZ1YfbOwKltLdCWhk6MSK9xDUoeub0DyD3OIS
+4VBVfftsVaJA9vY9e62aSpysEU6VoJpoXVLv1pGeCMajF9d7umCs+daguugbUNMM
+FIfAll/9kcEG7FmpLaWA1qRpfTb8XZ6j/J0YrWAzyyCmLiQJRmhDDipi7PqAJBz6
+9aau5Lhfs4OYoKxgiw7WxOJldFo=
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id-configuration/htmlTemplates/loginFormFull.html b/id/server/data/deploy/conf/moa-id-configuration/htmlTemplates/loginFormFull.html
index d0af6401b..123a23837 100644
--- a/id/server/data/deploy/conf/moa-id-configuration/htmlTemplates/loginFormFull.html
+++ b/id/server/data/deploy/conf/moa-id-configuration/htmlTemplates/loginFormFull.html
@@ -15,13 +15,17 @@
text-align: center;
background-color: #6B7B8B;
}
+
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU p {
font-size: 0.7em;
}
#localBKU input{
- font-size: 0.7em;
+ font-size: 0.85em;
/*border-radius: 5px;*/
}
@@ -142,6 +146,8 @@
margin-bottom: 10px;
}
+
+
#validation {
position: absolute;
bottom: 0px;
@@ -154,7 +160,10 @@
@media screen and (max-width: 205px) {
#localBKU p {
font-size: 0.6em;
- }
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.6em;
@@ -191,6 +200,9 @@
#localBKU p {
font-size: 0.7em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.7em;
@@ -227,6 +239,9 @@
#localBKU p {
font-size: 0.9em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
@@ -257,7 +272,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -288,7 +305,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -327,7 +346,9 @@
font-size: 100%;
background-color: #MAIN_BACKGOUNDCOLOR#;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#page {
visibility: hidden;
margin-top: 0%;
@@ -464,12 +485,11 @@
}
#localBKU {
- padding-left: 5%;
- padding-right: 2%;
padding-bottom: 4%;
/*padding-top: 4%;*/
position: relative;
- clear: both;
+ clear: both;
+ text-align: center;
}
#bkukarte {
@@ -526,13 +546,13 @@
#localBKU input {
/* color: #BUTTON_COLOR#; */
- border: 0px;
+ /*border: 0px;*/
display: inline-block;
}
#localBKU input:hover, #localBKU input:focus, #localBKU input:active {
- text-decoration: underline;
+ /*text-decoration: underline;*/
}
#installJava, #BrowserNOK {
@@ -727,6 +747,56 @@
}
}
+
+ function checkIfBrowserSupportsJava(){
+ console.log("Browser is Chrome: "+checkIfBrowserIsChrome());
+ console.log("Browser is Safari: "+checkIfBrowserIsSafari());
+ console.log("Browser is Edge: "+checkIfBrowserIsEdge());
+
+ var cnt = 0;
+
+ if(checkIfBrowserIsChrome())cnt++;
+ if(checkIfBrowserIsEdge())cnt++;
+ if(checkIfBrowserIsSafari())cnt++;
+
+ if(cnt==0 || cnt>1)//cnt>1 means perhaps wrong detection
+ return true;
+
+ var image = document.getElementById("bkuimage");
+ var srcatt = image.getAttribute("src");
+ var last = srcatt.substring(srcatt.lastIndexOf('/')+1);
+ srcatt = srcatt.replace(last,'online-bku-deactivated.png');
+ image.setAttribute("src",srcatt);
+
+
+ var button = document.getElementsByName("bkuButtonOnline")[0];
+ button.setAttribute("class","browserInfoButton");
+ button.setAttribute("title","Java wird nicht unterstützt, klicken für mehr Informationen.");
+ button.setAttribute("onClick","alert('Java wird von Ihrem Browser nicht unterstützt, ist jedoch für den Betrieb der Online Bürgerkartenumgebung notwendig.\\nWollen Sie dennoch die Online Bürgerkartenumgebung verwenden, wird zur Zeit Java noch von Firefox und MS Internet Explorer unterstützt. \\nAlternativ koennen Sie auch eine lokale Bürgerkartenumgebung verwenden, verfügbar unter www.buergerkarte.at.');");
+
+ return false;
+
+ }
+ function checkIfBrowserIsChrome(){
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = false;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && webstore_defined;
+ }
+ function checkIfBrowserIsEdge(){//edge also defines the chrome object, but not the webapp
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = true;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && !webstore_defined;
+ }
+ function checkIfBrowserIsSafari(){
+ var cond1 = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
+ return cond1;
+ }
/* function setSSOSelection() {
document.getElementById("useSSO").value = "false";
var checkbox = document.getElementById("SSOCheckBox");
@@ -754,7 +824,7 @@
</script>
<title>Anmeldung mittels Bürgerkarte oder Handy-Signatur</title>
</head>
-<body onload="onChangeChecks();" onresize="onChangeChecks();">
+<body onload="onChangeChecks();checkIfBrowserSupportsJava();" onresize="onChangeChecks();">
<div id="page">
<div id="page1" class="case selected-case" role="main">
<h2 class="OA_header" role="heading">Anmeldung an: #OAName#</h2>
@@ -779,7 +849,7 @@
</div>
<div id="bkuselectionarea">
<div id="bkukarte">
- <img class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
+ <img id="bkuimage" class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
alt="OnlineBKU" /> <input name="bkuButtonOnline" type="button"
onClick="bkuOnlineClicked();" tabindex="2" role="button"
value="Karte" />
@@ -801,9 +871,8 @@
name="MODUL" value="#MODUL#"> <input type="hidden"
name="ACTION" value="#ACTION#"> <input type="hidden"
name="MOASessionID" value="#SESSIONID#">
- <input type="submit" value=">lokale Bürgerkartenumgebung" tabindex="4"
- role="button" class="hell"
- onclick="setMandateSelection();"
+ <input type="submit" value=" Lokale Bürgerkartenumgebung " tabindex="4"
+ role="button" onclick="setMandateSelection();"
>
<!--p>
<small>Alternativ können Sie eine lokal installierte BKU verwenden.</small>
@@ -837,7 +906,7 @@
src="#CONTEXTPATH#/img/valid-html5-blue.png" alt="HTML5 ist valide!" />
</a> <a href="http://jigsaw.w3.org/css-validator/"> <img
style="border: 0; width: 88px; height: 31px"
- src="https://jigsaw.w3.org/css-validator/images/vcss-blue"
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
alt="CSS ist valide!" />
</a>
</div>
diff --git a/id/server/data/deploy/conf/moa-id-configuration/log4j.properties b/id/server/data/deploy/conf/moa-id-configuration/log4j.properties
new file mode 100644
index 000000000..d83e8e550
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/log4j.properties
@@ -0,0 +1,39 @@
+# commons-logging setup
+org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
+
+# define log4j root loggers
+log4j.rootLogger=info, stdout
+log4j.logger.at.gv.egovernment.moa=info
+log4j.logger.at.gv.egovernment.moa.spss=info
+log4j.logger.iaik.server=info
+log4j.logger.at.gv.egovernment.moa.id=info,R
+log4j.logger.at.gv.egovernment.moa.id.proxy=info
+log4j.logger.eu.stork=info
+log4j.logger.org.hibernate=warn
+
+log4j.logger.at.gv.egiz.components.configuration=info,CONFIGTOOL
+log4j.logger.at.gv.egovernment.moa.id.commons=info,CONFIGTOOL R
+log4j.logger.at.gv.egovernment.moa.id.config.webgui=info,CONFIGTOOL
+log4j.logger.at.gv.egovernment.moa.id.configuration=info,CONFIGTOOL
+
+# configure the stdout appender
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %20c | %10t | %m%n
+log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} |%20.20c | %10t | %m%n
+
+# configure the rolling file appender (R)
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${catalina.base}/logs/moa-id.log
+log4j.appender.R.MaxFileSize=10000KB
+log4j.appender.R.MaxBackupIndex=1
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n
+
+# configure the rolling file appender (R)
+log4j.appender.CONFIGTOOL=org.apache.log4j.RollingFileAppender
+log4j.appender.CONFIGTOOL.File=${catalina.base}/logs/moa-id-webgui.log
+log4j.appender.CONFIGTOOL.MaxFileSize=10000KB
+log4j.appender.CONFIGTOOL.MaxBackupIndex=1
+log4j.appender.CONFIGTOOL.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONFIGTOOL.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n \ No newline at end of file
diff --git a/id/server/data/deploy/conf/moa-id-configuration/logback_config.xml b/id/server/data/deploy/conf/moa-id-configuration/logback_config.xml
new file mode 100644
index 000000000..c00e62e52
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/logback_config.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- For assistance related to logback-translator or configuration -->
+<!-- files in general, please contact the logback user mailing list -->
+<!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
+<!-- -->
+<!-- For professional support please see -->
+<!-- http://www.qos.ch/shop/products/professionalSupport -->
+<!-- -->
+<configuration>
+ <!-- Errors were reported during translation. -->
+ <!-- No class found for appender CONFIGTOOL R -->
+ <!-- Could not find transformer for null -->
+ <appender name="R" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
+ <File>${catalina.base}/logs/moa-id.log</File>
+ <encoder>
+ <pattern>%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n</pattern>
+ </encoder>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <maxIndex>1</maxIndex>
+ <FileNamePattern>${catalina.base}/logs/moa-id.log.%i</FileNamePattern>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>10000KB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+ <appender name="CONFIGTOOL R">
+ <!--No layout specified for appender named [CONFIGTOOL R] of class [null]-->
+ </appender>
+ <appender name="CONFIGTOOL" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
+ <File>${catalina.base}/logs/moa-id-webgui.log</File>
+ <encoder>
+ <pattern>%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n</pattern>
+ </encoder>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <maxIndex>1</maxIndex>
+ <FileNamePattern>${catalina.base}/logs/moa-id-webgui.log.%i</FileNamePattern>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>10000KB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+ <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} |%20.20c | %10t | %m%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="eu.stork" level="info"/>
+ <logger name="iaik.server" level="info"/>
+ <logger name="at.gv.egovernment.moa.id" level="info">
+ <appender-ref ref="R"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.id.commons" level="info">
+ <appender-ref ref="CONFIGTOOL R"/>
+ </logger>
+ <logger name="org.hibernate" level="warn"/>
+ <logger name="at.gv.egiz.components.configuration" level="info">
+ <appender-ref ref="CONFIGTOOL"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.id.proxy" level="info"/>
+ <logger name="at.gv.egovernment.moa.id.config.webgui" level="info">
+ <appender-ref ref="CONFIGTOOL"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.spss" level="info"/>
+ <logger name="at.gv.egovernment.moa" level="info"/>
+ <root level="info">
+ <appender-ref ref="stdout"/>
+ </root>
+</configuration>
diff --git a/id/server/data/deploy/conf/moa-id-configuration/moa-id-configtool.properties b/id/server/data/deploy/conf/moa-id-configuration/moa-id-configtool.properties
index b10913d69..9a3b3675a 100644
--- a/id/server/data/deploy/conf/moa-id-configuration/moa-id-configtool.properties
+++ b/id/server/data/deploy/conf/moa-id-configuration/moa-id-configtool.properties
@@ -14,9 +14,28 @@ general.ssl.certstore=certs/certstore
general.ssl.truststore=certs/truststore
general.moaconfig.key=ConfigurationEncryptionKey
-
general.pvp.schemavalidation=true
+##Hibnerate configuration for MOA-ID 2.0 configuration
+hibernate.dialect=org.hibernate.dialect.MySQLDialect
+hibernate.connection.url=jdbc:mysql://localhost/moa-id-config?charSet=utf-8&autoReconnect=true
+hibernate.connection.charSet=utf-8
+hibernate.connection.driver_class=com.mysql.jdbc.Driver
+hibernate.connection.username=
+hibernate.connection.password=
+
+jpaVendorAdapter.generateDdl=true
+hibernate.show_sql=false
+dbcp.connectionProperties=
+dbcp.initialSize=0
+dbcp.maxActive=8
+dbcp.maxIdle=8
+dbcp.minIdle=0
+dbcp.maxWaitMillis=-1
+dbcp.testOnBorrow=true
+dbcp.testOnReturn=false
+dbcp.testWhileIdle=false
+
##Mail
general.mail.host=smtp.localhost...
#general.mail.host.port=
@@ -65,24 +84,3 @@ general.login.pvp2.keystore.authrequest.key.password=password
#UserRequestCleanUP time in hours
general.userrequests.cleanup.delay=18
-
-##Hibnerate configuration for MOA-ID 2.0 configuration
-hibernate.dialect=org.hibernate.dialect.MySQLDialect
-hibernate.connection.url=jdbc:mysql://localhost/moa-id-config?charSet=utf-8&autoReconnect=true
-hibernate.connection.charSet=utf-8
-hibernate.connection.driver_class=com.mysql.jdbc.Driver
-hibernate.connection.username=
-hibernate.connection.password=
-
-hibernate.hbm2ddl.auto=update
-hibernate.current_session_context_class=thread
-hibernate.transaction.flush_before_completion=true
-hibernate.transaction.auto_close_session=true
-hibernate.show_sql=false
-hibernate.format_sql=true
-hibernate.c3p0.acquire_increment=3
-hibernate.c3p0.idle_test_period=300
-hibernate.c3p0.timeout=300
-hibernate.c3p0.max_size=20
-hibernate.c3p0.max_statements=0
-hibernate.c3p0.min_size=3 \ No newline at end of file
diff --git a/id/server/data/deploy/conf/moa-id-configuration/transforms/TransformsInfoAuthBlockTable_DE_2.1.xml b/id/server/data/deploy/conf/moa-id-configuration/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml
index 6afe1f36b..6afe1f36b 100644
--- a/id/server/data/deploy/conf/moa-id-configuration/transforms/TransformsInfoAuthBlockTable_DE_2.1.xml
+++ b/id/server/data/deploy/conf/moa-id-configuration/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml
diff --git a/id/server/data/deploy/conf/moa-id-configuration/userdatabase.properties b/id/server/data/deploy/conf/moa-id-configuration/userdatabase.properties
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id-configuration/userdatabase.properties
diff --git a/id/server/data/deploy/conf/moa-id/MOAIdentities.xsd b/id/server/data/deploy/conf/moa-id/MOAIdentities.xsd
deleted file mode 100644
index 91c7a6cc0..000000000
--- a/id/server/data/deploy/conf/moa-id/MOAIdentities.xsd
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Rudolf Schamberger (Stabsstelle IKT-Strategie) (Bundesrechenzentrum GmbH) -->
-<xs:schema targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814" elementFormDefault="qualified" attributeFormDefault="unqualified">
- <xs:element name="MOAIdentities">
- <xs:annotation>
- <xs:documentation>MOAIdentities provides a mapping from identities to parameters used in the XMLLoginParameterResolver of MOA-ID</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence maxOccurs="unbounded">
- <xs:element name="Mapping">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Identity">
- <xs:complexType>
- <xs:choice>
- <xs:element name="NamedIdentity" type="tns:NamedIdentityType"/>
- <xs:element name="bPKIdentity" type="tns:bPKIdentitiyType"/>
- <xs:element name="wbPKIdentity" type="tns:wbPKIdentitiyType"/>
- </xs:choice>
- </xs:complexType>
- </xs:element>
- <xs:element name="Parameters" type="tns:ParametersType"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="wbPKIdentitiyType">
- <xs:simpleContent>
- <xs:extension base="xs:boolean">
- <xs:attribute name="wbPK" type="xs:string" use="required"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="bPKIdentitiyType">
- <xs:simpleContent>
- <xs:extension base="xs:boolean">
- <xs:attribute name="bPK" type="xs:string" use="required"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="NamedIdentityType">
- <xs:simpleContent>
- <xs:extension base="xs:boolean">
- <xs:attribute name="SurName" type="xs:string" use="required"/>
- <xs:attribute name="GivenName" type="xs:string" use="required"/>
- <xs:attribute name="BirthDate" type="xs:string" use="optional"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="ParametersType">
- <xs:attribute name="UN" type="xs:string" use="optional"/>
- <xs:attribute name="PW" type="xs:string" use="optional"/>
- <xs:attribute name="Param1" type="xs:string" use="optional"/>
- <xs:attribute name="Param2" type="xs:string" use="optional"/>
- <xs:attribute name="Param3" type="xs:string" use="optional"/>
- </xs:complexType>
-</xs:schema>
diff --git a/id/server/data/deploy/conf/moa-id/SampleIdentities.xml b/id/server/data/deploy/conf/moa-id/SampleIdentities.xml
deleted file mode 100644
index abda0bf64..000000000
--- a/id/server/data/deploy/conf/moa-id/SampleIdentities.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Beispielkonfiguration für den Einsatz der MOA-ID Proxy-Komponenten unter Einsatz eines speziellen XMLLoginParameterResolver
- Damit kann unter Einsatz des XMLLoginParameterResolverPlainData (s.u.) eine Einschränkung von Benutzer für OA erfolgen. -->
-<!-- Beispiel für ein Element ProxyComponent in der MOA-ID Konfigurationsdatei welches den XMLLoginParameterResolverPlainData
- mit der Benutzerdatei Identities.xml verwendet um sich über Basic Authentication (401) an einer Webseite anzumeldne -->
-
-
-<!--
- <ProxyComponent configFileURL="oa/SampleOAConfiguration.xml" sessionTimeOut="600"
- loginParameterResolverImpl="at.gv.egovernment.moa.id.proxy.XMLLoginParameterResolverPlainData"
- loginParameterResolverConfiguration="Identities.xml">
- <ConnectionParameter URL="http://www.digitales.oesterreich.gv.at/">
- </ConnectionParameter>
- </ProxyComponent>
--->
-<MOAIdentities xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814 MOAIdentities.xsd">
- <!-- Eintrag aller Benutzer mit Berechtigung -->
- <!-- Die Daten müssen in der Schreibweise wie in der Personenbindung (= Schreibweise des ZMRs) eingegeben werden -->
-
- <!-- Benutzerin Kunz -->
- <Mapping>
- <Identity>
- <NamedIdentity SurName="Kunz" GivenName="Karin Stella" BirthDate="1900-01-01">1</NamedIdentity>
- </Identity>
- <Parameters UN="KunzKS" PW="geheim"/>
- </Mapping>
- <!-- Benutzer Mustermann -->
- <Mapping>
- <Identity>
- <NamedIdentity SurName="Mustermann-Fall" GivenName="Max Moriz" BirthDate="1900-01-01">1</NamedIdentity>
- </Identity>
- <Parameters UN="MustMM" PW="höchst?Geheim"/>
- </Mapping>
-</MOAIdentities>
diff --git a/id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
new file mode 100644
index 000000000..b9a0e5a61
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
new file mode 100644
index 000000000..2284687bb
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/ca-certs/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy
+OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM
+EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj
+lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ
+znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH
+2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1
+k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs
+2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD
+VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC
+AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1
+hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br
+cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm
+FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ
+tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s
+FJ6N46sU7LjJLqSKYEB8usoIiw==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/ca-certs/DigiCert High Assurance EV Root CA.crt b/id/server/data/deploy/conf/moa-id/certs/ca-certs/DigiCert High Assurance EV Root CA.crt
new file mode 100644
index 000000000..4b1bc66be
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/ca-certs/DigiCert High Assurance EV Root CA.crt
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
+ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
+MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
+LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
+RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
+PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
+xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
+Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
+hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
+EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
+FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
+nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
+eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
+hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
+Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
+vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
++OkuE6N36B9K
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/ca-certs/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt b/id/server/data/deploy/conf/moa-id/certs/ca-certs/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt
new file mode 100644
index 000000000..ebdf72d7f
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/ca-certs/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt
@@ -0,0 +1,29 @@
+-----BEGIN CERTIFICATE-----
+MIIE4DCCA8igAwIBAgIQC1w0NWdbJGfA1zI3+Q1flDANBgkqhkiG9w0BAQsFADBs
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
+ZSBFViBSb290IENBMB4XDTE0MTExODEyMDAwMFoXDTI0MTExODEyMDAwMFowczEL
+MAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxEjAQBgNVBAcTCUFt
+c3RlcmRhbTEPMA0GA1UEChMGVEVSRU5BMScwJQYDVQQDEx5URVJFTkEgU1NMIEhp
+Z2ggQXNzdXJhbmNlIENBIDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQChNsmK4gfxr6c9j2OMBRo3gOA7z5keoaPHiX4rUX+1fF1Brmvf7Uo83sRiXRYQ
+RJrD79hzJrulDtdihxgS5HgvIQHqGrp3NRRDUlq/4bItLTp9QCHzLhRQSrSYaFkI
+zztYezwb3ABzNiVciqQFk7WR9ebh9ZaCxaXfebcg7LodgQQ4XDvkW2Aknkb1J8NV
+nlbKen6PLlNSL4+MLV+uF1e87aTgOxbM9sxZ1/1LRqrOu28z9WA8qUZn2Av+hcP2
+TQIBoMPMQ8dT+6Yx/0Y+2J702OU//dS0pi8gMe7FtYVcZrlcSy/C40I7EFYHEjTm
+zH4EGvG6t9wZua2atFKvP/7HAgMBAAGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/
+AgEAMA4GA1UdDwEB/wQEAwIBhjB/BggrBgEFBQcBAQRzMHEwJAYIKwYBBQUHMAGG
+GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcwAoY9aHR0cDovL2Nh
+Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENB
+LmNydDBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8vY3JsNC5kaWdpY2VydC5jb20v
+RGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3JsMD0GA1UdIAQ2MDQwMgYE
+VR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
+MB0GA1UdDgQWBBTCuIXX4bkTvdFIvP1e3H2QQnqKqTAfBgNVHSMEGDAWgBSxPsNp
+A/i/RwHUmCYaCALvY2QrwzANBgkqhkiG9w0BAQsFAAOCAQEAsCq7NTey6NjZHqT4
+kjZBNU3sItnD+RYAMWx4ZyaELcy7XhndQzX88TYSCYxl/YWB6lCjxx0dL3wTZUbX
+r+WRDzz5xX+98kdYrwNCT7fmT4eenv6cCS1sC9hc4sIl5dkb1pguY3ViV5D8/yEB
+hadOpw3TwI8xkqe2j/H5fp4Oaf9cFdpf9C85mQgZJwsvtvmmDTQTPcGPRFTgdGtY
+2xbWxDah6HjKpX6iI4BTBQhhpX6TJl6/GEaYK07s2Kr8BFPhrgmep9vrepWv61x7
+dnnqz5SeAs6cbSm551qG7Dj8+6f/8e33oqLC5Ldnbt0Ou6PjtZ4O02dN9cnicemR
+1B0/YQ==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/ca-certs/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer b/id/server/data/deploy/conf/moa-id/certs/ca-certs/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
new file mode 100644
index 000000000..04627da98
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/ca-certs/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEdzCCA1+gAwIBAgIDFLT9MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwNDIw
+NVoXDTI0MDcyMzA4NDIwNVowgYcxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxFjAUBgNVBAsMDWEtc2lnbi1TU0wtMDMxFjAUBgNVBAMMDWEt
+c2lnbi1TU0wtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMjPM6
+PqgdPBPV4Efudpytt2Y4GZJfjeRdZo5SCuULDvvL+23xxBWnR3scFvfE1ekHN/YK
+k+2/qhU2B2ntoSNJSyDchNM8YPc9Lx67zZyhQTZgbBzh3IZAVb/hwuRRRV68JCBj
+r3r6v7IbwjH5XcVISdB4szx0z93aAQyKW9QkV+tD5a1vWFETvdHsZeVmDzfqcdsG
+AznPJw+9HrImCsswCWYUgPcFRkPNjj2r2NoyckVN781aWmNTAqJPf/Ckj9l9pUIt
+Vjhy8XNJW4iVDBkkykBXcGSkIau0ypJrRjsD1jKqUTIRZ/y2HlyltmwWi8OuyBLd
+LaHDbjc0b6JmqoivAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQD6h02K0A90wEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEG
+MIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQv
+b3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJl
+dm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1
+dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAbHQvTl94ommGFln3s6wmd/tr6r5R
+3FR3A7O/uiGEAqm/7B84KGkTmKHhChGMiCiMcBSGtMx1IaO+t7gimLtRL57wgeIf
+k6nsgcbBioh0nO12XDagdtj75Dr7buEFyQvFdfydi5cAwScLW+YYxtwDni9/debd
+ypFKeCRxdCX12n0oFQDPJf8YvE4CaDitBJCQrZdJBDpB6muF8mpNq8CIuyTPIBZX
+RPKJNfIraKq/Xi7tuLkvWVGVsSqJeTvP++05Tvv/44+XBpCp3sUrjsb0G0Mj90PG
+SnAapsrgzDzLO/LQ8vrB9H2oRM4iYfUxu/dKSOBVXa3WQzsLBL0/9zZ30g==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer
new file mode 100644
index 000000000..eb051dc4d
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-01-20140701-20240701.SerNo144ddd(SecureSignatureKeypair).cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEUzCCAzugAwIBAgIDFE3dMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYDVQQGEwJB
+VDGBizCBiAYDVQQKHoGAAEEALQBUAHIAdQBzAHQAIABHAGUAcwAuACAAZgD8AHIA
+IABTAGkAYwBoAGUAcgBoAGUAaQB0AHMAcwB5AHMAdABlAG0AZQAgAGkAbQAgAGUA
+bABlAGsAdAByAC4AIABEAGEAdABlAG4AdgBlAHIAawBlAGgAcgAgAEcAbQBiAEgx
+GDAWBgNVBAsTD0EtVHJ1c3QtUXVhbC0wMTEYMBYGA1UEAxMPQS1UcnVzdC1RdWFs
+LTAxMB4XDTE0MDcwMTExMjExNVoXDTI0MDcwMTA5MjExNVowgc8xCzAJBgNVBAYT
+AkFUMYGLMIGIBgNVBAoegYAAQQAtAFQAcgB1AHMAdAAgAEcAZQBzAC4AIABmAPwA
+cgAgAFMAaQBjAGgAZQByAGgAZQBpAHQAcwBzAHkAcwB0AGUAbQBlACAAaQBtACAA
+ZQBsAGUAawB0AHIALgAgAEQAYQB0AGUAbgB2AGUAcgBrAGUAaAByACAARwBtAGIA
+SDEYMBYGA1UECxMPQS1UcnVzdC1RdWFsLTAxMRgwFgYDVQQDEw9BLVRydXN0LVF1
+YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmhgdxIbxTGEOH
+fXGiewI3NFldAWKFWfLofO+5I1UbvA5avt7IgsGXz/tI/f5HGUbascI0i7xG0tqV
+lA5ctQgLRqxgxHtgTkMcqsAEYdsz3LZsCdXO1QrvEBGLTSABdxiL/gSWJ6z77CSw
+x7Xg02HwxPV82cjGkSF3ENGJntuIAAnRDWn/ORHjFatNRymoMbHaOEZXSGhf7Y5F
+rrHEqGyi9E6sv784De/T1aTvskn8cWeUmDzv//omiG/a/V9KQex/61XN8OthUQVn
+X+u/liL2NKx74I2C/GgHX5B0WkPNqsSOgmlvJ/cKuT0PveUgVFDAA0oYBgcE1KDM
+lBbN0kmPAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEs8jB2F
+6W+tMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAQIN9LZbMivO9
+kWLDlDI9cTEIPpRXmgNdaBQRUpZc2ML0vDW6OVI90r8GxFQTE/I7HjrvuqQDTEL1
+qd8tthiazsLYI5eDX1CtJEFFtg25Y9t3tK2HsShb8sCj798hoXsOMFR9qhp5Fjb8
+TX4CVuQ3sK1TKeNlDmpAx6SqkYYT0CCMccsxt2j89ED8Z+B/yW19OZQk3BFDigYL
+46YsLKAC96ItFpUOs8ZbAUfUlpVA6G+09EMcDxOcuD/ebLx6I/ynwYAtqYXaizsY
+KTE35A3M2ghfGFJ+DlQoh3Bn/RG01LKXXgaVTHHMvvpxBp55wz2SocD/PpFe+D6Q
+C016YgTrrQ==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer
new file mode 100644
index 000000000..be29fb6ac
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-02-20140701-20240701.SerNo144de4(SecureSignatureKeypair).cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDyzCCArOgAwIBAgIDFE3kMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1
+YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0xNDA3MDExMTIzMzNa
+Fw0yNDA3MDEwOTIzMzNaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz
+dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDIxGDAWBgNVBAMMD0Et
+VHJ1c3QtUXVhbC0wMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaR
+q9eOsFm4Ab20Hq2Z/aH86gyWa48uSUjY6eQkguHYuszr3gdcSMYZggFHQgnhfLmf
+ro/27l5rqKhWiDhWs+b+yZ1PNDhRPJy+86ycHMg9XJqErveULBSyZDdgjhSwOyrN
+ibUir/fkf+4sKzP5jjytTKJXD/uCxY4fAd9TjMEVpN3umpIS0ijpYhclYDHvzzGU
+833z5Dwhq5D8bc9jp8YSAHFJ1xzIoO1jmn3jjyjdYPnY5harJtHQL73nDQnfbtTs
+5ThT9GQLulrMgLU4WeyAWWWEMWpfVZFMJOUkmoOEer6A8e5fIAeqdxdsC+JVqpZ4
+CAKel/Arrlj1gFA//jsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQj0rJKbBRc4wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBh
+MfOINQm4XpzF6DmkOmb/ArSXHf5LObqFmIMooNr2TkyzrUTK/NE+mdrm15Rfdts7
+kZVq/ICfQSFeaPvWaAVq4plH/26OjvMTVv7DfgfPBUxDWqlCuDnDnPAVQ+yo/o5i
+BA5uUlMbp5znbDtlxwF/5gWqcn/hKxSUCP1uiOPIlKfeVvsRmBcJAdoixTM/Ic10
+pavJMGOI20onArvQZAUEbXQLA8cs8naxfF6Bo36U9nk6wn7q8VPXhViekByd17F6
+9A+ah0Iqw4SPf9BqNRIe1YxxjDhCmjWt3aoyE3ZFBuGjW+r2ipb/vGU1+2oyy2Fd
+2dMmiMQ7gGhWX9X6gWLd
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer
new file mode 100644
index 000000000..e1100c7fc
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Qual-03-20140701-20240701.SerNo144df5(SecureSignatureKeypair).cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDyzCCArOgAwIBAgIDFE31MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1
+YWwtMDMxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMzAeFw0xNDA3MDExMTMwNTZa
+Fw0yNDA3MDEwOTMwNTZaMIGLMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz
+dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1YWwtMDMxGDAWBgNVBAMMD0Et
+VHJ1c3QtUXVhbC0wMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALOe
+JIgc0s9AA0hqqqWgK72W9XwKn5+rUJDbQc5WgHkqwP2TU3qcW/NZYSSIY6PVGO6b
+hHSEnOyMPdrBhnpvNi4m6349yT6t565LdHcoKyQg/youwpVkEPZ+e8O32hF9nqvt
+L4wZohydjMwzcHUJB/5e+0CkJYwv/bVRZzqoK0yf1midYJukxWOw7nDNKD9KdOpZ
++XXFAAZuH7BjwSqqE138y9JlGzkxIlrCeSJdGfFLwr7OHIgBdPEmQXcyOcaMUGjP
+U4VDig+gj+6OC5KjAEC+wKJZXiyhRLj+HyLTDLrQ6O8p5HI3Sov4FuwiMgcqIyzz
+o9fNyqmnT3K/vBGOqBsCAwEAAaM2MDQwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIRgbfN/LCNxAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBy
+jA/CmId9oz8sy4rwEklti+8TLS/aLHkiMqUmKjuHyT/6mz4Qh4fLfAAEv8iGSZiW
++7+Gv7HTcuEEdyNNhUmMGJLSQA/3KBjlttHXLiG943wnvcZf3LtkFc+8Ia5N3bNS
+BM6q7/OFKHSS+iHcAJ8XS6SnLITYRyfo0thsXBaHpkTUkEP0uJY+yoE/EcBkvsGX
+drLIawu8YOrNZvs3S6Ag0ex5brIdqiNtlUGwRxpLwssfBho5K0NqpXAloHT9kHBd
+rGb2GrVdLIesuVivSP9zq09M8bcm3jDPCHv5bcudPZVX7rkr79VphgLfKlINA4Fw
+VxCuPLXx/4sCfANQtvuY
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
new file mode 100644
index 000000000..b9a0e5a61
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-Root-05.20130923-20230920.SerNoFCDB4.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer
new file mode 100644
index 000000000..e90f5f2a6
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-01-20140701-20240701.SerNo144dc3(CertifiedKeypair).cer
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDXTCCAkWgAwIBAgIDFE3DMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFU
+MRAwDgYDVQQKEwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkw
+FwYDVQQDExBBLVRydXN0LW5RdWFsLTAxMB4XDTE0MDcwMTExMDk1NFoXDTI0MDcw
+MTA5MDk1NFowVTELMAkGA1UEBhMCQVQxEDAOBgNVBAoTB0EtVHJ1c3QxGTAXBgNV
+BAsTEEEtVHJ1c3QtblF1YWwtMDExGTAXBgNVBAMTEEEtVHJ1c3QtblF1YWwtMDEw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD/9RyAEZ6eHmhYzNJ328f0
+jmdSUFi6EqRqOxb3jHNPTIpK82CR6z5lmSnZQNUuCPD+htbNZffd2DKVB06NOyZ1
+2zcOMCgj4GtkZoqE0zPpPT3bpoE55nkZZe/qWEX/64wz/L/4EdkvKDSKG/UsP75M
+tmCVY5m2Eg73RVFRz4ccBIMpHel4lzEqSkdDtZOY5fnkrE333hx67nxq21vY8Eyf
+8O4fPQ5RtN8eohQCcPQ1z6ypU1R7N9jPRpnI+yzMOiwd3+QcKhHi1miCzo0pkOaB
+1CwmfsTyNl8qU0NJUL9Ta6cea7WThwTiWol2yD88cd2cy388xpbNkfrCPmZNGLoV
+AgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECE5ZzscCMocwMA4G
+A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAO3hBdwsNQOtYOAlC2PKT
+sdNexKqMefFGrGDYIEAflaudwpcqUgv7fLLhMNRMT+BcXtqXtfNHGsll2GwseuMq
+C02bPUmbfNV4P9djIz/s6qqvNQaQneFzhuXn+i0YQ10sFFVeIL3qrBMl1lwBeQ64
+/GyvrbGiHuuagEUc25CDrUqni+b+azaPUsRG6IXkIWG0H6WIMqtxIdHzAV/1raKh
+PKot1VhG2rivf1cBBGXU/0VSYBitXrLNwXwlX2ad0WiFHUF8RS9F3j2vVSYMfxer
+NPNaRLtCkHNSqCIDkMmmHJKbJbKJzMaZYmX2i2nc16HCpE/gbQc3etQCl3GvzO88
+xw==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
new file mode 100644
index 000000000..2284687bb
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/A-Trust-nQual-03-20140723-20250723.SerNo14b4f9.cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDzzCCAregAwIBAgIDFLT5MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwMzgy
+OVoXDTI1MDcyMzA4MzgyOVowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM
+EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj
+lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ
+znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH
+2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1
+k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs
+2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD
+VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC
+AQEAEoykPeAA/6iKm6YnfxsSHFe+Dtian2yAH8L2TqMdcHeSB/7L1x73uuDeYku1
+hbKQAXnfXntf8R+VgjQBTww0aDb5164netYcFbK0g8uVWVCqOl8wf3JbAUxHS9br
+cFKks+CJKPr6qQ6H+sb1o9127c9IQSZYP3S/gMAaGw0cSTlsnosE0P5Ur5vHsapm
+FV3V+VOjYNs2GLSu4XQCYvSIpsfDJp8VsJ/BMYS9GqGvQ/9qGa0fwEbEMadb5mcJ
+tw/EKg4gJthMgxOfO5eVuCQ3PAEWOe5lrOrTdvTIlhphUuns5hoIdlyLuNqewK3s
+FJ6N46sU7LjJLqSKYEB8usoIiw==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/DigiCert High Assurance EV Root CA.crt b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/DigiCert High Assurance EV Root CA.crt
new file mode 100644
index 000000000..4b1bc66be
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/DigiCert High Assurance EV Root CA.crt
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
+ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
+MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
+LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
+RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
+PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
+xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
+Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
+hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
+EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
+FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
+nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
+eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
+hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
+Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
+vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
++OkuE6N36B9K
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt
new file mode 100644
index 000000000..ebdf72d7f
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/TERENA SSL High Assurance CA 3 (DigiCert High Assurance EV Root CA).crt
@@ -0,0 +1,29 @@
+-----BEGIN CERTIFICATE-----
+MIIE4DCCA8igAwIBAgIQC1w0NWdbJGfA1zI3+Q1flDANBgkqhkiG9w0BAQsFADBs
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
+ZSBFViBSb290IENBMB4XDTE0MTExODEyMDAwMFoXDTI0MTExODEyMDAwMFowczEL
+MAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxEjAQBgNVBAcTCUFt
+c3RlcmRhbTEPMA0GA1UEChMGVEVSRU5BMScwJQYDVQQDEx5URVJFTkEgU1NMIEhp
+Z2ggQXNzdXJhbmNlIENBIDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQChNsmK4gfxr6c9j2OMBRo3gOA7z5keoaPHiX4rUX+1fF1Brmvf7Uo83sRiXRYQ
+RJrD79hzJrulDtdihxgS5HgvIQHqGrp3NRRDUlq/4bItLTp9QCHzLhRQSrSYaFkI
+zztYezwb3ABzNiVciqQFk7WR9ebh9ZaCxaXfebcg7LodgQQ4XDvkW2Aknkb1J8NV
+nlbKen6PLlNSL4+MLV+uF1e87aTgOxbM9sxZ1/1LRqrOu28z9WA8qUZn2Av+hcP2
+TQIBoMPMQ8dT+6Yx/0Y+2J702OU//dS0pi8gMe7FtYVcZrlcSy/C40I7EFYHEjTm
+zH4EGvG6t9wZua2atFKvP/7HAgMBAAGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/
+AgEAMA4GA1UdDwEB/wQEAwIBhjB/BggrBgEFBQcBAQRzMHEwJAYIKwYBBQUHMAGG
+GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcwAoY9aHR0cDovL2Nh
+Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENB
+LmNydDBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8vY3JsNC5kaWdpY2VydC5jb20v
+RGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3JsMD0GA1UdIAQ2MDQwMgYE
+VR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
+MB0GA1UdDgQWBBTCuIXX4bkTvdFIvP1e3H2QQnqKqTAfBgNVHSMEGDAWgBSxPsNp
+A/i/RwHUmCYaCALvY2QrwzANBgkqhkiG9w0BAQsFAAOCAQEAsCq7NTey6NjZHqT4
+kjZBNU3sItnD+RYAMWx4ZyaELcy7XhndQzX88TYSCYxl/YWB6lCjxx0dL3wTZUbX
+r+WRDzz5xX+98kdYrwNCT7fmT4eenv6cCS1sC9hc4sIl5dkb1pguY3ViV5D8/yEB
+hadOpw3TwI8xkqe2j/H5fp4Oaf9cFdpf9C85mQgZJwsvtvmmDTQTPcGPRFTgdGtY
+2xbWxDah6HjKpX6iI4BTBQhhpX6TJl6/GEaYK07s2Kr8BFPhrgmep9vrepWv61x7
+dnnqz5SeAs6cbSm551qG7Dj8+6f/8e33oqLC5Ldnbt0Ou6PjtZ4O02dN9cnicemR
+1B0/YQ==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer
new file mode 100644
index 000000000..d17d07619
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Enc-05.20130923-20230920.SerNoFCDEE.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer
new file mode 100644
index 000000000..a6a9acdc3
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Sig-05.20130923-20230920.SerNoFCDB8.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer
new file mode 100644
index 000000000..1bb449441
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-Test-Sig-02.20141124-20241118.SerNo3969edc1.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer
new file mode 100644
index 000000000..6c0c042b4
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Premium-enc-02.20140701-20240701.SerNo144dfd.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
new file mode 100644
index 000000000..04627da98
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-SSL-03.20140723-20240723.SerNo14b4fd.cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEdzCCA1+gAwIBAgIDFLT9MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTE0MDcyMzEwNDIw
+NVoXDTI0MDcyMzA4NDIwNVowgYcxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxFjAUBgNVBAsMDWEtc2lnbi1TU0wtMDMxFjAUBgNVBAMMDWEt
+c2lnbi1TU0wtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMjPM6
+PqgdPBPV4Efudpytt2Y4GZJfjeRdZo5SCuULDvvL+23xxBWnR3scFvfE1ekHN/YK
+k+2/qhU2B2ntoSNJSyDchNM8YPc9Lx67zZyhQTZgbBzh3IZAVb/hwuRRRV68JCBj
+r3r6v7IbwjH5XcVISdB4szx0z93aAQyKW9QkV+tD5a1vWFETvdHsZeVmDzfqcdsG
+AznPJw+9HrImCsswCWYUgPcFRkPNjj2r2NoyckVN781aWmNTAqJPf/Ckj9l9pUIt
+Vjhy8XNJW4iVDBkkykBXcGSkIau0ypJrRjsD1jKqUTIRZ/y2HlyltmwWi8OuyBLd
+LaHDbjc0b6JmqoivAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQD6h02K0A90wEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEG
+MIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQv
+b3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJl
+dm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1
+dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAbHQvTl94ommGFln3s6wmd/tr6r5R
+3FR3A7O/uiGEAqm/7B84KGkTmKHhChGMiCiMcBSGtMx1IaO+t7gimLtRL57wgeIf
+k6nsgcbBioh0nO12XDagdtj75Dr7buEFyQvFdfydi5cAwScLW+YYxtwDni9/debd
+ypFKeCRxdCX12n0oFQDPJf8YvE4CaDitBJCQrZdJBDpB6muF8mpNq8CIuyTPIBZX
+RPKJNfIraKq/Xi7tuLkvWVGVsSqJeTvP++05Tvv/44+XBpCp3sUrjsb0G0Mj90PG
+SnAapsrgzDzLO/LQ8vrB9H2oRM4iYfUxu/dKSOBVXa3WQzsLBL0/9zZ30g==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer
new file mode 100644
index 000000000..60bc9a557
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-Test-Qual-01.20141117-20241111.SerNo16120f.cer
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2zCCAsOgAwIBAgIDFhIPMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRwwGgYDVQQLDBNhLXNpZ24tVEVT
+VC1RdWFsLTAxMRwwGgYDVQQDDBNhLXNpZ24tVEVTVC1RdWFsLTAxMB4XDTE0MTEx
+NzA3NDAzNloXDTI0MTExMTA2NDAzNlowgZMxCzAJBgNVBAYTAkFUMUgwRgYDVQQK
+DD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4g
+RGF0ZW52ZXJrZWhyIEdtYkgxHDAaBgNVBAsME2Etc2lnbi1URVNULVF1YWwtMDEx
+HDAaBgNVBAMME2Etc2lnbi1URVNULVF1YWwtMDEwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQD4TRgyXzhxJ2AkndX0RPY771f64dsJrReEeuShLRK5io0B
+kJWc4t7wuD1B98cJ0MUPlMmOJ2Ckc/vuLhQUyY3qEUmhMhixCUIcdHQ5yH3H0yMV
+HxyJxAG83fE8M25kpKA4TzzMW8KPd2S63wbpPElyEy7vrllrLxvdQRSDpMZMvRg8
+fvoDGAehxsnKKwlXZuMq1aSBzfMz3cMBDKxvqzDIz7yC1iWNkdiwog3a5a5PbViK
+shhZ0h+bx9WFDpiN6ooPQgcGhjD+NqIDoiOr7CUFHp+HiC6xIsEFJaBHTf3dRZ61
+0r1FDABx0Yj8+wlXSQLYq/1nR/QMwsvH0Cz1qYTPAgMBAAGjNjA0MA8GA1UdEwEB
+/wQFMAMBAf8wEQYDVR0OBAoECE8h1CulBqTdMA4GA1UdDwEB/wQEAwIBBjANBgkq
+hkiG9w0BAQUFAAOCAQEAimFu+xTm3UdyU+fO+2hz4DS20OGSC9NBDkorjzhRPWoZ
+IVhUi6yH5drqSBm4/2ZYS1Ba5npzfyJwm+cLO28ljxAApfRHlbN0y83hKv7c0I7g
+zWTMRs8X8ar5Gd7d4O5jpC4PAaZ1ozSDoE06U5im6YMLaJy/0QYvf5EQBMvLdeoc
+d1vl17JYKYqYzcX2dvayikrfiglFqDaZZ66yJPBSuiyNhXpPkbXsOoyyTPtV/0Bh
+eKIQiQyJID5aZtR7D4fBAzKdp5wB9KLQXBZ80hrwqrIuy+ME0tFaBWYBi8dzQ1iq
+/E3Qz0USfGmxPMm8y/zRqsDvxZCRiSuvzBkOXbGMdA==
+-----END CERTIFICATE-----
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer
new file mode 100644
index 000000000..e4bd48dac
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-corporate-light-02.20140905-20240905.SerNo153B49.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer
new file mode 100644
index 000000000..74c4ce3b8
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-02.20140701-20240701.SerNo144e10.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer
new file mode 100644
index 000000000..6c50ec079
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/a-sign-premium-sig-03.20140701-20240701.SerNo144e13.cer
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt
new file mode 100644
index 000000000..ebfbce9a0
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/certs/certstore/toBeAdded/atrust_OCSP_Responder_03-1.crt
Binary files differ
diff --git a/id/server/data/deploy/conf/moa-id/htmlTemplates/loginFormFull.html b/id/server/data/deploy/conf/moa-id/htmlTemplates/loginFormFull.html
index 5b534fca3..123a23837 100644
--- a/id/server/data/deploy/conf/moa-id/htmlTemplates/loginFormFull.html
+++ b/id/server/data/deploy/conf/moa-id/htmlTemplates/loginFormFull.html
@@ -15,13 +15,17 @@
text-align: center;
background-color: #6B7B8B;
}
+
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU p {
font-size: 0.7em;
}
#localBKU input{
- font-size: 0.7em;
+ font-size: 0.85em;
/*border-radius: 5px;*/
}
@@ -142,6 +146,8 @@
margin-bottom: 10px;
}
+
+
#validation {
position: absolute;
bottom: 0px;
@@ -154,7 +160,10 @@
@media screen and (max-width: 205px) {
#localBKU p {
font-size: 0.6em;
- }
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.6em;
@@ -191,6 +200,9 @@
#localBKU p {
font-size: 0.7em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.7em;
@@ -227,6 +239,9 @@
#localBKU p {
font-size: 0.9em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
@@ -257,7 +272,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -288,7 +305,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -327,7 +346,9 @@
font-size: 100%;
background-color: #MAIN_BACKGOUNDCOLOR#;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#page {
visibility: hidden;
margin-top: 0%;
@@ -464,12 +485,11 @@
}
#localBKU {
- padding-left: 5%;
- padding-right: 2%;
padding-bottom: 4%;
/*padding-top: 4%;*/
position: relative;
- clear: both;
+ clear: both;
+ text-align: center;
}
#bkukarte {
@@ -526,13 +546,13 @@
#localBKU input {
/* color: #BUTTON_COLOR#; */
- border: 0px;
+ /*border: 0px;*/
display: inline-block;
}
#localBKU input:hover, #localBKU input:focus, #localBKU input:active {
- text-decoration: underline;
+ /*text-decoration: underline;*/
}
#installJava, #BrowserNOK {
@@ -720,13 +740,63 @@
}
}
function onChangeChecks() {
- if (self.innerWidth < 650) {
+ if (top.innerWidth < 650) {
document.getElementById("moaidform").setAttribute("target","_parent");
} else {
document.getElementById("moaidform").removeAttribute("target");
}
}
+
+ function checkIfBrowserSupportsJava(){
+ console.log("Browser is Chrome: "+checkIfBrowserIsChrome());
+ console.log("Browser is Safari: "+checkIfBrowserIsSafari());
+ console.log("Browser is Edge: "+checkIfBrowserIsEdge());
+
+ var cnt = 0;
+
+ if(checkIfBrowserIsChrome())cnt++;
+ if(checkIfBrowserIsEdge())cnt++;
+ if(checkIfBrowserIsSafari())cnt++;
+
+ if(cnt==0 || cnt>1)//cnt>1 means perhaps wrong detection
+ return true;
+
+ var image = document.getElementById("bkuimage");
+ var srcatt = image.getAttribute("src");
+ var last = srcatt.substring(srcatt.lastIndexOf('/')+1);
+ srcatt = srcatt.replace(last,'online-bku-deactivated.png');
+ image.setAttribute("src",srcatt);
+
+
+ var button = document.getElementsByName("bkuButtonOnline")[0];
+ button.setAttribute("class","browserInfoButton");
+ button.setAttribute("title","Java wird nicht unterstützt, klicken für mehr Informationen.");
+ button.setAttribute("onClick","alert('Java wird von Ihrem Browser nicht unterstützt, ist jedoch für den Betrieb der Online Bürgerkartenumgebung notwendig.\\nWollen Sie dennoch die Online Bürgerkartenumgebung verwenden, wird zur Zeit Java noch von Firefox und MS Internet Explorer unterstützt. \\nAlternativ koennen Sie auch eine lokale Bürgerkartenumgebung verwenden, verfügbar unter www.buergerkarte.at.');");
+
+ return false;
+
+ }
+ function checkIfBrowserIsChrome(){
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = false;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && webstore_defined;
+ }
+ function checkIfBrowserIsEdge(){//edge also defines the chrome object, but not the webapp
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = true;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && !webstore_defined;
+ }
+ function checkIfBrowserIsSafari(){
+ var cond1 = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
+ return cond1;
+ }
/* function setSSOSelection() {
document.getElementById("useSSO").value = "false";
var checkbox = document.getElementById("SSOCheckBox");
@@ -754,7 +824,7 @@
</script>
<title>Anmeldung mittels Bürgerkarte oder Handy-Signatur</title>
</head>
-<body onload="onChangeChecks();" onresize="onChangeChecks();">
+<body onload="onChangeChecks();checkIfBrowserSupportsJava();" onresize="onChangeChecks();">
<div id="page">
<div id="page1" class="case selected-case" role="main">
<h2 class="OA_header" role="heading">Anmeldung an: #OAName#</h2>
@@ -779,7 +849,7 @@
</div>
<div id="bkuselectionarea">
<div id="bkukarte">
- <img class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
+ <img id="bkuimage" class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
alt="OnlineBKU" /> <input name="bkuButtonOnline" type="button"
onClick="bkuOnlineClicked();" tabindex="2" role="button"
value="Karte" />
@@ -794,16 +864,15 @@
<div id="localBKU">
<form method="get" id="moaidform" action="#AUTH_URL#"
class="verticalcenter" target="_parent">
- <input type="hidden" name="bkuURI" value="#LOCAL#">
- <input type="hidden" name="useMandate" id="useMandate">
- <input type="hidden" name="SSO" id="useSSO">
- <input type="hidden" name="CCC" id="ccc">
- <input type="hidden" name="MODUL" value="#MODUL#">
- <input type="hidden" name="ACTION" value="#ACTION#">
- <input type="hidden" name="MOASessionID" value="#SESSIONID#">
- <input type="submit" value=">lokale Bürgerkartenumgebung" tabindex="4"
- role="button" class="hell"
- onclick="setMandateSelection();"
+ <input type="hidden" name="bkuURI" value="#LOCAL#"> <input
+ type="hidden" name="useMandate" id="useMandate"> <input
+ type="hidden" name="SSO" id="useSSO"> <input
+ type="hidden" name="CCC" id="ccc"> <input type="hidden"
+ name="MODUL" value="#MODUL#"> <input type="hidden"
+ name="ACTION" value="#ACTION#"> <input type="hidden"
+ name="MOASessionID" value="#SESSIONID#">
+ <input type="submit" value=" Lokale Bürgerkartenumgebung " tabindex="4"
+ role="button" onclick="setMandateSelection();"
>
<!--p>
<small>Alternativ können Sie eine lokal installierte BKU verwenden.</small>
@@ -837,7 +906,7 @@
src="#CONTEXTPATH#/img/valid-html5-blue.png" alt="HTML5 ist valide!" />
</a> <a href="http://jigsaw.w3.org/css-validator/"> <img
style="border: 0; width: 88px; height: 31px"
- src="https://jigsaw.w3.org/css-validator/images/vcss-blue"
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
alt="CSS ist valide!" />
</a>
</div>
diff --git a/id/server/data/deploy/conf/moa-id/log4j.properties b/id/server/data/deploy/conf/moa-id/log4j.properties
index c7dece5c5..d83e8e550 100644
--- a/id/server/data/deploy/conf/moa-id/log4j.properties
+++ b/id/server/data/deploy/conf/moa-id/log4j.properties
@@ -11,11 +11,16 @@ log4j.logger.at.gv.egovernment.moa.id.proxy=info
log4j.logger.eu.stork=info
log4j.logger.org.hibernate=warn
+log4j.logger.at.gv.egiz.components.configuration=info,CONFIGTOOL
+log4j.logger.at.gv.egovernment.moa.id.commons=info,CONFIGTOOL R
+log4j.logger.at.gv.egovernment.moa.id.config.webgui=info,CONFIGTOOL
+log4j.logger.at.gv.egovernment.moa.id.configuration=info,CONFIGTOOL
+
# configure the stdout appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-#log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n
-log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20.20c | %10t | %m%n
+#log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %20c | %10t | %m%n
+log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} |%20.20c | %10t | %m%n
# configure the rolling file appender (R)
log4j.appender.R=org.apache.log4j.RollingFileAppender
@@ -23,5 +28,12 @@ log4j.appender.R.File=${catalina.base}/logs/moa-id.log
log4j.appender.R.MaxFileSize=10000KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n
+log4j.appender.R.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n
+# configure the rolling file appender (R)
+log4j.appender.CONFIGTOOL=org.apache.log4j.RollingFileAppender
+log4j.appender.CONFIGTOOL.File=${catalina.base}/logs/moa-id-webgui.log
+log4j.appender.CONFIGTOOL.MaxFileSize=10000KB
+log4j.appender.CONFIGTOOL.MaxBackupIndex=1
+log4j.appender.CONFIGTOOL.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONFIGTOOL.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n \ No newline at end of file
diff --git a/id/server/data/deploy/conf/moa-id/logback_config.xml b/id/server/data/deploy/conf/moa-id/logback_config.xml
new file mode 100644
index 000000000..c00e62e52
--- /dev/null
+++ b/id/server/data/deploy/conf/moa-id/logback_config.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- For assistance related to logback-translator or configuration -->
+<!-- files in general, please contact the logback user mailing list -->
+<!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
+<!-- -->
+<!-- For professional support please see -->
+<!-- http://www.qos.ch/shop/products/professionalSupport -->
+<!-- -->
+<configuration>
+ <!-- Errors were reported during translation. -->
+ <!-- No class found for appender CONFIGTOOL R -->
+ <!-- Could not find transformer for null -->
+ <appender name="R" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
+ <File>${catalina.base}/logs/moa-id.log</File>
+ <encoder>
+ <pattern>%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n</pattern>
+ </encoder>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <maxIndex>1</maxIndex>
+ <FileNamePattern>${catalina.base}/logs/moa-id.log.%i</FileNamePattern>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>10000KB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+ <appender name="CONFIGTOOL R">
+ <!--No layout specified for appender named [CONFIGTOOL R] of class [null]-->
+ </appender>
+ <appender name="CONFIGTOOL" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
+ <File>${catalina.base}/logs/moa-id-webgui.log</File>
+ <encoder>
+ <pattern>%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} | %t | %m%n</pattern>
+ </encoder>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <maxIndex>1</maxIndex>
+ <FileNamePattern>${catalina.base}/logs/moa-id-webgui.log.%i</FileNamePattern>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>10000KB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+ <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%5p | %d{dd HH:mm:ss,SSS} | %X{transactionId} |%20.20c | %10t | %m%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="eu.stork" level="info"/>
+ <logger name="iaik.server" level="info"/>
+ <logger name="at.gv.egovernment.moa.id" level="info">
+ <appender-ref ref="R"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.id.commons" level="info">
+ <appender-ref ref="CONFIGTOOL R"/>
+ </logger>
+ <logger name="org.hibernate" level="warn"/>
+ <logger name="at.gv.egiz.components.configuration" level="info">
+ <appender-ref ref="CONFIGTOOL"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.id.proxy" level="info"/>
+ <logger name="at.gv.egovernment.moa.id.config.webgui" level="info">
+ <appender-ref ref="CONFIGTOOL"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.spss" level="info"/>
+ <logger name="at.gv.egovernment.moa" level="info"/>
+ <root level="info">
+ <appender-ref ref="stdout"/>
+ </root>
+</configuration>
diff --git a/id/server/data/deploy/conf/moa-id/moa-id.properties b/id/server/data/deploy/conf/moa-id/moa-id.properties
index c330758c8..66f9afac6 100644
--- a/id/server/data/deploy/conf/moa-id/moa-id.properties
+++ b/id/server/data/deploy/conf/moa-id/moa-id.properties
@@ -5,10 +5,7 @@
******
-##General MOA-ID 2.0 Configuration
-
-#MOA-ID 2.0 XML configuration files (necessary, if inmemory database is used)
-#configuration.xml=$PATH_TO_CONFIG$/conf/moa-id/MOAIDConfiguration-2.0.xml
+##General MOA-ID 3.0 Configuration
##For Testing
configuration.validation.certificate.QC.ignore=false
@@ -92,24 +89,24 @@ moasession.hibernate.c3p0.min_size=3
#Hibnerate configuration for MOA-ID 2.0 configuration
configuration.hibernate.dialect=org.hibernate.dialect.MySQLDialect
+configuration.jpaVendorAdapter.generateDdl=true
+configuration.hibernate.show_sql=false
+
configuration.hibernate.connection.url=jdbc:mysql://localhost/moa-id-config?charSet=utf-8&autoReconnect=true
configuration.hibernate.connection.charSet=utf-8
configuration.hibernate.connection.driver_class=com.mysql.jdbc.Driver
configuration.hibernate.connection.username=
configuration.hibernate.connection.password=
-
-configuration.hibernate.hbm2ddl.auto=update
-configuration.hibernate.current_session_context_class=thread
-configuration.hibernate.transaction.auto_close_session=true
-configuration.hibernate.show_sql=false
-configuration.hibernate.format_sql=true
-configuration.hibernate.connection.provider_class=org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
-configuration.hibernate.c3p0.acquire_increment=3
-configuration.hibernate.c3p0.idle_test_period=60
-configuration.hibernate.c3p0.timeout=300
-configuration.hibernate.c3p0.max_size=20
-configuration.hibernate.c3p0.max_statements=0
-configuration.hibernate.c3p0.min_size=3
+configuration.dbcp.connectionProperties=
+
+configuration.dbcp.initialSize=0
+configuration.dbcp.maxActive=8
+configuration.dbcp.maxIdle=8
+configuration.dbcp.minIdle=0
+configuration.dbcp.maxWaitMillis=-1
+configuration.dbcp.testOnBorrow=true
+configuration.dbcp.testOnReturn=false
+configuration.dbcp.testWhileIdle=false
#
#Hibnerate configuration for MOA-ID 2.0 advanced statistic logging
diff --git a/id/server/data/deploy/conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_2.1.xml b/id/server/data/deploy/conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml
index 6afe1f36b..6afe1f36b 100644
--- a/id/server/data/deploy/conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_2.1.xml
+++ b/id/server/data/deploy/conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml
diff --git a/id/server/data/deploy/conf/moa-spss/SampleMOASPSSConfiguration.xml b/id/server/data/deploy/conf/moa-spss/SampleMOASPSSConfiguration.xml
index 19fd9d264..9d130971d 100644
--- a/id/server/data/deploy/conf/moa-spss/SampleMOASPSSConfiguration.xml
+++ b/id/server/data/deploy/conf/moa-spss/SampleMOASPSSConfiguration.xml
@@ -84,8 +84,8 @@
<cfg:Location>profiles/MOAIDTransformAuthBlockTable_DE_2.0.xml</cfg:Location>
</cfg:VerifyTransformsInfoProfile>
<cfg:VerifyTransformsInfoProfile>
- <cfg:Id>MOAIDTransformAuthBlockTable_DE_2.1</cfg:Id>
- <cfg:Location>profiles/MOAIDTransformAuthBlockTable_DE_2.1.xml</cfg:Location>
+ <cfg:Id>MOAIDTransformAuthBlockTable_DE_3.0</cfg:Id>
+ <cfg:Location>profiles/MOAIDTransformAuthBlockTable_DE_3.0.xml</cfg:Location>
</cfg:VerifyTransformsInfoProfile>
<cfg:VerifyTransformsInfoProfile>
<cfg:Id>MOAIDTransformAuthBlockTable_DE</cfg:Id>
diff --git a/id/server/data/deploy/conf/moa-spss/profiles/MOAIDTransformAuthBlockTable_DE_2.1.xml b/id/server/data/deploy/conf/moa-spss/profiles/MOAIDTransformAuthBlockTable_DE_3.0.xml
index df3ce8ce6..df3ce8ce6 100644
--- a/id/server/data/deploy/conf/moa-spss/profiles/MOAIDTransformAuthBlockTable_DE_2.1.xml
+++ b/id/server/data/deploy/conf/moa-spss/profiles/MOAIDTransformAuthBlockTable_DE_3.0.xml
diff --git a/id/server/data/deploy/tomcat/unix/tomcat-start.sh b/id/server/data/deploy/tomcat/unix/tomcat-start.sh
index 59cf2d0a9..e0aaae973 100644
--- a/id/server/data/deploy/tomcat/unix/tomcat-start.sh
+++ b/id/server/data/deploy/tomcat/unix/tomcat-start.sh
@@ -1,14 +1,17 @@
#! /bin/bash
export JAVA_HOME= <insert java home directory (no trailing path separator)>
-export CATALINA_HOME= <insert Tomcat 4.1.x home directory (no trailing path separator)>
+export CATALINA_HOME= <insert Tomcat home directory (no trailing path separator)>
export CATALINA_BASE=$CATALINA_HOME
LOGGING_OPT=-Dlog4j.configuration=file:$CATALINA_BASE/conf/moa-id/log4j.properties
+LOGGING_LOGBACK_OPT=-Dlogback.configurationFile=$CATALINA_BASE/conf/moa-id/logback_config.xml
CONFIG_OPT=-Dmoa.id.configuration=$CATALINA_BASE/conf/moa-id/moa-id.properties
-SPSS_OPT=-Dmoa.spss.server.configuration=$CATALINA_BASE/conf/moa-spss/SampleMOASPSSConfiguration.xml
-CONFIGTOOL_OPT=-Dmoa.id.webconfig=$CATALINA_BASE/conf/moa-id-configuration/moa-id-configtool.properties
+SPSS_OPT=-Dmoa.spss.server.configuration=file:$CATALINA_BASE/conf/moa-spss/SampleMOASPSSConfiguration.xml
+CONFIGTOOL_OPT=-Dmoa.id.webconfig=file:$CATALINA_BASE/conf/moa-id-configuration/moa-id-configtool.properties
+CONFIGTOOL_USER_OPT=-Duser.properties=":$CATALINA_BASE/conf/moa-id-configuration/userdatabase.properties"
+
DEMOOA_OPT=-Dmoa.id.demoOA=$CATALINA_BASE/conf/moa-id-oa/oa.properties
STORK_OPT=-Deu.stork.samlengine.config.location=$CATALINA_BASE/conf/moa-id/stork/
@@ -18,7 +21,7 @@ PROXY_OPT=-Dmoa.id.proxy.configuration=$CATALINA_BASE/conf/moa-id-proxy/MOAIDCon
#TRUST_STORE_PASS_OPT=-Djavax.net.ssl.trustStorePassword=changeit
#TRUST_STORE_TYPE_OPT=-Djavax.net.ssl.trustStoreType=jks
-export CATALINA_OPTS="$CONFIG_OPT $LOGGING_OPT $SPSS_OPT $TRUST_STORE_OPT $TRUST_STORE_PASS_OPT $TRUST_STORE_TYPE_OPT $CONFIGTOOL_OPT $DEMOOA_OPT $STORK_OPT $PROXY_OPT -Xms512m -Xmx1536m -XX:PermSize=256m"
+export CATALINA_OPTS="$CONFIG_OPT $LOGGING_OPT $LOGGING_LOGBACK_OPT $SPSS_OPT $TRUST_STORE_OPT $TRUST_STORE_PASS_OPT $TRUST_STORE_TYPE_OPT $CONFIGTOOL_OPT $CONFIGTOOL_USER_OPT $DEMOOA_OPT $STORK_OPT $PROXY_OPT -Xms512m -Xmx1536m -XX:PermSize=256m"
echo CATALINA_HOME: $CATALINA_HOME
echo CATALINA_BASE: $CATALINA_BASE
diff --git a/id/server/data/deploy/tomcat/win32/startTomcat.bat b/id/server/data/deploy/tomcat/win32/startTomcat.bat
index 8d6d670bc..b45a72ace 100644
--- a/id/server/data/deploy/tomcat/win32/startTomcat.bat
+++ b/id/server/data/deploy/tomcat/win32/startTomcat.bat
@@ -10,15 +10,17 @@ set CATALINA_HOME=<Tomcat home directory>
rem ----------------------------------------------------------------------------------------------
set LOGGING_OPT=-Dlog4j.configuration=file:%CATALINA_HOME%/conf/moa-id/log4j.properties
+set LOGGING_LOGBACK_OPT=-Dlogback.configurationFile=%CATALINA_HOME%/conf/moa-id/logback_config.xml
set CONFIG_OPT_SPSS=-Dmoa.spss.server.configuration=%CATALINA_HOME%/conf/moa-spss/SampleMOASPSSConfiguration.xml
-set CONFIG_OPT_ID=-Dmoa.id.configuration=%CATALINA_HOME%/conf/moa-id/moa-id.properties
-set CONFIGTOOL_OPT=-Dmoa.id.webconfig=%CATALINA_HOME%/conf/moa-id-configuration/moa-id-configtool.properties
+set CONFIG_OPT_ID=-Dmoa.id.configuration=file:%CATALINA_HOME%/conf/moa-id/moa-id.properties
+set CONFIGTOOL_OPT=-Dmoa.id.webconfig=file:%CATALINA_HOME%/conf/moa-id-configuration/moa-id-configtool.properties
+set CONFIGTOOL_USER_OPT=-Duser.properties=":$CATALINA_BASE/conf/moa-id-configuration/userdatabase.properties"
set DEMOOA_OPT=-Dmoa.id.demoOA=%CATALINA_HOME%/conf/moa-id-oa/oa.properties
set STORK_OPT=-Deu.stork.samlengine.config.location=%CATALINA_HOME%/conf/moa-id/stork/
set PROXY_OPT=-Dmoa.id.proxy.configuration=%CATALINA_HOME%/conf/moa-id-proxy/MOAIDConfiguration.xml
-set PARAMS_MOA=%CONFIG_OPT_SPSS% %CONFIG_OPT_ID% %LOGGING_OPT% %CONFIGTOOL_OPT% %DEMOOA_OPT% %STORK_OPT% %PROXY_OPT% -Xms512m -Xmx1536m -XX:PermSize=256m
+set PARAMS_MOA=%CONFIG_OPT_SPSS% %CONFIG_OPT_ID% %LOGGING_OPT% %LOGGING_LOGBACK_OPT% %CONFIGTOOL_OPT% %CONFIGTOOL_USER_OPT% %DEMOOA_OPT% %STORK_OPT% %PROXY_OPT% -Xms512m -Xmx1536m -XX:PermSize=256m
rem set PARAM_TRUST_STORE=-Djavax.net.ssl.trustStore=truststore.jks
rem set PARAM_TRUST_STORE_PASS=-Djavax.net.ssl.trustStorePassword=changeit
diff --git a/id/server/doc/handbook/additional/additional.html b/id/server/doc/handbook/additional/additional.html
index d26447748..fb9735990 100644
--- a/id/server/doc/handbook/additional/additional.html
+++ b/id/server/doc/handbook/additional/additional.html
@@ -32,6 +32,7 @@
</ol>
</li>
<li><a href="#networkconnections">Ben&ouml;tigte Netzwerkverbindungen (incoming / outgoing)</a></li>
+ <li><a href="#revisionslog">Revisions-Logging</a></li>
</ol>
<h2><a name="allgemeines"></a>1 Datenmanagement</h2>
<p>Dieser Abschnitt spezifiziert jene Datens&auml;tze die w&auml;hrend eines Anmeldevorgangs durch das Modul MOA-ID-Auth tempor&auml;r oder permanent gespeichert werden. Hierbei handelt es sich sowohl um tempor&auml;re Sessiondaten als auch um dauerhaft gespeicherte Statistikdaten.</p>
@@ -248,7 +249,289 @@
<td>Stammzahlenregister Gateway via SOAP Service</td>
</tr>
</table>
-
- </div>
+ <p>&nbsp;</p>
+ <h2><a name="revisionslog" id="networkconnections2"></a>3 Revisions Logging</h2>
+ <p>Ab der Version 3.x von MOA-ID-Auth steht zus&auml;tzlich zum normalen Logging und zur Generierung von Statisikdaten ein spezielles Reversions Logging zur Verf&uuml;gung. Dieses Revisions Logging erstellt ein spezielles Log welches Informationen zum Identifikations- und Authentifikationsprozess mit Zeitstempel und Eventcode beinhaltet. Die Events, welche durch dieses Log aufgezeichnet werden lassen sich je MOA-ID-Auth Instanz und je Online-Applikation konfigurieren. Das Revisions Logging kann &uuml;ber die folgende Zeilen in der log4j Konfiguration der MOA-ID Instanz konfiguriert werden:</p>
+ <p><em>log4j.logger.at.gv.egiz.eventlog.plain.all=info,reversion</em></p>
+ <p><em>log4j.appender.reversion=org.apache.log4j.RollingFileAppender<br>
+ log4j.appender.reversion.File=$logDirectory/moa-id-reversion.log<br>
+ log4j.appender.reversion.MaxFileSize=10000KB<br>
+ log4j.appender.reversion.MaxBackupIndex=9999<br>
+ log4j.appender.reversion.layout=org.apache.log4j.PatternLayout<br>
+ log4j.appender.reversion.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %t | %m%n</em></p>
+ <p>&nbsp;</p>
+ <p>Die nachstehenden Tabellen beschreibt alle Events welche aktuell in MOA-ID zur Verf&uuml;gung stehen, wobei die erste Tabelle alle Basisevents beinhaltet die von MOA-ID auf jeden Fall geloggt werden. Die in der zweiten Tabelle angegebenen Events sind immer einer Session und einer Transaktion aus Tabelle 1 zugeordnet und k&ouml;nnen durch die MOA-ID Konfiguration ausgew&auml;hlt werden.</p>
+ <table border="1" cellpadding="0" cellspacing="0" class="configtable">
+ <tr>
+ <td width="125" valign="top"><p align="left"><strong>EventCode</strong></p></td>
+ <td width="201" valign="top"><p align="left"><strong>Wert</strong></p></td>
+ <td width="964" valign="top"><p align="left"><strong>Beschreibung</strong></p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1000</p></td>
+ <td width="201"><p align="left">SessionID</p></td>
+ <td width="964" valign="top"><p>Eine neue Session wurde mit der angegebenen ID gestartet</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1001</p></td>
+ <td width="201"><p align="left">SessionID</p></td>
+ <td width="964" valign="top"><p>Die Session mit der angegebenen ID wurde beendet</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1002</p></td>
+ <td width="201"><p align="left">IP Adresse</p></td>
+ <td width="964" valign="top"><p>IP Addresse des Hosts der die Session ge&ouml;ffnet hat</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1003</p></td>
+ <td width="201"><p align="left">SessionID</p></td>
+ <td width="964" valign="top"><p>Die Session mit der angebenden ID wurde wegen eines Fehler beendet</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1100</p></td>
+ <td width="201"><p align="left">TransaktionsID</p></td>
+ <td width="964" valign="top"><p>Eine neue Transaction wurde mit der angegebenen ID gestartet. &nbsp;Eine Transaktion ist immer eine Session zugeordnet</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1101</p></td>
+ <td width="201"><p align="left">TransaktionsID</p></td>
+ <td width="964" valign="top"><p>Die Transkation mit der angegebenen ID wurde beendet</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1102</p></td>
+ <td width="201"><p align="left">IP Adresse</p></td>
+ <td width="964" valign="top"><p>IP Addresse des Hosts der die Transaction ge&ouml;ffnet hat</p></td>
+ </tr>
+ <tr>
+ <td width="125"><p align="center">1103</p></td>
+ <td width="201" valign="top"><p>TransaktionsID</p></td>
+ <td width="964" valign="top"><p>Die Transkation mit der angebenden ID wurde wegen eines Fehler beendet</p></td>
+ </tr>
+ </table>
+ <p>&nbsp;</p>
+ <table border="1" cellpadding="0" cellspacing="0" class="configtable">
+ <tr>
+ <td width="131" valign="top"><p align="left"><strong>EventCode</strong></p></td>
+ <td width="208" valign="top"><p align="left"><strong>Wert</strong></p></td>
+ <td width="946" valign="top"><p align="left"><strong>Beschreibung</strong></p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3000</p></td>
+ <td width="208" valign="top"><p align="left">Protokolltype</p></td>
+ <td width="946" valign="top"><p>Type des verwendeten Authentifizierungsprotokolls (OpenID Connect, PVP2, STORK, SAML1)</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3100</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>PVP 2.x Metadaten Request</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3101</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>PVP 2.x Authentifizierungsrequest</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3102</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>PVP 2.x Authentifizierungsresponse</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3103</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>PVP 2.x Single LogOut Request</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3104</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>PVP 2.x Attribute Query (im Fall IDP Interfederation mit zwischen MOA-IDs)</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3200</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>OpenID Connect Auth Requsst</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3201</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>OpenID Connect Tokken Request</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">3300</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>SAML1 StartAuthentication Request</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4000</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Identifizierungs- und Authentifizierungsprozess wurde gestartet</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4001</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Identifizierungs- und Authentifizierungsprozess wurde beendet</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4002</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Anmeldeprozess mit Online Vollmachten</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4003</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Anmeldeprozess mit STORK</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4004</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Anmeldeprozess mit Single Sign-On</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4005</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Ung&uuml;ltige Single Sign-On Session</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4006</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Benutzeranfrage f&uuml;r Single Sign-On Verwendung gestellt</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4007</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Benutzerantwort f&uuml;r Single Sign-On Verwendung empfangen</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4008</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Anmeldeprozess &uuml;ber IDP F&ouml;deration</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4009</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>G&uuml;ltige Response von f&ouml;deriertem IDP erhalten</p></td>
+ </tr>
+ <tr>
+ <td height="30" valign="top">4010</td>
+ <td valign="top">EntityID des IDP</td>
+ <td valign="top">Verwendeter IDP f&uuml;r f&ouml;derierte Anmeldung</td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4011</p></td>
+ <td width="208" valign="top"><p align="left">Service Identifikator</p></td>
+ <td width="946" valign="top"><p>Eindeutiger Identifikator der/des Online-Applikation/Service an der/dem die Anmeldung erfolgt</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4110</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>BKU Auswahl gestartet</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4111</p></td>
+ <td width="208" valign="top"><p align="left">Bkutype (z.b. online, handy, local)</p></td>
+ <td width="946" valign="top"><p>Ausgew&auml;hlter BKU Type</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4112</p></td>
+ <td width="208" valign="top"><p align="left">URL</p></td>
+ <td width="946" valign="top"><p>Verwendete BKU URL</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4113</p></td>
+ <td width="208" valign="top"><p align="left">IP Adresse</p></td>
+ <td width="946" valign="top"><p>IP Adresse mit der die BKU Daten an MOA-ID liefert</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4220</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Personenbindung ausgelesen und g&uuml;ltig validiert</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4221</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Signaturzertifikat ausgelesen und validiert</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4222</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>AuthBlock signiert und g&uuml;ltig validiert</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4223</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Wechsel in den Modus f&uuml;r ausl&auml;ndische Signaturkarten</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4224</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>SZR-Gateway wird kontaktiert</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4225</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Personenbindung von SZR-Gateway erhalten</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4300</p></td>
+ <td width="208" valign="top"><p align="left">ReferenceID des Vollmachtensystems</p></td>
+ <td width="946" valign="top"><p>Online-Vollmachten Service wird kontaktiert</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4301</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Redirekt zum Online-Vollmachten Service</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">4302</p></td>
+ <td width="208" valign="top"><p align="left">&nbsp;</p></td>
+ <td width="946" valign="top"><p>Vollmacht vom Online-Vollmachten Service erhalten</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5000</p></td>
+ <td width="208" valign="top"><p align="left">bPK</p></td>
+ <td width="946" valign="top"><p>bPK bei Vollmacht mit berufsm&auml;&szlig;igem Parteienvertreter oder Organwalter</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5001</p></td>
+ <td width="208" valign="top"><p align="left">OID</p></td>
+ <td width="946" valign="top"><p>OID bei Vollmacht mit berufsm&auml;&szlig;igem Parteienvertreter oder Organwalter</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5002</p></td>
+ <td width="208" valign="top"><p align="left">JSON String</p></td>
+ <td width="946" valign="top"><p>Pseudoanonymisierte Personendaten der sich anmeldeten nat&uuml;rlichen Person.</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5100</p></td>
+ <td width="208" valign="top"><p align="left">Vollmachtstype</p></td>
+ <td width="946" valign="top"><p>Type der ausgew&auml;hlten Vollmacht</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5101</p></td>
+ <td width="208" valign="top"><p align="left">jur / nat</p></td>
+ <td width="946" valign="top"><p>Vollmacht - Type der vertretenen Person (Juristische / nat&uuml;rliche Person)</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5102</p></td>
+ <td width="208" valign="top"><p align="left">JSON String</p></td>
+ <td width="946" valign="top"><p>Pseudoanonymisierte Personendaten der vertretenen nat&uuml;rlichen Person.</p></td>
+ </tr>
+ <tr>
+ <td width="131" valign="top"><p align="center">5103</p></td>
+ <td width="208" valign="top"><p align="left">baseID</p></td>
+ <td width="946" valign="top"><p>Stammzahl der vertretenen juristischen Person </p></td>
+ </tr>
+ </table>
+<p>&nbsp;</p>
+<p>Einzelne Events werden um einen Transaktionsparameter erg&auml;nzt, welcher in der Spalte Wert beschrieben ist. <br>
+ </p>
+<p>Die pseudoanonymisierten Personendaten f&uuml;r nat&uuml;rliche Personen werden anhand des nachfolgenden Schemas generiert. Als pseudoanonymisiertes Personendatum dient der SHA256 Hash &uuml;ber die in eine JSON Struktur eingetragenen Personendaten. Hierf&uuml;r wird das folgende JSON Schema verwendet, welches als Input f&uuml;r die SHA256 Berechnung dient.</p>
+<p><br>
+ {&quot;person&quot;:{&quot;givenname&quot;:&quot;<em>Vorname der Person</em>&quot;,&quot;familyname&quot;:&quot;<em>Nachname der Person</em>&quot;,&quot;dateofbirth&quot;:&quot;<em>Geburtsdatum der Person</em>&quot;},&quot;salt&quot;:&quot;<em>Zufallszahl</em>&quot;}<br>
+ </p>
+<p>Anschlie&szlig;end wird das pseudoanonymisiert Personendatum als JSON Wert bei den entsprechenden Events eingetragen. Der eingetragener JSON Wert entspricht dem folgenden Schema</p>
+<p><br>
+ {&quot;hash&quot;:&quot;<em>BASE64 codierte Personendatum</em>&quot;,&quot;salt:&quot;<em>Zufallzahl welche zur Generierung des Personendatums verwendet wurde</em>&quot;}</p>
+<p>&nbsp;</p>
+ </div>
</body>
</html>
diff --git a/id/server/doc/handbook/config/config.html b/id/server/doc/handbook/config/config.html
index 18be88951..eb7d117d0 100644
--- a/id/server/doc/handbook/config/config.html
+++ b/id/server/doc/handbook/config/config.html
@@ -108,6 +108,7 @@
</ol>
</li>
<li><a href="#konfigurationsparameter_allgemein_sltransform">Security-Layer Transformationen</a></li>
+ <li><a href="#general_revision">Revisionssicherheit</a></li>
</ol>
</li>
<li><a href="#konfigurationsparameter_oa">Online-Applikationen</a>
@@ -136,11 +137,12 @@
<li><a href="#konfigurationsparameter_oa_additional_encbpk">Fremd-bPK Konfiguration</a></li>
</ol>
</li>
+ <li><a href="#service_revisionslogging">Revisionslogging</a></li>
</ol>
</li>
<li><a href="#import_export">Import / Export</a>
<ol>
- <li><a href="#import_export_legacy">Import alter Konfigurationen (&lt;= MOA-ID 1.5.1)</a></li>
+ <li><a href="#import_export_legacy">Import alter Konfigurationen (= MOA-ID 2.x.x)</a></li>
</ol>
</li>
</ol>
@@ -170,7 +172,8 @@
<li><a href="#konfigurationsparameter_allgemein">Allgemeine Konfiguration des Modules MOA-ID-Auth</a></li>
<li><a href="#konfigurationsparameter_oa">Konfiguration von Online-Applikationen</a></li>
</ol>
- <p>Optional kann nach dem Schritt 3 Basiskonfiguration des Modules MOA-ID-Auth eine <a href="#import_export_legacy">bestehende MOA-ID 1.5.1 Konfiguration importiert</a> werden. F&uuml;r bestehende Konfigurationen &lt; 1.5.1 wird eine vollst&auml;ndige Neukonfiguration empfohlen.</p>
+ <p>Optional kann nach dem Schritt 3 Basiskonfiguration des Modules MOA-ID-Auth eine <a href="#import_export_legacy">bestehende MOA-ID 2.x.x Konfiguration importiert</a> werden. F&uuml;r bestehende Konfigurationen &lt; 2.x.x wird eine vollst&auml;ndige Neukonfiguration empfohlen.</p>
+ <p><strong>Hinweis:</strong> Wenn eine bestehende MOA-ID 2.x.x Konfiguration importiert werden soll MUSS diese zuerst mit Hilfe des in MOA-ID 2.x.x verwendeten Konfigurationstools in eine XML Datei exportiert werden.</p>
<h2><a name="uebersicht_zentraledatei" id="uebersicht_zentraledatei"></a>2 Basiskonfiguration</h2>
<p>Die Basiskonfiguration f&uuml;r die Module MOA-ID-Auth und MOA-ID-Configuration erfolgt mit Hilfe textueller properties-Dateien. Diese properties-Dateien beinhalten alle Konfigurationsparameter welche f&uuml;r den Start der Module erforderlich sind und m&uuml;ssen der Java Virtual Machine durch eine System Property mitgeteilt werden. Alle &Auml;nderungen die an der Basiskonfiguration vorgenommen werden erfordern einen Neustart der jeweiligen Java Virtual Machine.</p>
<p><strong>Hinweis:</strong> Alle URL Konfigurationsparameter auf Dateien ohne den Prefix <em>file:/</em> werden als relative Pfadangaben zum Konfigurationsbasisverzeichnis des jeweiligen Modules interpretiert.</p>
@@ -178,7 +181,11 @@
<p>Dieser Abschnitt behandelt die Basiskonfiguration des Modules MOA-ID-Configuration. Der erste Teilabschnitt behandelt die Bekanntmachung der Konfigurationsdatei mittels einer System Property und der zweite Teilabschnitt beschreibt die einzelnen Konfigurationsparameter im Detail. Eine Konfiguration die als Ausgangspunkt f&uuml;r die individuelle Konfiguration verwendet werden kann finden Sie <a href="../../conf/moa-id-configuration/moa-id-configtool.properties">hier</a>.</p>
<h4><a name="moa_id_config_property" id="uebersicht_zentraledatei_aktualisierung7"></a>2.1.1 Bekanntmachung der Konfigurationsdatei</h4>
<p>Die zentrale Konfigurationsdatei von MOA-ID-Configuration wird der <span class="term">Java Virtual Machine</span>, in der MOA-ID-Configuration l&auml;uft, durch eine <span class="term">System Property </span> mitgeteilt (wird beim Starten der <span class="term">Java Virtual Machine</span> in der Form <code>-D&lt;name&gt;=&lt;wert&gt;</code> gemacht). Der Name der <span class="term">System Property</span> lautet <code>moa.id.webconfig</code> als Wert der <span class="term">System Property</span> ist der Pfad sowie der Name der Konfigurationsdatei im Dateisystem anzugeben, z.B.</p>
-<pre>moa.id.webconfig=C:/Programme/apache/tomcat-4.1.30/conf/moa-id-configuration/moa-id-configuration.properties</pre>
+<pre>WINDOWS: -Dmoa.id.webconfig=file:/C:/Programme/apache/tomcat-8.x.x/conf/moa-id-configuration/moa-id-configuration.properties
+UNIX: -Dmoa.id.webconfig=file:C:/Programme/apache/tomcat-8.x.x/conf/moa-id-configuration/moa-id-configuration.properties </pre>
+ <p>Zus&auml;tzlich gibt es f&uuml;r das Konfigurationsmodul ein Usermanagment welches ebenfalls &uuml;ber eine eigene Konfiguration verf&uuml;gt. Die Konfiguration des Usermanagements wird der <span class="term">Java Virtual Machine</span>, in der MOA-ID-Configuration l&auml;uft, durch eine <span class="term">System Property </span> mitgeteilt (wird beim Starten der <span class="term">Java Virtual Machine</span> in der Form <code>-D&lt;name&gt;=&lt;wert&gt;</code> gemacht). Der Name der <span class="term">System Property</span> lautet <code>user.properties</code> als Wert der <span class="term">System Property</span> ist der Pfad sowie der Name der Konfigurationsdatei im Dateisystem anzugeben, z.B. </p>
+ <pre>WINDOWS: -Duser.properties=file:/C:/Programme/apache/tomcat-8.x.x/conf/moa-id-configuration/userdatabase.properties
+UNIX: -Duser.properties=file:C:/Programme/apache/tomcat-8.x.x/conf/moa-id-configuration/userdatabase.properties </pre>
<p>Weitere Informationen zum Bekanntmachen der zentralen Konfigurationsdatei f&uuml;r MOA-ID-Configuration erhalten Sie in <a href="../install/install.html#moa_id_configuration_deploy">Abschnitt 2.1.2.4</a> des Installationshandbuchs.</p>
<h4><a name="moa_id_config_parameters" id="uebersicht_zentraledatei_aktualisierung8"></a>2.1.2 Konfigurationsparameter</h4>
<p>Aus Gr&uuml;nden der &Uuml;bersichtlichkeit werden die einzelnen Konfigurationsparameter in logisch zusammenh&auml;ngende Bl&ouml;cke unterteilt. Die Konfiguration der Bl&ouml;cke <a href="#moa_id_config_parameters_generel">Allgemeine Konfigurationsparameter</a> und <a href="#moa_id_config_parameters_database">Datenbankzugriff</a> sind nicht optional und m&uuml;ssen f&uuml;r den Betrieb angepasst werden. </p>
@@ -191,25 +198,10 @@
<th scope="col">Beschreibung</th>
</tr>
<tr>
- <td>general.login.deaktivate</td>
- <td>true / false</td>
- <td>Hiermit kann die Authentifizierung am Konfigurationstool deaktiviert werden. Diese Funktion ist f&uuml;r die <a href="#moa_id_config_init">Initialisierung</a> des Modules erforderlich.</td>
- </tr>
- <tr>
- <td>general.publicURLContext</td>
- <td>https://demo.egiz.gv.at/moa-id-configuration/</td>
- <td>Public URL Prefix unter dem das Module MOA-ID-Configuration erreichbar ist</td>
- </tr>
- <tr>
- <td>general.moaid.instance.url</td>
- <td>https:/demo.egiz.gv.at/moa-id-auth/</td>
- <td>Public URL Prefix unter dem die zu konfigurierende MOA-ID-Auth Instanz erreichbar ist. Dieser Parameter wird f&uuml;r die Vorschau der BKU Auswahlskonfiguration ben&ouml;tigt.</td>
- </tr>
- <tr>
<td>general.defaultlanguage</td>
<td>de, en</td>
<td><p>Hiermit kann die Sprache, welche f&uuml;r die Darstellung der Texte verwendet wird, festgelegt werden.</p>
- <p><strong>Hinweis</strong>: Aktuell wird nur Deutsch (de) oder Englisch (en) unterst&uuml;tzt.</p></td>
+ <p><strong>Hinweis</strong>: Aktuell wird nur Deutsch (de) oder Englisch (en) unterst&uuml;tzt.</p></td>
</tr>
<tr>
<td>general.ssl.certstore</td>
@@ -233,11 +225,6 @@
<td><p>Hiermit kann die Schemavalidierung f&uuml;r konfigurierte PVP Metadaten deaktiviert werden.</p>
<strong>Hinweis:</strong> Standardm&auml;&szlig;ig ist die Schemavalidierung aktiv.</td>
</tr>
- <tr>
- <td>general.userrequests.cleanup.delay</td>
- <td>18</td>
- <td>Innerhalb dieses Zeitraums muss ein neuer Benutzer die im Benutzerprofil hinterlegte eMail Adresse validieren. </td>
- </tr>
</table>
<h5>2.1.2.3 Datenbankzugriff</h5>
<p>Diese Konfigurationsparameter sind nicht optional und m&uuml;ssen in der Konfigurationsdatei enthalten sein und individuell angepasst werden. F&uuml;r die Beispielkonfiguration wurde mySQL als Datenbank verwendet wodurch sich die Konfigurationsparameter auf mySQL beziehen. Das Modul MOA-ID-Configuration kann jedoch auch mit Datenbanken anderer Hersteller betrieben werden. Hierf&uuml;r wird jedoch auf die <a href="http://docs.jboss.org/hibernate/core/4.2/manual/en-US/html/">Hibernate Dokumention</a> verwiesen, welches im Module MOA-ID-Configuration f&uuml;r den Datenbankzugriff verwendet wird. </p>
@@ -275,193 +262,6 @@
</table>
<p>&nbsp;</p>
<p>Die Beispielkonfiguration beinhaltet noch zus&auml;tzliche Konfigurationsparameter f&uuml;r den Datenbankzugriff welche direkt aus der Beispielkonfiguration &uuml;bernommen werden k&ouml;nnen. Eine detaillierte Beschreibung der einzelnen Einstellungsparameter kann der <a href="http://docs.jboss.org/hibernate/core/4.2/manual/en-US/html/">Hibernate Dokumention</a> entnommen werden.</p>
-<h5><a name="moa_id_config_parameters_pvp2" id="uebersicht_zentraledatei_aktualisierung11"></a>2.1.2.4 B&uuml;rgerkarten LogIn</h5>
-<p>Zus&auml;tzlich zur Authentifizierung mittels Benutzername und Passwort unterst&uuml;tzt das Modul MOA-ID-Configuration auch eine Authentifizierung mittels B&uuml;rgerkarte oder Handy-Signatur unter Verwendung des <a href="./protocol/protocol.html">Authentifizierungsprotokolls PVP2.1</a>. Wenn eine Authentifizierung mittels B&uuml;rgerkarte oder Handy-Signatur gew&uuml;nscht wird m&uuml;ssen die nachfolgen Parameter konfiguriert werden.</p>
-<table class="configtable">
- <tr>
- <th>Name</th>
- <th>Beispielwert</th>
- <th>Beschreibung</th>
- </tr>
- <tr>
- <td>general.login.pvp2.isactive</td>
- <td>true /false</td>
- <td>Aktiviert oder deaktiviert die Authentifizierung mittels PVP2.1</td>
- </tr>
- <tr>
- <td>general.login.pvp2.idp.metadata.url</td>
- <td>https://demo.egiz.gv.at/moa-id-auth/<br>
- pvp2/metadata</td>
- <td>URL unter der die PVP2.1 Metadaten des IDP abgeholt werden k&ouml;nnen.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.idp.metadata.certificate</td>
- <td>keys/moa_idp.crt</td>
- <td>Zertifikat mit dem die PVP2.1 Metadaten des IDP signiert sind. Dieses Zertifikat wird zur Pr&uuml;fung der IDP Metadaten verwendet.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.idp.metadata.entityID</td>
- <td>https://demo.egiz.gv.at/moa-id-auth/</td>
- <td>EntityID des IDP in den Metadaten (Details siehe PVP2.1 Spezifikation)</td>
- </tr>
- <tr>
- <td>general.login.pvp2.idp.sso.logout.url</td>
- <td>https://demo.egiz.gv.at/moa-id-auth/LogOut?redirect=<br>
- https://demo.egiz.gv.at/moa-id-configuration</td>
- <td>URL zum Single Log-Out (SLO) Service des IDP. Details zum SLO Service von MOA-ID-Auth finden Sie <a href="./protocol/protocol.html#allgemeines_ssologout">hier</a>.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.metadata.entities.name</td>
- <td>MOA-ID 2.x Configuration Tool</td>
- <td>Name der Applikation, welcher in den Metadaten der Applikation angegeben wird</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.url</td>
- <td>keys/application[password].p12</td>
- <td>Keystore mit Schl&uuml;ssel und Zertifikaten welche f&uuml;r das signieren und verschl&uuml;sseln der PVP2.1 Nachrichten verwendet werden sollen.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.password</td>
- <td>password</td>
- <td>Passwort des Keystores</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.type</td>
- <td>PKCS12</td>
- <td><p>Type des Keystores. Aktuell werden folgende Keystore Typen unterst&uuml;tzt</p>
- <ul>
- <li>PKCS12: PKCS12 Keystore</li>
- <li>JKS: Java-Keystore</li>
- </ul></td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.metadata.key.alias</td>
- <td>pvp_metadata</td>
- <td>Name des Schl&uuml;ssels der zum Signieren der Metadaten des Modules MOA-ID-Configuration verwendet werden soll</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.metadata.key.password</td>
- <td>password</td>
- <td>Passwort des Schl&uuml;ssels der zum Signieren der Metadaten verwendet werden soll.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.authrequest.encryption.key.alias</td>
- <td>pvp_encryption</td>
- <td>Name des Schl&uuml;ssels der zum Verschl&uuml;sseln der Anmeldeinformation, welche vom IDP an das Konfigurationstool &uuml;bermittelt, verwendet werden soll</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.authrequest.encryption.key.password</td>
- <td>password</td>
- <td>Passwort des Schl&uuml;ssels zum Verschl&uuml;sseln der Anmeldeinformation.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.authrequest.key.alias</td>
- <td>pvp_request</td>
- <td>Name des Schl&uuml;ssels zum Signieren des Authentifizierungsrequests der an den IDP gestellt wird.</td>
- </tr>
- <tr>
- <td>general.login.pvp2.keystore.authrequest.key.password</td>
- <td>password</td>
- <td>Passwort des Schl&uuml;ssels zum Signieren des Authentifizierungsrequests.</td>
- </tr>
-</table>
-<p>&nbsp;</p>
-<p>Die Metadaten des Modules MOA-ID-Configuration werden dynamisch erstellt und stehen unter folgender URL zum Download bereit.</p>
-<pre>
-http://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/servlet/metadata</pre>
-<p>bzw. </p>
-<pre>
-https://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/servlet/metadata</pre>
-<h5><a name="moa_id_config_parameters_mail" id="uebersicht_zentraledatei_aktualisierung12"></a>2.1.2.5 Mailversand</h5>
-<p>Das Modul MOA-ID-Configuration bietet die M&ouml;glichkeit zur Generierung von automatischen Statusmeldungen welche via eMail versendet werden. Diese Statusmeldungen betreffen die Aktivierung neuer Online-Applikationen oder Benutzeraccounts und die Verifikation von eMail Adressen welche einem Benutzeraccount zugeordnet sind. Detailinformationen hierzu finden Sie im Abschnitt <a href="#moa_id_config_user">Benutzerverwaltung</a>.</p>
-<table class="configtable">
- <tr>
- <th>Name</th>
- <th>Beispielwert</th>
- <th>Beschreibung</th>
- </tr>
- <tr>
- <td>general.mail.host</td>
- <td>demomail.gv.at</td>
- <td>URL des SMTP Services zum Mailversand</td>
- </tr>
- <tr>
- <td>general.mail.host.port</td>
- <td>&nbsp;</td>
- <td>Port an dem der SMTP Service erreichbar ist. Sollte kein Port angegeben werden wird automatisch das Port 25 verwendet.</td>
- </tr>
- <tr>
- <td>general.mail.host.username</td>
- <td>&nbsp;</td>
- <td>Benutzername f&uuml;r den SMTP Zugriff</td>
- </tr>
- <tr>
- <td>general.mail.host.password</td>
- <td>&nbsp;</td>
- <td>Passwort f&uuml;r den SMTP Zugriff</td>
- </tr>
- <tr>
- <td>general.mail.from.name</td>
- <td>MOA-ID 2.x Konfigurationstool</td>
- <td>Name des Absenders der Statusmeldungen</td>
- </tr>
- <tr>
- <td>general.mail.from.address</td>
- <td>no-reply@demo.egiz.gv.at</td>
- <td>eMail Adresse des Absenders</td>
- </tr>
- <tr>
- <td>general.mail.admin.adress</td>
- <td>admin@demo.egiz.gv.at</td>
- <td>An diese Adresse werden Statusmeldungen an den Administrator des Modules MOA-ID-Configuration versendet</td>
- </tr>
- <tr>
- <td>general.mail.admin.subject</td>
- <td>Statusmeldung</td>
- <td>Betreff einer Statusmeldungs eMail</td>
- </tr>
- <tr>
- <td>general.mail.admin.adresses.template</td>
- <td>mail/admin_template.html</td>
- <td>Template f&uuml;r die Generierung der Statusmeldungs eMail</td>
- </tr>
- <tr>
- <td>general.mail.useraccountrequest.verification.subject</td>
- <td>Benutzerverifikation</td>
- <td>Betreff der eMail zur Verifikation von Benutzer eMail-Adressen</td>
- </tr>
- <tr>
- <td>general.mail.useraccountrequest.verification.template</td>
- <td>mail/verification_template.html</td>
- <td>Template der eMail zur Verifikation von Benutzer eMail-Adressen</td>
- </tr>
- <tr>
- <td>general.mail.useraccountrequest.isactive.subject</td>
- <td>Benutzeraktivierung</td>
- <td>Betreff der eMail &uuml;ber die Aktivierung/Deaktivierung des Benutzeraccounts</td>
- </tr>
- <tr>
- <td>general.mail.useraccountrequest.isactive.template</td>
- <td>mail/activation_template.html</td>
- <td>Template der eMail zur Aktivierung eines Benutzeraccounts</td>
- </tr>
- <tr>
- <td>general.mail.useraccountrequest.rejected.template</td>
- <td>mail/rejected_template.html</td>
- <td>Template der eMail zur Deaktivierung eines Benutzeraccounts</td>
- </tr>
- <tr>
- <td>general.mail.createOArequest.isactive.subject</td>
- <td>Online-Applikationsaktivierung</td>
- <td>Betreff der eMail zur Aktivierung der Online-Applikation</td>
- </tr>
- <tr>
- <td>general.mail.createOArequest.isactive.template</td>
- <td>mail/oa_activation_template.html</td>
- <td>Template der eMail zur Aktivierung der Online-Applikation</td>
- </tr>
-</table>
-<p>&nbsp;</p>
<h4><a name="moa_id_config_init" id="uebersicht_zentraledatei_aktualisierung13"></a>2.1.3 Initialisierung des Modules MOA-ID-Configuration</h4>
<p>F&uuml;r den ersten Start muss die Authentifizierung deaktiviert werden (siehe <em>general.login.deaktivate</em> <a href="#moa_id_config_parameters_generel">Abschnitt 2.2.2.1</a>). Anschlie&szlig;end kann die Benutzerverwaltung des Modules MOA-ID-Configuration unter der folgenden Adresse aufgerufen werden.</p>
<pre>http://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/secure/usermanagementInit.action</pre>
@@ -570,7 +370,8 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/secure/usermanagementInit
<p>Dieser Abschnitt behandelt die Basiskonfiguration des Modules MOA-ID-Auth. Der erste Teilabschnitt behandelt die Bekanntmachung der Konfigurationsdatei mittels einer System Property und der zweite Teilabschnitt beschreibt die einzelnen Konfigurationsparameter im Detail. Eine Konfiguration die als Ausgangspunkt f&uuml;r die individuelle Konfiguration verwendet werden kann finden Sie <a href="../../conf/moa-id/moa-id.properties">hier</a>.</p>
<h4><a name="uebersicht_bekanntmachung" id="uebersicht_bekanntmachung"></a>2.2.1 Bekanntmachung der Konfigurationsdatei</h4>
<p>Die zentrale Konfigurationsdatei von MOA-ID-Configuration wird der <span class="term">Java Virtual Machine</span>, in der MOA-ID-Configuration l&auml;uft, durch eine <span class="term">System Property </span> mitgeteilt (wird beim Starten der <span class="term">Java Virtual Machine</span> in der Form <code>-D&lt;name&gt;=&lt;wert&gt;</code> gemacht). Der Name der <span class="term">System Property</span> lautet <code>moa.id.webconfig</code> als Wert der <span class="term">System Property</span> ist der Pfad sowie der Name der Konfigurationsdatei im Dateisystem anzugeben, z.B.</p>
- <pre>moa.id.configuration=C:/Programme/apache/tomcat-4.1.30/conf/moa-id/moa-id.properties</pre>
+ <pre>Windows: moa.id.configuration=file:/C:/Programme/apache/tomcat-8.x.x/conf/moa-id/moa-id.properties
+UNIX: moa.id.configuration=file:C:/Programme/apache/tomcat-8.x.x/conf/moa-id/moa-id.properties</pre>
<p>Weitere Informationen zum Bekanntmachen der zentralen Konfigurationsdatei f&uuml;r MOA-ID-Auth erhalten Sie in <a href="../install/install.html#webservice_basisinstallation_installation_spssdeploy">Abschnitt 2.1.2.3</a> des Installationshandbuchs.</p>
<h4><a name="basisconfig_moa_id_auth_param" id="uebersicht_bekanntmachung2"></a>2.2.2 Konfigurationsparameter</h4>
<p>Aus Gr&uuml;nden der &Uuml;bersichtlichkeit werden die einzelnen Konfigurationsparameter in logisch zusammenh&auml;ngende Bl&ouml;cke unterteilt.</p>
@@ -615,12 +416,6 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/secure/usermanagementInit
<td>true / false</td>
<td>Aktiviert das erweiterte Logging zur Generierung von anonymisierten Statistikdaten aus den Anmeldeinformationen. Hierf&uuml;r muss der entsprechende Datenbankzugriff (siehe <a href="#basisconfig_moa_id_auth_param_database">Kapitel 2.2.2.4</a>) ebenfalls konfiguriert werden.</td>
</tr>
- <tr>
- <td>configuration.xml</td>
- <td>&nbsp;</td>
- <td><p>URL auf eine XML basierte Konfiguration f&uuml;r MOA-ID-Auth 2.0. Dieser Parameter ist optional. </p>
- <strong>Achtung: </strong>Dieser Parameter sollte nur in Kombination mit einer InMemory Datenbank f&uuml;r die Konfiguration verwendet werden, da w&auml;hrend des Startvorgangs von MOA-ID-Auth eine eventuell vorhandene Konfiguration vollst&auml;ndig durch die Konfiguration aus der XML Datei ersetzt wird. N&auml;here Informationen zu einer XML basierten Konfigurationsdatei f&uuml;r MOA-ID-Auth finden Sie <a href="#import_export_actual">hier</a>.</td>
- </tr>
</table>
<p>&nbsp;</p>
<p>Wenn das interne Monitoring aktiviert wurde kann ein Testvorgang durch einen Aufruf der folgenden Adresse gestartet werden.</p>
@@ -1078,12 +873,17 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/MonitoringServlet</pre>
<p>&nbsp;</p>
<h3><a name="uebersicht_logging" id="uebersicht_logging"></a>2.3 Konfiguration des Loggings</h3>
<p>Die Module MOA-ID-Auth und MOA-ID-Configuration verwendet als Framework f&uuml;r Logging-Information die Open Source Software <code>log4j</code>. Die Konfiguration der Logging-Information erfolgt nicht direkt durch die einzelnen Module, sondern &uuml;ber eine eigene Konfigurationsdatei, die der <span class="term">Java Virtual Machine</span> durch eine <span class="term">System Property </span> mitgeteilt wird. Der Name der <span class="term">System Property </span> lautet <code>log4j.configuration</code>; als Wert der <span class="term">System Property </span> ist eine URL anzugeben, die auf die <code>log4j</code>-Konfigurationsdatei verweist, z.B. </p>
-<pre>log4j.configuration=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-id/log4j.properties</pre>
- Weitere Informationen zur Konfiguration des Loggings erhalten Sie in <a href="../install/install.html#webservice_basisinstallation_logging">Abschnitt 2.1.3</a> des Installationshandbuchs.
-<p></p>
+<pre>log4j.configuration=file:/C:/Programme/apache/tomcat-8.x.x/conf/moa-id/log4j.properties</pre>
+ <p>Zust&auml;tzlich wird f&uuml;r einige Basiskomponenten, welche &uuml;ber Drittherstellerbibliotheken inkludiert sind, LogBack als Logging Framework verwendet. Die LogBack Konfiguration wird ebenfalls &uuml;ber den System Property angegeben</p>
+ <pre>logback.configuration=file:/C:/Programme/apache/tomcat-8.x.x/conf/moa-id/logback_config.xml</pre>
+ <p>Mit Hilfe von Konverertern kann eine bestehende log4j Konfiguration in das LogBack Format umgewandelt werden. Hierf&uuml;r stehen divererse Tools Online zur Verf&uuml;gung. (z.B. <a href="http://logback.qos.ch/translator/">http://logback.qos.ch/translator/</a>)</p>
+ <p>&nbsp;</p>
+ <p>Weitere Informationen zur Konfiguration des Loggings erhalten Sie in <a href="../install/install.html#webservice_basisinstallation_logging">Abschnitt 2.1.3</a> des Installationshandbuchs.
+ </p>
+ <p></p>
<h3><a name="uebersicht_samlengine" id="uebersicht_samlengine"></a>2.4 Konfiguration des SamlEngines</h3>
-<p>F\FCr die Untest\FCtzung des STORK2 Protokols verwendet MOA-ID eine zus\E4tzliche Bibliothek, die \FCber gesonderte Dateien konfiguriert wird. Diese Dateien sind unter einem Verzeichnis gespeichert, das sich \FCblicherweise im MOA-ID-Auth Konfigurationsverzeichnis befindet. Der Name der <span class="term">System Property </span> lautet <code>eu.stork.samlengine.config.location</code>; als Wert der <span class="term">System Property </span> ist das Verzeichnis anzugeben, wo die entsprechende SamlEngine Konfigurationsdateien gespeichert werden, z.B. </p>
-<pre>eu.stork.samlengine.config.location=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-id/conf/moa-id/stork</pre>
+<p>F&uuml;r die Untest&uuml;tzung des STORK2 Protokols verwendet MOA-ID eine zus&auml;tzliche Bibliothek, die &uuml;ber gesonderte Dateien konfiguriert wird. Diese Dateien sind unter einem Verzeichnis gespeichert, das sich &uuml;blicherweise im MOA-ID-Auth Konfigurationsverzeichnis befindet. Der Name der <span class="term">System Property </span> lautet <code>eu.stork.samlengine.config.location</code>; als Wert der <span class="term">System Property </span> ist das Verzeichnis anzugeben, wo die entsprechende SamlEngine Konfigurationsdateien gespeichert werden, z.B. </p>
+<pre>eu.stork.samlengine.config.location=file:/C:/Programme/apache/tomcat-8.x.x/conf/moa-id/conf/moa-id/stork</pre>
<p>Dieses Verzeichnis muss mindestens folgende Dateien enthalten:</p>
<table class="configtable">
<tr>
@@ -1096,10 +896,10 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/MonitoringServlet</pre>
</tr>
<tr>
<td>StorkSamlEngine_<span class="term">XXX</span>.xml</td>
- <td>Enth\E4lt allgemeine Konfigurationsparametern einer spezifischen Instanz des SamlEngines.</td>
+ <td>Enth&auml;lt allgemeine Konfigurationsparametern einer spezifischen Instanz des SamlEngines.</td>
</tr> <tr>
<td>SignModule_<span class="term">XXX</span>.xml</td>
- <td>Enth\E4lt Konfigurationsparametern f\FCr Trust- und Keystore einer spezifischen Instanz des SamlEngines.</td>
+ <td>Enth&auml;lt Konfigurationsparametern f&uuml;r Trust- und Keystore einer spezifischen Instanz des SamlEngines.</td>
</tr>
</table>
<p></p>
@@ -1126,7 +926,7 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/MonitoringServlet</pre>
&lt;/instances&gt;
</pre>
<p>In diesem Beispiel ist nur eine Instanz <em>VIDP</em> definiert deren spezifischen Parametern in zwei Konfigurationsdateien aufgeteilt werden.</p>
-<p>Die Datei <span class="strongerterm">StorkSamlEngine_VIDP.xml</span> enth\E4lt STORK-spezifische Parameter, die im Normalbetrieb nicht ge\E4ndert werden m&uuml;ssen. Die zweite Datei, <span class="strongerterm">SignModule_VIDP.xml</span>, definiert den von der SamlEngine verwendeten Trust- und Keystore. Die Beispielkonfiguration dieser Datei sieht wie folgendes:</p>
+<p>Die Datei <span class="strongerterm">StorkSamlEngine_VIDP.xml</span> enth&auml;lt STORK-spezifische Parameter, die im Normalbetrieb nicht ge&auml;ndert werden m&uuml;ssen. Die zweite Datei, <span class="strongerterm">SignModule_VIDP.xml</span>, definiert den von der SamlEngine verwendeten Trust- und Keystore. Die Beispielkonfiguration dieser Datei sieht wie folgendes:</p>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE properties SYSTEM &quot;http://java.sun.com/dtd/properties.dtd&quot;&gt;
@@ -1141,7 +941,7 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/MonitoringServlet</pre>
&lt;entry key=&quot;keystoreType&quot;&gt;JKS&lt;/entry&gt;
&lt;/properties&gt;
</pre>
-<p>Diese Parameter m&uuml;ssen bei der Installation angepasst werden, um die Zugriff an Keystore und die Schl\FCssel zu erm\F6glichen. Die einzelne Parameter werden in folgender Tabelle erl&auml;utert:</p>
+<p>Diese Parameter m&uuml;ssen bei der Installation angepasst werden, um die Zugriff an Keystore und die Schl&uuml;ssel zu erm&ouml;glichen. Die einzelne Parameter werden in folgender Tabelle erl&auml;utert:</p>
<table class="configtable">
<tr>
<th>Name</th>
@@ -1149,27 +949,27 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/MonitoringServlet</pre>
</tr>
<tr>
<td>keystorePath</td>
- <td>Keystore mit Schl\FCssel und Zertifikaten welche f\FCr das Signieren und Verschl\FCsseln von STORK Nachrichten verwendet werden sollen. </td>
+ <td>Keystore mit Schl&uuml;ssel und Zertifikaten welche f&uuml;r das Signieren und Verschl&uuml;sseln von STORK Nachrichten verwendet werden sollen. </td>
</tr>
<tr>
<td>keyStorePassword</td>
- <td>Passwort des Keystores. Keystore soll den Schl\FCssel f\FCr das Signieren von Nachrichten enthalten, ebenso wie die vertrauensw\FCrdige Zertifikate von anderen Parteien, wie z.B. ausl\E4ndische PEPSes. </td>
+ <td>Passwort des Keystores. Keystore soll den Schl&uuml;ssel f&uuml;r das Signieren von Nachrichten enthalten, ebenso wie die vertrauensw&uuml;rdige Zertifikate von anderen Parteien, wie z.B. ausl&auml;ndische PEPSes. </td>
</tr>
<tr>
<td>keyPassword</td>
- <td>Password des Schl\FCssels, der f\FCr das Signieren der STORK Nachrichten verwendet werden soll.</td>
+ <td>Password des Schl&uuml;ssels, der f&uuml;r das Signieren der STORK Nachrichten verwendet werden soll.</td>
</tr>
<tr>
<td>issuer</td>
- <td>Issuer des Keypairs, der f\FCr das Signieren der STORK Nachrichten verwendet werden soll.</td>
+ <td>Issuer des Keypairs, der f&uuml;r das Signieren der STORK Nachrichten verwendet werden soll.</td>
</tr>
<tr>
<td>serialNumber</td>
- <td>Nummer des Keypairs, der f\FCr das Signieren der STORK Nachrichten verwendet werden soll.</td>
+ <td>Nummer des Keypairs, der f&uuml;r das Signieren der STORK Nachrichten verwendet werden soll.</td>
</tr>
<tr>
<td>keystoreType</td>
- <td>Typ und Format des Keystores. <span class="term">JKS</span> steht f\FCr <span class="term">Java Key Store</span>.</td>
+ <td>Typ und Format des Keystores. <span class="term">JKS</span> steht f&uuml;r <span class="term">Java Key Store</span>.</td>
</tr>
</table>
<h2><a name="konfigurationsparameter"></a>3 Konfiguration MOA-ID-Auth</h2>
@@ -1178,8 +978,6 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/MonitoringServlet</pre>
<h3><a name="konfigurationsparameter_allgemein" id="konfigurationsparameter_allgemein"></a>3.1
Allgemeine Konfiguration</h3>
<p>Die Allgemeine Konfiguration des Modules MOA-ID-Auth umfasst alle nicht online-applikationsspezifischen Konfigurationsparameter. Die Konfiguration dieser Parameter erfolgt &uuml;ber eine Web-Oberfl&auml;che, welche Eingabefelder f&uuml;r jeden Konfigurationsparameter zur Verf&uuml;gung stellt. Jedes Eingabefeld wird validiert bevor der Konfigurationsparameter in der Datenbank gespeichert wird. Die Validierung erfolgt auf Basis des zu erwartenden Eingabewerts, wobei der erlaubte Zeichensatz f&uuml;r freidefinierbare textuelle Eingabefelder eingeschr&auml;nkt sein kann. Detailinformationen zum erlaubten Zeichen finden Sie bei der jeweiligen Beschreibung des Konfigurationsparameters. </p>
-<p>Eine &Auml;nderung (Speicherung) an der allgemeinen Konfiguration wirkt sich nicht umgehend auf die zugeordnete MOA-ID-Auth Instanz aus, sondern erfolgt mit zeitlicher Verz&ouml;gerung. Die zeitliche Verz&ouml;gerung betr&auml;gt jedoch maximal eine Minute. Dass die ge&auml;nderte MOA-ID-Auth Konfiguration in der zugeordneten Instanz geladen wurde ist durch folgende Log Meldungen erkennbar.</p>
-<pre>INFO | 19 10:25:23,179 | ConfigurationLoader | check for new config.<br>INFO | 19 10:25:23,189 | ConfigurationLoader | Read MOA-ID 2.0 configuration from database.<br>INFO | 19 10:25:23,192 | ConfigurationLoader | MOA-ID 2.0 is loaded.</pre>
<p>Nachfolgend finden Sie die Detailbeschreibung aller allgemeinen Konfigurationsparameter.</p>
<h4><a name="konfigurationsparameter_allgemein_publicurlprefix" id="konfigurationsparameter_allgemein_bku17"></a>3.1.1 Public URL Prefix</h4>
<p>Dieser Parameter definiert den Public URL Prefix unter welchem die MOA-ID Instanz erreichbar ist. Die Konfiguration dieses Parameters ist verpflichtend.</p>
@@ -1269,11 +1067,6 @@ Checking</td>
<td>certs/ca-certs</td>
<td>TrustedCACertificates enth&auml;lt das Verzeichnis (relativ zur MOA-ID-Auth Basiskonfigurationsdatei), das jene Zertifikate enth&auml;lt, die als vertrauensw&uuml;rdig betrachtet werden. Im Zuge der &Uuml;berpr&uuml;fung der TLS-Serverzertifikate wird die Zertifikatspfaderstellung an einem dieser Zertifikate beendet. Dieses Verzeichnis wird zur Pr&uuml;fung der SSL Serverzertifikate f&uuml;r den Zugriff auf das Online-Vollmachten Service, den Stammzahlenregister Gateway und das Abholen von PVP 2.1 Metadaten via SSL verwendet.</td>
</tr>
- <tr>
- <td>ChainingMode</td>
- <td>pkix</td>
- <td>ChainingMode definiert, ob bei der Zertifikatspfad-&uuml;berpr&uuml;fung das Kettenmodell (&quot;chaining&quot;) oder das Modell nach PKIX RFC 3280 (&quot;pkix&quot;) verwendet werden soll. </td>
- </tr>
</table>
<h4><a name="konfigurationsparameter_allgemein_timeouts" id="konfigurationsparameter_allgemein_bku4"></a>3.1.5 Session TimeOuts</h4>
<table class="configtable">
@@ -1283,7 +1076,7 @@ Checking</td>
<th>Beschreibung</th>
</tr>
<tr>
- <td>Anmeldedaten</td>
+ <td>Transaktion</td>
<td>300</td>
<td><p>Gibt die Zeitspanne in Sekunden an, f&uuml;r die Anmeldedaten, tempor&auml;re Sessiondaten oder Assertions in der Authentisierungskomponente (MOA-ID-Auth) vorr&auml;tig gehalten werden. Nach Ablauf dieser Zeitspanne werden diese Daten gel&ouml;scht oder der Anmeldevorgang abgebrochen. Dieser Parameter hat Einfluss auf folgende Funktionen:</p>
<ul>
@@ -1324,15 +1117,9 @@ Checking</td>
</tr>
<tr>
<td><p>Authentifizierungsblock Transformationen</p></td>
- <td>MOAIDTransformAuthBlockTable_DE_2.0</td>
+ <td>MOAIDTransformAuthBlockTable_DE_3.0</td>
<td>Die Elemente spezifizieren eine ID f&uuml;r ein Transformationsprofil, die f&uuml;r den VerifyXMLSignatureRequest zur &uuml;berpr&uuml;fung der Signatur des Auth-Blocks verwendet werden m&uuml;ssen. Dieses Transformationsprofil muss beim verwendeten MOA-SP Modul konfiguriert sein.</td>
</tr>
- <tr>
- <td>MOA-SP Service URL</td>
- <td>&nbsp;</td>
- <td>URL auf das zu nutzende MOA-SP Service.<br>
- <strong>Hinweis:</strong> Wird kein <em>MOA-SP Service URL</em> angegeben so wird eine MOA-ID beiliegende Version von MOA-SP direkt &uuml;ber das Java-API angesprochen. In diesem Fall muss das System-Property auf die verwendete Konfigurationsdatei von MOA-SP gesetzt werden. Eine beispielhafte MOA-SP Konfigurationsdatei ist in <em>$MOA_ID_INST_AUTH/conf/moa-spss/SampleMOASPSSConfiguration.xml </em>enthalten. </td>
- </tr>
</table>
<h4><a name="konfigurationsparameter_allgemein_services" id="konfigurationsparameter_allgemein_bku6"></a>3.1.7 Externe Services</h4>
<p>Hiermit werden die URLs zum Online-Vollmachten Service und zum SZR-Gateway konfiguriert. Die Konfiguration der f&uuml;r den Zugriff ben&ouml;tigen Client-Zertifikate wurden bereits im Abschnitt <a href="#basisconfig_moa_id_auth_param_services">2.2.2.2</a> behandelt.</p>
@@ -1420,7 +1207,7 @@ Checking</td>
</tr>
</table>
<h4><a name="konfigurationsparameter_allgemein_stork" id="konfigurationsparameter_allgemein_bku8"></a>3.1.8 Secure idenTity acrOss boRders linKed (STORK)</h4>
-<p>Hierbei werden allgemeine Parameter f\FCr STORK Protokoll konfiguriert.</p>
+<p>Hierbei werden allgemeine Parameter f&uuml;r STORK Protokoll konfiguriert.</p>
<table class="configtable">
<tr>
<th>Name</th>
@@ -1435,17 +1222,17 @@ Checking</td>
<tr>
<td>Country Code</td>
<td>ES</td>
- <td>Der zweistelligen Code vom unterst\FCtzten PEPS-Staat.</td>
+ <td>Der zweistelligen Code vom unterst&uuml;tzten PEPS-Staat.</td>
</tr>
<tr>
<td>PEPS URL</td>
<td>https://prespanishpeps.redsara.es/PEPS/ColleagueRequest</td>
- <td>Die Adresse von PEPS eines unterst\FCtzten PEPS-Staat.</td>
+ <td>Die Adresse von PEPS eines unterst&uuml;tzten PEPS-Staat.</td>
</tr>
<tr>
<td>Attributname</td>
<td>eIdentifier</td>
- <td>Der Name des unterst\FCtzten Attributes. Die als <span class="term">zwingend</span> markierte Attribute m\FCssen im Response von dem gegenstehendem PEPS enthalten sein. Jedes Attribut wird gesondert eingetragen. <br/>Die Liste von vorhandenen und unterst\FCtzen Attributes ist in Konfigurationsdatei von SamlEngine <span class="term">(StorkSamlEngine_XXX.xml)</span> vorhanden. </td>
+ <td>Der Name des unterst&uuml;tzten Attributes. Die als <span class="term">zwingend</span> markierte Attribute m&uuml;ssen im Response von dem gegenstehendem PEPS enthalten sein. Jedes Attribut wird gesondert eingetragen. <br/>Die Liste von vorhandenen und unterst&uuml;tzen Attributes ist in Konfigurationsdatei von SamlEngine <span class="term">(StorkSamlEngine_XXX.xml)</span> vorhanden. </td>
</tr>
</table>
<p>&nbsp;</p>
@@ -1679,7 +1466,11 @@ Soll die B&uuml;rgerkartenauswahl weiterhin, wie in MOA-ID 1.5.1 im Kontext der
</tr>
</table>
<h4><a name="konfigurationsparameter_allgemein_sltransform" id="konfigurationsparameter_allgemein_bku14"></a>3.1.11 Security-Layer Transformationen</h4>
-<p>Die Security-Layer (SL) Transformation, welche von MOA-ID-Auth f&uuml;r die Erstellung der Signatur des AuthBlock verwendet werden soll, muss hier angegeben werden. &Uuml;ber das Datei-Upload Feld kann die zu verwendende Transformation hochgeladen werden. Diese befindet sich in der MOA-ID-Auth Defaultkonfiguration im Ordner <em><a href="./../../../conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_2.0.xml">/conf/moa-id/transforms/ TransformsInfoAuthBlockTable_DE_2.0.xml</a></em>.</p>
+<p>Die Security-Layer (SL) Transformation, welche von MOA-ID-Auth f&uuml;r die Erstellung der Signatur des AuthBlock verwendet werden soll, muss hier angegeben werden. &Uuml;ber das Datei-Upload Feld kann die zu verwendende Transformation hochgeladen werden. Diese befindet sich in der MOA-ID-Auth Defaultkonfiguration im Ordner <em><a href="./../../../conf/moa-id/transforms/TransformsInfoAuthBlockTable_DE_3.0.xml">/conf/moa-id/transforms/ TransformsInfoAuthBlockTable_DE_3.0.xml</a></em>.</p>
+
+<!-- <h4><a name="general_revision" id="konfigurationsparameter_allgemein_bku18"></a>3.1.12 Revisionssicherheit</h4>
+<p>Ab MOA-ID 3.x steht ein erweitertes speziell f&uuml;r Revisionsaufgaben abgestimmtest Logging zur Verf&uuml;gung. &Uuml;ber dieses Feld k&ouml;nnen die zu loggenden Events als CSV codierte Eventcodes konfiguriert werden. Werden keine Eventcodes konfiguriert wird eine in MOA-ID hinterlegte Defaultkonfiguration verwendet. Eine Liste aller m&ouml;glichen Eventcodes finden Sie <a href="../additional/additional.html#revisionslog">hier</a>.</p> -->
+
<h3><a name="konfigurationsparameter_oa" id="uebersicht_zentraledatei_aktualisierung3"></a>3.2 Online Applikationen</h3>
<p>Die Konfiguration von Online-Applikationen erfolgt ebenfalls mit Hilfe des Moduls MOA-ID-Configuration. Es k&ouml;nnen sowohl neue Online-Applikationen erstellt als auch bestehende Online-Applikationen bearbeitet oder gel&ouml;scht werden. Der erlaubte Konfigurationsumfang h&auml;ngt jedoch von Role des aktuellen Benutzers ab, wobei eine Konfiguration der gesamten Parameter nur einem Benutzer mit der Role <em>admin</em> m&ouml;glich ist. Alle Konfigurationsfelder die nur einem Benutzer mit der Role <em>admin</em> zur Verf&uuml;gung stehen sind gesondert gekennzeichnet.</p>
<h4><a name="konfigurationsparameter_oa_general" id="uebersicht_zentraledatei_aktualisierung17"></a>3.2.1 Informationen zur Online-Applikation (Service Provider)</h4>
@@ -2051,19 +1842,12 @@ Soll die B&uuml;rgerkartenauswahl weiterhin, wie in MOA-ID 1.5.1 im Kontext der
<th>Beschreibung</th>
</tr>
<tr>
- <td>Neu Laden</td>
- <td>&nbsp;</td>
- <td align="center">&nbsp;</td>
- <td align="center">X</td>
- <td>Wird diese Option gew&auml;hlt erfolgt nach dem Speicher der Konfiguration eine Neuinitialisierung der PVP 2.1 Metadaten der Online-Applikation durch die MOA-ID-Auth Instanz. </td>
- </tr>
- <tr>
<td>URL zu den Metadaten</td>
<td>http://demo.egiz.gv.at/demologin-pvp2-sso/metadata/demoportal-pvp2-sso.mdxml</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td>URL unter der die MOA-ID-Auth Instanz die Metadaten der Online-Applikation beziehen kann. Diese Metadaten m&uuml;ssen durch die Online-Applikation signiert sein. F&uuml;r den Fall das die Metadaten &uuml;ber https abgeholt werden, muss das jeweilige Serverzertifikat zur Zertifikatspr&uuml;fung im <a href="../install/install.html#webservice_basisinstallation_installation_spssdeploy">TrustStore der MOA-ID-Auth Instanz</a> hinterlegt sein. Die Metadaten werden anschlie&szlig;end durch MOA-ID-Auth innerhalb des in den Metadaten angegebenen G&uuml;ltigkeitszeitraums automatisch aktualisiert. Das Aktualisierungsintervall bei automatischer Aktualisierung betr&auml;gt jedoch mindestens 15 Minuten jedoch nicht mehr als 24 Stunden. (Intervall: 15min &lt; Aktualisierungszeitpunkt &lt; 24 Stunden)
- <p><b>Hinweis:</b> Metadaten k\F6nnen nur \FCber http oder https bezogen werden. Das Laden von Metadaten aus dem lokalen Verzeichnissystem ist nicht m\F6glich.</p></td>
+ <p><b>Hinweis:</b> Metadaten k&ouml;nnen nur &uuml;ber http oder https bezogen werden. Das Laden von Metadaten aus dem lokalen Verzeichnissystem ist nicht m&ouml;glich.</p></td>
</tr>
<tr>
<td>Infos zum Zertifikat</td>
@@ -2114,8 +1898,8 @@ Soll die B&uuml;rgerkartenauswahl weiterhin, wie in MOA-ID 1.5.1 im Kontext der
</tr>
</table>
<h5><a name="konfigurationsparameter_oa_additional" id="uebersicht_zentraledatei_aktualisierung28"></a>3.2.8 Zus&auml;tzliche allgemeine Einstellungen</h5>
-<p>In Abschnitt erm\F6glicht eine erweiterte online-applikationsspezifische Individualisierung des AuthBlocks und der B\FCrgerkartenauswahl.
- Die Individualisierung des AuthBlocks steht jedoch dann zur Verf\FCgung wenn die dem Module MOA-ID-Auth beigelegte Security-Layer Transformation verwendet wird oder
+<p>In Abschnitt erm&ouml;glicht eine erweiterte online-applikationsspezifische Individualisierung des AuthBlocks und der B&uuml;rgerkartenauswahl.
+ Die Individualisierung des AuthBlocks steht jedoch dann zur Verf&uuml;gung wenn die dem Module MOA-ID-Auth beigelegte Security-Layer Transformation verwendet wird oder
wenn die individuelle Security-Layer Transformation den Formvorschriften der Spezifikation entspricht.</p>
<table class="configtable">
<tr>
@@ -2145,13 +1929,13 @@ wenn die individuelle Security-Layer Transformation den Formvorschriften der Sp
<td>&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
- <td>Wird diese Option gew\E4hlt wird im AuthBlock, welcher im Anmeldevorgang signiert wird, keine bPK oder wbPK dargestellt.</td>
+ <td>Wird diese Option gew&auml;hlt wird im AuthBlock, welcher im Anmeldevorgang signiert wird, keine bPK oder wbPK dargestellt.</td>
</tr>
</table>
<h5><a name="konfigurationsparameter_oa_additional_formular" id="uebersicht_zentraledatei_aktualisierung29"></a>3.2.8.1 Login-Fenster Konfiguration</h5>
-<p>Diese Konfigurationsparameter bieten zus\E4tzliche Einstellungen f\FCr eine Anpassung der B\FCrgerkartenauswahl welche von MOA-ID-Auth generiert wird.
+<p>Diese Konfigurationsparameter bieten zus&auml;tzliche Einstellungen f&uuml;r eine Anpassung der B&uuml;rgerkartenauswahl welche von MOA-ID-Auth generiert wird.
Zur besseren Handhabung werden die angegebenen Parameter direkt in einer Vorschau dargestellt.
-Alle in diesem Abschnitt angegebenen Parameter sind Optional und werden bei Bedarf durch Standardwerte erg\E4nzt.
+Alle in diesem Abschnitt angegebenen Parameter sind Optional und werden bei Bedarf durch Standardwerte erg&auml;nzt.
</p>
<table class="configtable">
<tr>
@@ -2166,50 +1950,50 @@ Alle in diesem Abschnitt angegebenen Parameter sind Optional und werden bei Beda
<td>#E5E5E5</td>
<td align="center">X</td>
<td align="center">X</td>
- <td>Hintergrundfarbe der B\FCrgerkartenauswahl und Hintergrundfarbe des Java-Applets der Online-BKU (wird &uuml;ber den Security-Layer Request angegeben). Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
+ <td>Hintergrundfarbe der B&uuml;rgerkartenauswahl und Hintergrundfarbe des Java-Applets der Online-BKU (wird &uuml;ber den Security-Layer Request angegeben). Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
</tr>
<tr>
<td>Vordergrundfarbe</td>
<td>#E5E5E5</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
- <td>Vordergrundfarbe (Textfarbe) der B\FCrgerkartenauswahl. Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
+ <td>Vordergrundfarbe (Textfarbe) der B&uuml;rgerkartenauswahl. Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
</tr>
<tr>
- <td>Hintergrundfarbe \DCberschrift</td>
+ <td>Hintergrundfarbe &Uuml;berschrift</td>
<td>#E5E5E5</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
- <td>Hintergrundfarbe der \DCberschrift der B\FCrgerkartenauswahl. Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
+ <td>Hintergrundfarbe der &Uuml;berschrift der B&uuml;rgerkartenauswahl. Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
</tr>
<tr>
- <td>Vordergrundfarbe \DCberschrift</td>
+ <td>Vordergrundfarbe &Uuml;berschrift</td>
<td>#E5E5E5</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
- <td>Vordergrundfarbe (Textfarbe) der \DCberschrift der B\FCrgerkartenauswahl. Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
+ <td>Vordergrundfarbe (Textfarbe) der &Uuml;berschrift der B&uuml;rgerkartenauswahl. Die Angabe der Farbe erfolgt als RGB Wert in hexadezimaler Form.</td>
</tr>
<tr>
- <td>\DCberschriftstext</td>
+ <td>&Uuml;berschriftstext</td>
<td>Anmeldung</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
- <td>Die hier angegebene Zeichenkette wird als \DCberschrift in der B\FCrgerkartenauswahl dargestellt. Es sind jedoch nur Buchstaben, Zahlen und Satzzeichen erlaubt.</td>
+ <td>Die hier angegebene Zeichenkette wird als &Uuml;berschrift in der B&uuml;rgerkartenauswahl dargestellt. Es sind jedoch nur Buchstaben, Zahlen und Satzzeichen erlaubt.</td>
</tr>
<tr>
<td>Targetparameter</td>
<td>&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
- <td>Mit diesem Parameter kann der Redirect-Target welcher im Security-Layer Request an die BKU \FCbergeben wird definiert werden. Die m\F6glichen Parameter sind \E4quivalent zum
+ <td>Mit diesem Parameter kann der Redirect-Target welcher im Security-Layer Request an die BKU &uuml;bergeben wird definiert werden. Die m&ouml;glichen Parameter sind &auml;quivalent zum
html Attribut <i>target</i> (siehe <a href="#import_template_sltemplate">Kapitel 4.3</a>). </td>
</tr>
<tr>
- <td>Appleth\F6he</td>
+ <td>Appleth&ouml;he</td>
<td>220</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
- <td>Mit diesem Parameter kann die H\F6he des Java-Applets der Online-BKU definiert werden. Dieser Parameter &uuml;berschreibt einen in der BKU-Auswahl &uuml;bergebenen Parameter (siehe <a href="#import_template_bku">Kapitel 3.4.1</a>).</td>
+ <td>Mit diesem Parameter kann die H&ouml;he des Java-Applets der Online-BKU definiert werden. Dieser Parameter &uuml;berschreibt einen in der BKU-Auswahl &uuml;bergebenen Parameter (siehe <a href="#import_template_bku">Kapitel 3.4.1</a>).</td>
</tr>
<tr>
<td>Appletbreite</td>
@@ -2223,89 +2007,50 @@ Alle in diesem Abschnitt angegebenen Parameter sind Optional und werden bei Beda
<td>&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
- <td>Dieses Feld erlaubt die Auswahl der gew\FCnschten Schriftart, welche f\FCr die BKU-Auswahl verwendet werden soll. Es kann jedoch nur eine Schriftart gew\E4hlt werden.</td>
+ <td>Dieses Feld erlaubt die Auswahl der gew&uuml;nschten Schriftart, welche f&uuml;r die BKU-Auswahl verwendet werden soll. Es kann jedoch nur eine Schriftart gew&auml;hlt werden.</td>
</tr>
<tr>
<td>Formularschrifttyp (Textfeld)</td>
<td>&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
- <td>Dieses Textfeld erlaubt die Konfiguration eine Liste von Schriftarten, welche f\FCr die BKU-Auswahl verwendet werden soll.
- Die Angabe erfolgt mittels einer durch &quot;<i>,&quot;</i> getrennten Liste, \E4quivalent zur Schriftartendefinition laut HTML Spezifikation</td>
- </tr>
-</table>
-<p>&nbsp;</p>
-<p><strong>Hinweis:</strong> Bei Verwendung einer online-applikationsspezifischen B\FCrgerkartenauswahl stehen alle Parameter die die B\FCrgerkartenauswahl betreffen nicht zur Verf\FCgung.</p>
-<p><strong>Hinweis:</strong> Bei Verwendung eines online-applikationsspezifischen Security-Layer-Request Templates stehen alle Parameter die das SL-Template betreffen nicht zur Verf\FCgung.</p>
-<h5><a name="konfigurationsparameter_oa_additional_encbpk" id="uebersicht_zentraledatei_aktualisierung31"></a>3.2.8.2 Fremd-bPK Konfiguration</h5>
-<p>Dieser Konfigurationsparameter erm&ouml;glicht die Konfiguration eines Key Stores, welcher im Falle einer<a href="../interfederation/interfederation.html"> Anmeldung mittels Single Sign-On Interfederation</a> zur Entschl&uuml;sselung einer verschl&uuml;sselten Fremd-bPK verwendet werden soll. Hierf&uuml;r sind folgende Konfigurationsparameter notwenig.</p>
-<table class="configtable">
- <tr>
- <th>Name</th>
- <th>Beispielwert</th>
- <th>Beschreibung</th>
- </tr>
- <tr>
- <td>KeyStore hochladen</td>
- <td>&nbsp;</td>
- <td>Dateiname des Java Keystore oder PKCS12 Keystore welcher den privaten Schl&uuml;ssel zur Entschl&uuml;sselung von Fremd-bPKs beinhaltet.</td>
- </tr>
- <tr>
- <td><span id="wwlbl_loadOA_BPKEncDecr_keyStorePassword">KeyStore Password</span></td>
- <td>password</td>
- <td>Passwort zum Keystore</td>
- </tr>
- <tr>
- <td><span id="wwlbl_loadOA_BPKEncDecr_keyAlias">Schl&uuml;sselname</span></td>
- <td>pvp_metadata</td>
- <td>Name des Schl&uuml;ssels der zum Entschl&uuml;sseln der Fremd-bPK verwendet werden soll</td>
- </tr>
- <tr>
- <td><span id="wwlbl_loadOA_BPKEncDecr_keyPassword">Schl&uuml;sselpassword</span></td>
- <td>password</td>
- <td>Passwort des Schl&uuml;ssels der zum Entschl&uuml;sseln der Fremd-bPK verwendet werden soll</td>
+ <td>Dieses Textfeld erlaubt die Konfiguration eine Liste von Schriftarten, welche f&uuml;r die BKU-Auswahl verwendet werden soll.
+ Die Angabe erfolgt mittels einer durch &quot;<i>,&quot;</i> getrennten Liste, &auml;quivalent zur Schriftartendefinition laut HTML Spezifikation</td>
</tr>
</table>
<p>&nbsp;</p>
-<p><strong>Hinweis:</strong> Diese Konfiguration ist jedoch nur n&ouml;tig wenn die f&uuml;r das Modul MOA-ID-Auth Interfederation verwendet und von weiteren Identity Providern in der Federation Fremd-bPKs &uuml;bermittelt werden welche bereits im Modul MOA-ID-Auth entschl&uuml;sselt werden sollen (z.B. bei Verwendung von SAML 1 als Authentifizierungsprotokoll). Bei Verwendung von PVP 2.1 und OpenID Connect kann die Fremd-bPK auch direkt an die Online Applikation weitergeben werden wodurch eine Entschl&uuml;sselung auf Seiten des Modules MOA-ID-Auth nicht zwingend notwendig ist.</p>
+<p><strong>Hinweis:</strong> Bei Verwendung einer online-applikationsspezifischen B&uuml;rgerkartenauswahl stehen alle Parameter die die B&uuml;rgerkartenauswahl betreffen nicht zur Verf&uuml;gung.</p>
+<p><strong>Hinweis:</strong> Bei Verwendung eines online-applikationsspezifischen Security-Layer-Request Templates stehen alle Parameter die das SL-Template betreffen nicht zur Verf&uuml;gung.</p>
+<h5><a name="service_revisionslogging" id="uebersicht_zentraledatei_aktualisierung11"></a>3.2.9 Revisionslogging</h5>
+<p>Ab MOA-ID 3.x steht ein erweitertes speziell f&uuml;r Revisionsaufgaben abgestimmtest Logging zur Verf&uuml;gung. &Uuml;ber dieses Feld k&ouml;nnen die zu loggenden Events als CSV codierte Eventcodes konfiguriert werden. Werden keine Eventcodes konfiguriert wird eine in MOA-ID hinterlegte Defaultkonfiguration verwendet. Eine Liste aller m&ouml;glichen Eventcodes finden Sie <a href="../additional/additional.html#revisionslog">hier</a>.</p>
<h3><a name="import_export" id="uebersicht_zentraledatei_aktualisierung4"></a>3.3 Import / Export</h3>
-<p>\DCber diese Funktionalit\E4t besteht die M\F6glichkeit eine bestehende MOA-ID 1.5.1
-Konfiguration in MOA-ID 2.0 zu importieren. Zus\E4tzlich besteht die M\F6glichkeit eine MOA-ID-Auth 2.0
-Konfiguration in ein XML Dokument zu exportieren oder in eine bestehende MOA-ID-Auth 2.0
-XML Konfiguration zu importieren. Eine exportierte MOA-ID-Auth 2.0 XML-Konfiguration kann auch direkt zur Konfiguration des Modules MOA-ID-Auth herangezogen werden (siehe <a href="#basisconfig_moa_id_auth_param_general">Kapitel 2.2.2.1</a>)</p>
+<p>&Uuml;er diese Funktionalit&auml;t besteht die M&ouml;glichkeit eine bestehende MOA-ID 2.x.x
+Konfiguration in MOA-ID 3.x zu importieren. Zus&auml;tzlich besteht die M&ouml;glichkeit eine MOA-ID-Auth 3.0
+Konfiguration in ein Dokument zu exportieren oder in eine bestehende MOA-ID-Auth 3.0
+ Konfiguration zu importieren. </p>
<p><strong>Hinweis:</strong>
Zu beachten ist, dass bei einem Import die aktuell vorhandene
- Konfiguration vollst\E4ndig gel\F6scht und durch die importierte Konfiguration ersetzt wird.
- Es wird empfohlen ein Backup einer eventuell vorhandenen MOA-ID 2.0 Konfiguration
- zu erstellen, bevor eine neue Konfiguration importiert wird. Hierf\FCr kann die
+ Konfiguration vollst&auml;ndig gel&ouml;scht und durch die importierte Konfiguration ersetzt wird.
+ Es wird empfohlen ein Backup einer eventuell vorhandenen MOA-ID 3.0 Konfiguration
+ zu erstellen, bevor eine neue Konfiguration importiert wird. Hierf&uuml;r kann die
Exportfunktion verwendet werden.</p>
-<h4><a name="import_export_legacy" id="uebersicht_zentraledatei_aktualisierung5"></a>3.3.1 Import alter Konfigurationen (&lt;= MOA-ID 1.5.1)</h4>
-<p>Es besteht auch die M&ouml;glichkeit eine bestehende MOA-ID 1.5.1 Konfiguration zu importieren. Da nicht alle neuen Konfigurationsparameter automatisiert aus der MOA-ID 1.5.1 Konfiguration erstellt werden sind f&uuml;r den Importvorgang mehrere Schritte notwendig.</p>
+<h4><a name="import_export_legacy" id="uebersicht_zentraledatei_aktualisierung5"></a>3.3.1 Import alter Konfigurationen ( MOA-ID 2.x.x)</h4>
+<p>Es besteht auch die M&ouml;glichkeit eine bestehende MOA-ID 2.x.x Konfiguration zu importieren. Hierf&uuml;r muss zuerst die bestehende MOA-ID 2.x.x Konfiguration mit Hilfe des in MOA-ID 2.x.x verwendeten Konfigurationstools in eine Datei exportiert werden. Anschlie&szlig;end kann die expotierte Datei in das neue Format konfertiert und wieder in die Konfigurationsdatenbank importiert werden. Die einzelnen Schritte werden in der nachfolgenden Aufz&auml;hlung n&auml;her beschrieben.</p>
<ol>
- <li>Importieren einer bestehenden MOA-ID 1.5.1 Konfiguration mithilfe der Import Funktion des Modules MOA-ID-Configuration. Danach sollten sowohl die allgemeine Konfiguration als auch die Online-Applikationen eingetragen sein. </li>
- <li>Allgemeine Konfiguration: Folgende Punkte der allgemeinen Konfiguration m&uuml;ssen auf jeden Fall kontrolliert und eventuell angepasst werden.
- <ol>
- <li><a href="#konfigurationsparameter_allgemein_publicurlprefix">Public URL Prefix</a>: Dieser Parameter MUSS konfiguriert werden.</li>
- <li><a href="#konfigurationsparameter_allgemein_bku">Default BKU-URLs</a>: Die Konfiguration von Default BKU URLs wird empfohlen.</li>
- <li><a href="#konfigurationsparameter_allgemein_sl-templates">Security-Layer Request Templates</a>: Dieser Parameter MUSS konfiguriert werden.</li>
- <li><a href="#konfigurationsparameter_allgemein_sso">Single Sign-On Einstellungen</a></li>
- <li><a href="#konfigurationsparameter_allgemein_protocol_pvp21">PVP 2.1 Konfiguration</a></li>
- <li><a href="#konfigurationsparameter_allgemein_sltransform">Security-Layer Transformation</a>: Sollte die Security-Layer Transformation (siehe Kapitel 1.3.1.9) nicht korrekt importiert worden sein (Dateiname ist leer) muss diese neu hochgeladen werden. Die aktuelle Transformation befindet sich in der MOA-ID-Auth Defaultkonfiguration im Ordner <em>/conf/moa-id/transforms/ TransformsInfoAuthBlockTable_DE_2.0.xml</em></li>
- </ol>
- </li>
- <li>5. Online-Applikationen: Je nachdem welche Authentifizierungsprotokolle verwendet werden oder wenn Single Sign-On nicht unterst&uuml;tzen werden soll sind &Auml;nderungen an der Online-Applikationskonfiguration erforderlich. Hierf&uuml;r muss die jeweilige Online-Applikation aus der Liste der Online-Applikationen ausw&auml;hlen und die jeweiligen Parameter anpassen.
- <ol>
- <li><a href="#konfigurationsparameter_oa_sso">Single Sign-On</a>: Standardm&auml;&szlig;ig ist Single Sign-On aktiviert.</li>
- <li><a href="#konfigurationsparameter_oa_protocol_pvp21">PVP2 Konfiguration</a>: Soll f&uuml;r die Authentifizierung das PVP2.1 Protokoll verwendet werden, so m&uuml;ssen die PVP2 spezifischen Parameter bei der jeweiligen Online-Applikation eingetragen werden.</li>
- <li><a href="#konfigurationsparameter_oa_protocol_openIDConnect">OponID Connect Konfiguration</a>: Soll f&uuml;r die Authentifizierung das Protokoll OpenID Connect verwendet werden, so m&uuml;ssen alle OpenID Connect spezifischen Parameter bei der jeweiligen Online-Applikation hinterlegt werden.</li>
- <li><a href="#konfigurationsparameter_oa_bku">BKU Konfiguration</a>: Soll f&uuml;r die Online-Applikation spezielle BKU Instanzen verwendet werden, so m&uuml;ssen diese f&uuml;r die Online-Applikation konfiguriert werden. Diese Konfiguration ist auf bei Verwendung von SAML1 als Authentifizierungsprotokoll erforderlich. N&auml;here Informationen finden Sie im jeweiligen Kapitel der Dokumentation.</li>
- </ol>
- </li>
- <li> Wenn alle &Auml;nderungen und Anpassungen abgeschlossen wurden wird ein Neustart des Tomcat, welcher das Module MOA-ID-Auth beinhaltet, empfohlen. Nach dem erfolgreichen Neustart steht die Anmeldung an den registrierten Online-Applikationen bereits zur Verf&uuml;gung. Sollte das Module MOA-ID-Auth nicht erfolgreich starten, muss die Konfiguration, je nach gemeldetem Fehler, erg&auml;nzt oder ge&auml;ndert werden.</li>
-</ol>
+ <li>Exportieren Sie die aktuell in MOA-ID 2.x.x verwendete Konfiguration mit Hilfe der Import/Export Funktionen im Konfigurationstool der MOA-ID Version 2.x.x in eine XML Datei. Diese in eine XML Datei exportierte Konfiguration dient als Basis f&uuml;r die Konvertierung in das neue Format.</li>
+ <li>Konvertieren der Konfigurationsdatei in das neue Konfigurationsformat von MOA-ID 3.x. Die Konvertierung erfolgt mit Hilfe eines Java Programms aus der Konsole. Hierf&uuml;r befindet sich im Release Package das Verzeichnis <code>$MOA_ID_AUTH_INST/migration</code> welches alle ben&ouml;tigten Java Bibliotheken beinhaltet. Das Programm kann mit Hilfe des nachfolgenden Kommantozeilenparameters gestartet werden.
+ <br>
+ <pre>java -jar moa-id-commons.jar -in ../URL_ZUR_MOA-ID-2.x.x-Config -out ./MOA-ID-3.x.properties</pre>
+ Hierbei wird die unter
+ <em>../URL_ZUR_MOA-ID-2.x.x-Config</em> verf&uuml;gbare Konfiguration in das neue Format umgewandelt und in der Datei <em>./MOA-ID-3.x.properties</em> gespeichert.</li>
+ <li>Schreiben der konvertierten Konfiguration in die neue Konfigurationstabelle der Datenbank. Dies erfolgt ebenfall mit Hilfe des mitgelieferten Konsolenprogramms, welches mit dem nachstehenden Kommantozeilenparameter gestartet wird.
+ <pre>java -jar moa-id-commons.jar -in ./MOA-ID-3.x.properties -outdb ./moa-id-webgui.properties</pre>
+ Hierbei wird die unter <em>./MOA-ID-3.x.properties</em> verf&uuml;gbare Konfiguration in die Datenbank geschrieben. Die Zugriffsparameter f&uuml;r den Datenbankzugriff werden aus der Konfigurationsdatei ./moa-id-webgui.properties entnommen, welche Identisch zur Konfiguration des neuen MOA-ID-Configuration Tools der Version 3.0 ist.</li>
+ </ol>
+<p><strong>Hinweis:</strong> Zus&auml;tzlich besteht auch weiterhin die M&ouml;glichkeit eine MOA-ID 2.x.x Konfiguration &uuml;ber die Import/Export Funktion im Konfigurationstool zu importieren. Der Import einer Konfiguration kann jedoch eine l&auml;ngere Zeit in Anspruch nehmen wodurch TimeOut Problemen im Browser m&ouml;glich sind.</p>
<h2><a name="import_template_" id="uebersicht_zentraledatei_Templates"></a>4 Templates</h2>
<p>Dieser Abschnitt spezifiziert den Mindestaufbau der Templates f&uuml;r die BKU Auswahl, die Single Sign-On Anmeldeabfrage und die Security-Layer Request Templates welche vo Module MOA-ID-Auth verwendet werden. Alle hier beschriebenen Templates werden durch MOA-ID-Auth geladen, erweitert und gegeben falls der Benutzerin oder dem Benutzer im Web-Browser dargestellt. Um einen korrekten Anmeldeprozess zu gew&auml;hrleisten m&uuml;ssen diese Templates mindestens folgende Formvorschriften und Strukturen aufweisen.</p>
-<h4><a name="import_template_bku" id="uebersicht_zentraledatei_aktualisierung6"></a>4.1 B\FCrgerkartenauswahl</h4>
+<h4><a name="import_template_bku" id="uebersicht_zentraledatei_aktualisierung6"></a>4.1 B&uuml;rgerkartenauswahl</h4>
<p>Das BKU Template dient im Anmeldeprozess der Auswahl der gew&uuml;nschten B&uuml;rgerkatenumgebung oder Handysignatur. Nach erfolgter Auswahl durch die Benutzer oder dem Benutzer wird diese an MOA-ID-Auth &uuml;bermittelt. </p>
<p><strong>Hinweis:</strong> In der Datei <em>./htmlTemplates/loginFormFull.html</em> welcher sich relativ zur <a href="#uebersicht_bekanntmachung">MOA-ID-Auth Konfigurationsdatei</a> befindet finden Sie das Standard Template welches f&uuml;r den Anmeldevorgang verwendet wird, wenn kein online-applikationsspezifisches Template hinterlegt wurde. Dieses Standard Template unterst&uuml;tzt Responsive Design und passt sich somit in einem weiten Bereich an die aktuelle Fenstergr&ouml;&szlig;e an.</p>
<p>F&uuml;r die &Uuml;bermittlung an MOA-ID-Auth ist ein http GET Request vorgesehen welcher folgende Parameter unterst&uuml;tzt. Die URL dieses http GET Request wird automatisiert &uuml;ber den Parameter &bdquo;#AUTH_URL#&ldquo; (ohne &bdquo;&ldquo;) eingetragen und muss nicht manuell hinterlegt werden. Folgende http GET Parameter werden f&uuml;r die BKU-Auswahl akzeptiert.</p>
diff --git a/id/server/doc/handbook/index.html b/id/server/doc/handbook/index.html
index 497120fec..3784075a3 100644
--- a/id/server/doc/handbook/index.html
+++ b/id/server/doc/handbook/index.html
@@ -29,7 +29,7 @@
</div>
<div class="container">
- <h2>&Uuml;bersicht zur Dokumentation der Version 2.2.1 </h2>
+ <h2>&Uuml;bersicht zur Dokumentation der Version 3.0.x </h2>
<dl>
<dt><a href="./intro/intro.html">Einf&uuml;hrung</a></dt>
diff --git a/id/server/doc/handbook/install/install.html b/id/server/doc/handbook/install/install.html
index f669af2a6..aa4114539 100644
--- a/id/server/doc/handbook/install/install.html
+++ b/id/server/doc/handbook/install/install.html
@@ -105,7 +105,7 @@
<dt>Installation von Apache Tomcat</dt>
<dd> Installieren Sie Apache Tomcat in ein Verzeichnis, das keine Leerzeichen im Pfadnamen enth&auml;lt. Verwenden Sie bitte die zu Ihrer Java SE passende Distribution von Tomcat. Das Wurzelverzeichnis der Tomcat-Installation wird im weiteren Verlauf als <code>$CATALINA_HOME</code> bezeichnet.</dd>
<dt>Entpacken der MOA-ID-Auth Webservice Distribution</dt>
- <dd> Entpacken Sie die Datei <code>moa-id-auth-2.0.0.zip</code> in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als <code>$MOA_ID_AUTH_INST</code> bezeichnet. </dd>
+ <dd> Entpacken Sie die Datei <code>moa-id-auth-3.0.0.zip</code> in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als <code>$MOA_ID_AUTH_INST</code> bezeichnet. </dd>
<dt>Installation der Kryptographiebibliotheken von SIC/IAIK</dt>
<dd>
<p>Kopieren Sie alle Dateien aus dem Verzeichnis <code>$MOA_ID_AUTH_INST/ext</code> in das Verzeichnis <code>$JAVA_HOME/jre/lib/ext</code>. Zus&auml;tzlich m&uuml;ssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden <span class="term">Unlimited Strength
@@ -114,7 +114,7 @@
Jurisdiction Policy Files</span> von der <a href="http://java.com/download" target="_blank">Java SE Downloadseite </a>und achten Sie darauf die f&uuml;r ihre verwendete Java SE Installation richtige Version zu nehmen. Anschlie&szlig;end folgen Sie der darin enthaltenen Installationsanweisung. </p>
</dd>
<dt>Installation einer Datenbank</dt>
- <dd>F&uuml;r den Betrieb von MOA-ID 2.0 wird eine Datenbank ben&ouml;tigt, wobei mySQL als Datenbank empfohlen wird (wurde mit mySQL getestet). Der Einsatz eines alternativen Datenbanksystems ist jedoch ebenfalls m&ouml;glich. F&uuml;r den Betrieb werden mindestens zwei getrennte Datenbank Schema ben&ouml;tig, da die Konfiguration und die Session Informationen getrennt abgelegt werden. Erstellen Sie zwei Datenbank Schemas welche von MOA-ID-Auth verwendet werden sollen. Deren Namen k&ouml;nnen z.B. auf <em>moa-id-session</em> f&uuml;r Sessiondaten und <em>moa-id-config</em> f&uuml;r die Konfiguration lauten. Beliebige andere Namen f&uuml;r die Datenbank Schema sind jedoch auch m&ouml;glich.
+ <dd>F&uuml;r den Betrieb von MOA-ID 3.x wird eine Datenbank ben&ouml;tigt, wobei mySQL als Datenbank empfohlen wird (wurde mit mySQL getestet). Der Einsatz eines alternativen Datenbanksystems ist jedoch ebenfalls m&ouml;glich. F&uuml;r den Betrieb werden mindestens zwei getrennte Datenbank Schema ben&ouml;tig, da die Konfiguration und die Session Informationen getrennt abgelegt werden. Erstellen Sie zwei Datenbank Schemas welche von MOA-ID-Auth verwendet werden sollen. Deren Namen k&ouml;nnen z.B. auf <em>moa-id-session</em> f&uuml;r Sessiondaten und <em>moa-id-config</em> f&uuml;r die Konfiguration lauten. Beliebige andere Namen f&uuml;r die Datenbank Schema sind jedoch auch m&ouml;glich.
</dd>
</dl>
<h5><a name="webservice_basisinstallation_installation_tomcatconfig" id="webservice_basisinstallation_installation_tomcatconfig"></a>2.1.2.2 Konfiguration von Apache Tomcat</h5>
@@ -143,6 +143,7 @@
<li><code>moa.spss.server.configuration</code>: Pfad und Name der zentralen Konfigurationsdatei f&uuml;r MOA SP/SS. Eine beispielhafte Konfigurationsdatei finden Sie <a href="../../../conf/moa-spss/SampleMOASPSSConfiguration.xml">hier</a>. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/conf</code> enthaltene Default-Konfiguration herangezogen.</li>
<li><code>eu.stork.samlengine.config.location</code>: Pfad auf den Ordner mit den zentralen Konfigurationsdateien f&uuml;r STORK. Die Beispielkonfiguration f&uuml;r das Modul MOA-ID-Auth enth&auml;lt bereits den<a href="../../../conf/moa-id/stork/"> Ordner f&uuml;r die STORK Konfiguration</a>. </li>
<li id="klein"><code>log4j.configuration</code>: URL der Log4j Konfigurationsdatei. Eine beispielhafte Log4j-Konfiguration finden Sie <a href="../../../conf/moa-id/log4j.properties">hier</a>. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/classes</code> enthaltene Default-Konfiguration herangezogen.</li>
+ <li><code>-Dlogback.configurationFile</code>: URL der LogBack Konfigurationsdatei. Eine beispielhafte LobBack-Konfiguration finden Sie <a href="../../../conf/moa-id/logback_config.xml">hier</a>. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/classes</code> enthaltene Default-Konfiguration herangezogen. &Uuml;berdies besteht die M&ouml;glichkeit eine bestehende Log44 Konfigurationsdatei in der LogBack Format zu &uuml;berf&uuml;hren (<a href="http://logback.qos.ch/translator/">http://logback.qos.ch/translator/</a>). </li>
<li id="klein"><code>javax.net.ssl.trustStore</code>: Pfad und Dateiname des <span class="term">Truststores</span> f&uuml;r vertrauensw&uuml;rdige SSL Zertifikate. Die SSL Serverzertifikate der Server von denen mittels https Dateien bezogen werden m&uuml;ssen im Truststore abgelegt werden. Ein relativer Pfad werden relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert.</li>
<li id="klein"><code>javax.net.ssl.trustStorePassword</code>: Passwort f&uuml;r den <span class="term">Truststore</span> (optional; nur, wenn SSL Client-Authentisierung durchgef&uuml;hrt werden soll). </li>
<li id="klein"><code>javax.net.ssl.trustStoreType</code>: Truststore-Typ (optional; nur, wenn SSL Client-Authentisierung durchgef&uuml;hrt werden soll). Je nach verwendetem Keystore-Typ muss <code>jks</code> (<span class="term">Java Key Store</span>) oder <code>pkcs12</code> (PKCS#12-Datei) angegeben werden.</li>
@@ -151,14 +152,16 @@
</ul>
<h6><a name="moa_id_configuration_deploy" id="webservice_basisinstallation_installation_spssdeploy2"></a>2.1.2.4 Einsatz des Moduls MOA-ID-Configuration in Tomcat</h6>
<ul>
- <li>Die Datei <code>$MOA_ID_AUTH_INST/moa-id_configuration.war</code> enth&auml;lt das einsatzfertige MOA-ID-Configuration Webarchiv und muss ins Verzeichnis <code>$CATALINA_HOME/webapps</code> kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis <code>$CATALINA_HOME/webapps/moa-id-configuration</code> entpackt. </li>
+ <li>Die Datei <code>$MOA_ID_AUTH_INST/egiz-configuration-webapp.war</code> enth&auml;lt das einsatzfertige MOA-ID-Configuration Webarchiv und muss ins Verzeichnis <code>$CATALINA_HOME/webapps</code> kopiert werden. Dort wird sie beim ersten Start von Tomcat automatisch ins Verzeichnis <code>$CATALINA_HOME/webapps/egiz-configuration-webapp</code> entpackt. </li>
<li>Die Konfigurationsdatei mit der Basiskonfiguration f&uuml;r MOA-ID-Auth und die zugeh&ouml;rigen Verzeichnisse m&uuml;ssen in ein beliebiges Verzeichnis im Dateisystem kopiert werden (z.B. <code>$CATALINA_HOME/conf/moa-id-configuration</code>). Eine funktionsf&auml;hige Konfiguration, die als Ausgangspunkt f&uuml;r die Basiskonfiguration des MOA-ID-Auth Modules dienen kann, finden Sie <a href="../../../conf/moa-id-configuration/moa-id-configtool.properties">hier</a>. <br>
</li>
<li> Die Dateien <code>xalan.jar</code>, <code>xercesImpl.jar, serializer.jar </code> und <code>xml-apis.jar</code> aus dem Verzeichnis <code>$MOA_ID_AUTH_INST/endorsed</code> m&uuml;ssen in das Tomcat-Verzeichnis <code>$CATALINA_HOME/endorsed</code> (bzw. <code>$CATALINA_HOME/common/endorsed</code> bis Apache Tomcat Version 5.5) kopiert werden. Sind gleichnamige Dateien dort bereits vorhanden, m&uuml;ssen sie &uuml;berschrieben werden. Die ggf. in diesem Verzeichnis vorhandene Datei <code>xmlParserAPIs.jar</code> muss gel&ouml;scht werden. Sollte das Verzeichnis <code>endorsed</code> nicht vorhanden sein, dann muss dieses zuerst erstellt werden.</li>
<li>Folgende <span class="term">System Properties</span> k&ouml;nnen gesetzt werden (wird beim Starten von Tomcat der <span class="term">Java Virtual Machine</span> in der Umgebungsvariablen <code>CATALINA_OPTS</code> in der Form <code>-D&lt;name&gt;=&lt;wert&gt;</code> &uuml;bergeben):
<ul>
<li><code>moa.id.webconfig</code>: Pfad und Name der Basiskonfigurationsdatei f&uuml;r MOA-ID-Configuration. Eine beispielhafte Konfigurationsdatei finden Sie <a href="../../../conf/moa-id-configuration/moa-id-configtool.properties">hier</a>. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert.</li>
+ <li><code>-Duser.properties</code>: Pfad und Name der Basiskonfigurationsdatei f&uuml;r das Usermanagement der Konfigurationsoberfl&auml;che. Eine beispielhafte Konfigurationsdatei finden Sie <a href="../../../conf/moa-id-configuration/userdatabase.properties">hier</a>. Wird ein relativer Pfad angegeben, wird dieser relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert.</li>
<li><code>log4j.configuration</code>: URL der Log4j Konfigurationsdatei. Eine beispielhafte Log4j-Konfiguration finden Sie <a href="../../../conf/moa-id/log4j.properties">hier</a>. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/classes</code> enthaltene Default-Konfiguration herangezogen.</li>
+ <li><code>-Dlogback.configurationFile</code>: URL der LogBack Konfigurationsdatei. Eine beispielhafte LobBack-Konfiguration finden Sie <a href="../../../conf/moa-id/logback_config.xml">hier</a>. Wird eine relative URL angegeben, wird diese als File-URL relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert. Ist diese <span class="term">System Property</span> nicht gesetzt, wird automatisch eine im Webarchiv unter <code>WEB-INF/classes</code> enthaltene Default-Konfiguration herangezogen. &Uuml;berdies besteht die M&ouml;glichkeit eine bestehende Log44 Konfigurationsdatei in der LogBack Format zu &uuml;berf&uuml;hren (<a href="http://logback.qos.ch/translator/">http://logback.qos.ch/translator/</a>).</li>
<li><code>javax.net.ssl.trustStore</code>: Pfad und Dateiname des <span class="term">Truststores</span> f&uuml;r vertrauensw&uuml;rdige SSL Zertifikate Die SSL Serverzertifikate der Server von denen mittels https Dateien bezogen werden m&uuml;ssen im Truststore abgelegt werden. Ein relativer Pfad werden relativ zum Startverzeichnis der <span class="term">Java Virtual Machine</span> interpretiert.</li>
<li><code>javax.net.ssl.trustStorePassword</code>: Passwort f&uuml;r den <span class="term">Truststore</span> (optional; nur, wenn SSL Client-Authentisierung durchgef&uuml;hrt werden soll). </li>
<li><code>javax.net.ssl.trustStoreType</code>: Truststore-Typ (optional; nur, wenn SSL Client-Authentisierung durchgef&uuml;hrt werden soll). Je nach verwendetem Keystore-Typ muss <code>jks</code> (<span class="term">Java Key Store</span>) oder <code>pkcs12</code> (PKCS#12-Datei) angegeben werden.</li>
@@ -184,17 +187,17 @@ gestartet werden. Das Stoppen von Tomcat erfolgt analog mit
<pre>32131 [localhost-startStop-1] INFO moa.id.auth - MOA ID Authentisierung wurde erfolgreich gestartet
32131 [localhost-startStop-1] INFO moa.id.auth - Dispatcher Servlet initialization finished.</pre>
<p>Analog bei MOA-ID-Configuration</p>
-<pre>INFO at.gv.egovernment.moa.id.configuration.config.ConfigurationProvider - MOA-ID-Configuration initialization completed</pre>
+<pre>INFO | 21 10:16:22 | localhost-startStop-1 | Loading config module: MOAIDConfigurationModul</pre>
<p>Bei leichten Fehlern in der Konfiguration geben <code>WARN</code> Log-Meldungen unmittelbar davor Aufschluss &uuml;ber fehlerhafte Konfigurations-Eintr&auml;ge.
Nach dem Starten von Tomcat stehen MOA-ID-Auth und MOA-ID-Configuration zur Verf&uuml;gung. Die Einsprungspunkte der unterschiedlichen Authentifizierungsprotokolle von MOA-ID-Auth werden im Abschnitt <a href="../protocol/protocol.html">Protokolle</a> im Detail beschrieben.</p>
<pre>
http://&lt;host&gt;:&lt;port&gt;/moa-id-auth/
-http://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/</pre>
+http://&lt;host&gt;:&lt;port&gt;/egiz-configuration-webapp/</pre>
<p>bzw.
</p>
<pre>
https://&lt;host&gt;:&lt;port&gt;/moa-id-auth/
-https://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/</pre>
+https://&lt;host&gt;:&lt;port&gt;/egiz-configuration-webapp/</pre>
<p>Die Verf&uuml;gbarkeit des Services k&ouml;nnen Sie einfach &uuml;berpr&uuml;fen, indem Sie die Endpunkte mit einem Web-Browser aufgerufen; dies sollte nach erfolgreichem Start zur Anzeige einer Informationsseite f&uuml;hren. </p>
<h5><a name="webservice_basisinstallation_logging" id="webservice_basisinstallation_logging"></a>2.1.3 Logging </h5>
<p>Beide Module verwenden <a href="#referenziertesoftware">Log4j</a> f&uuml;r die Ausgabe von Log-Meldungen am Bildschirm bzw. in Log-Dateien. Log4j bietet zahlreiche Konfigurationsm&ouml;glichkeiten, die ausf&uuml;hrlich im Log4j Handbuch beschrieben sind. Unter anderem gibt es die M&ouml;glichkeit, folgende Einstellungen vorzunehmen:
@@ -212,12 +215,18 @@ https://&lt;host&gt;:&lt;port&gt;/moa-id-configuration/</pre>
<p>Hierbei werden folgende Log-Hierarchien verwendet: </p>
<ul>
<li>
- <p><code>at.gv.egovernment.moa.id.configuration</code> f&uuml;r alle Log-Meldungen aus MOA-ID-Configuration</p>
+ <p><code>at.gv.egiz.components.configuration</code> f&uuml;r Log-Meldungen aus allgemeinen EGIZ KonfigurationsGUI</p>
</li>
- <li><code>moa.id.auth</code> f&uuml;r alle Log-Meldungen aus MOA-ID-Auth </li>
<li>
- <p><code>moa.spss.server</code> f&uuml;r alle Log-Meldungen aus dem MOA/SPSS </p>
+ <p><code>at.gv.egovernment.moa.id.configuration</code> f&uuml;r Log-Meldungen aus MOA-ID Configurationsmodul</p>
</li>
+ <li><code>at.gv.egovernment.moa.id</code> f&uuml;r alle Log-Meldungen aus MOA-ID-Auth </li>
+ <li>
+ <p><code>at.gv.egovernment.moa.spss</code> f&uuml;r alle Log-Meldungen aus dem MOA/SPSS </p>
+ </li>
+ <li>
+ <p><code>at.gv.egiz.eventlog.plain.all</code> f&uuml;r alle Log-Meldungen aus dem MOA-ID EventLog zur Revisionssicherung</p>
+ </li>
<li>
<p><code>iaik.server</code> f&uuml;r alle Log-Meldungen aus den SIC/IAIK Kryptographie-Modulen. </p>
</li>
diff --git a/id/server/doc/htmlTemplates/BKU-selection.html b/id/server/doc/htmlTemplates/BKU-selection.html
index d0af6401b..123a23837 100644
--- a/id/server/doc/htmlTemplates/BKU-selection.html
+++ b/id/server/doc/htmlTemplates/BKU-selection.html
@@ -15,13 +15,17 @@
text-align: center;
background-color: #6B7B8B;
}
+
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU p {
font-size: 0.7em;
}
#localBKU input{
- font-size: 0.7em;
+ font-size: 0.85em;
/*border-radius: 5px;*/
}
@@ -142,6 +146,8 @@
margin-bottom: 10px;
}
+
+
#validation {
position: absolute;
bottom: 0px;
@@ -154,7 +160,10 @@
@media screen and (max-width: 205px) {
#localBKU p {
font-size: 0.6em;
- }
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.6em;
@@ -191,6 +200,9 @@
#localBKU p {
font-size: 0.7em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.7em;
@@ -227,6 +239,9 @@
#localBKU p {
font-size: 0.9em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
@@ -257,7 +272,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -288,7 +305,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -327,7 +346,9 @@
font-size: 100%;
background-color: #MAIN_BACKGOUNDCOLOR#;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#page {
visibility: hidden;
margin-top: 0%;
@@ -464,12 +485,11 @@
}
#localBKU {
- padding-left: 5%;
- padding-right: 2%;
padding-bottom: 4%;
/*padding-top: 4%;*/
position: relative;
- clear: both;
+ clear: both;
+ text-align: center;
}
#bkukarte {
@@ -526,13 +546,13 @@
#localBKU input {
/* color: #BUTTON_COLOR#; */
- border: 0px;
+ /*border: 0px;*/
display: inline-block;
}
#localBKU input:hover, #localBKU input:focus, #localBKU input:active {
- text-decoration: underline;
+ /*text-decoration: underline;*/
}
#installJava, #BrowserNOK {
@@ -727,6 +747,56 @@
}
}
+
+ function checkIfBrowserSupportsJava(){
+ console.log("Browser is Chrome: "+checkIfBrowserIsChrome());
+ console.log("Browser is Safari: "+checkIfBrowserIsSafari());
+ console.log("Browser is Edge: "+checkIfBrowserIsEdge());
+
+ var cnt = 0;
+
+ if(checkIfBrowserIsChrome())cnt++;
+ if(checkIfBrowserIsEdge())cnt++;
+ if(checkIfBrowserIsSafari())cnt++;
+
+ if(cnt==0 || cnt>1)//cnt>1 means perhaps wrong detection
+ return true;
+
+ var image = document.getElementById("bkuimage");
+ var srcatt = image.getAttribute("src");
+ var last = srcatt.substring(srcatt.lastIndexOf('/')+1);
+ srcatt = srcatt.replace(last,'online-bku-deactivated.png');
+ image.setAttribute("src",srcatt);
+
+
+ var button = document.getElementsByName("bkuButtonOnline")[0];
+ button.setAttribute("class","browserInfoButton");
+ button.setAttribute("title","Java wird nicht unterstützt, klicken für mehr Informationen.");
+ button.setAttribute("onClick","alert('Java wird von Ihrem Browser nicht unterstützt, ist jedoch für den Betrieb der Online Bürgerkartenumgebung notwendig.\\nWollen Sie dennoch die Online Bürgerkartenumgebung verwenden, wird zur Zeit Java noch von Firefox und MS Internet Explorer unterstützt. \\nAlternativ koennen Sie auch eine lokale Bürgerkartenumgebung verwenden, verfügbar unter www.buergerkarte.at.');");
+
+ return false;
+
+ }
+ function checkIfBrowserIsChrome(){
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = false;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && webstore_defined;
+ }
+ function checkIfBrowserIsEdge(){//edge also defines the chrome object, but not the webapp
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = true;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && !webstore_defined;
+ }
+ function checkIfBrowserIsSafari(){
+ var cond1 = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
+ return cond1;
+ }
/* function setSSOSelection() {
document.getElementById("useSSO").value = "false";
var checkbox = document.getElementById("SSOCheckBox");
@@ -754,7 +824,7 @@
</script>
<title>Anmeldung mittels Bürgerkarte oder Handy-Signatur</title>
</head>
-<body onload="onChangeChecks();" onresize="onChangeChecks();">
+<body onload="onChangeChecks();checkIfBrowserSupportsJava();" onresize="onChangeChecks();">
<div id="page">
<div id="page1" class="case selected-case" role="main">
<h2 class="OA_header" role="heading">Anmeldung an: #OAName#</h2>
@@ -779,7 +849,7 @@
</div>
<div id="bkuselectionarea">
<div id="bkukarte">
- <img class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
+ <img id="bkuimage" class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
alt="OnlineBKU" /> <input name="bkuButtonOnline" type="button"
onClick="bkuOnlineClicked();" tabindex="2" role="button"
value="Karte" />
@@ -801,9 +871,8 @@
name="MODUL" value="#MODUL#"> <input type="hidden"
name="ACTION" value="#ACTION#"> <input type="hidden"
name="MOASessionID" value="#SESSIONID#">
- <input type="submit" value=">lokale Bürgerkartenumgebung" tabindex="4"
- role="button" class="hell"
- onclick="setMandateSelection();"
+ <input type="submit" value=" Lokale Bürgerkartenumgebung " tabindex="4"
+ role="button" onclick="setMandateSelection();"
>
<!--p>
<small>Alternativ können Sie eine lokal installierte BKU verwenden.</small>
@@ -837,7 +906,7 @@
src="#CONTEXTPATH#/img/valid-html5-blue.png" alt="HTML5 ist valide!" />
</a> <a href="http://jigsaw.w3.org/css-validator/"> <img
style="border: 0; width: 88px; height: 31px"
- src="https://jigsaw.w3.org/css-validator/images/vcss-blue"
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
alt="CSS ist valide!" />
</a>
</div>
diff --git a/id/server/idserverlib/pom.xml b/id/server/idserverlib/pom.xml
index 15a991700..7b3bc0841 100644
--- a/id/server/idserverlib/pom.xml
+++ b/id/server/idserverlib/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>MOA.id</groupId>
<artifactId>moa-id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -46,8 +46,26 @@
</dependency>
<dependency>
+ <groupId>at.gv.egiz.components</groupId>
+ <artifactId>eventlog-api</artifactId>
+ <version>0.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>at.gv.egiz.components</groupId>
+ <artifactId>eventlog-slf4j</artifactId>
+ <version>0.4</version>
+ </dependency>
+
+ <dependency>
<groupId>MOA.id.server</groupId>
<artifactId>moa-id-commons</artifactId>
+<!-- <exclusions>
+ <exclusion>
+ <artifactId>hyperjaxb3-ejb-runtime</artifactId>
+ <groupId>org.jvnet.hyperjaxb3</groupId>
+ </exclusion>
+ </exclusions> -->
</dependency>
<dependency>
@@ -117,17 +135,7 @@
<artifactId>axis</artifactId>
</dependency>
-<!-- <dependency>
- <groupId>org.glassfish.metro</groupId>
- <artifactId>webservices-tools</artifactId>
- <version>2.3</version>
- </dependency> -->
-<!-- <dependency>
- <groupId>org.glassfish.metro</groupId>
- <artifactId>webservices-rt</artifactId>
- <version>2.3</version>
- </dependency> -->
-
+
<dependency>
<groupId>at.gv.util</groupId>
<artifactId>egovutils</artifactId>
@@ -199,6 +207,12 @@
<artifactId>xalan</artifactId>
<!-- should be provided by the container or jre -->
<scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>serializer</artifactId>
+ <groupId>xalan</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>xerces</groupId>
@@ -258,6 +272,22 @@
<version>1.7.6</version>
</dependency> -->
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.unitils</groupId>
+ <artifactId>unitils-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>MOA</groupId>
+ <artifactId>moa-common</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
@@ -442,6 +472,23 @@
</exclusions>
</dependency>
+ <!-- the core, which includes Streaming API, shared low-level abstractions (but NOT data-binding) -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+ <!-- databinding; ObjectMapper, JsonNode and related classes are here -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </dependency>
+
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
@@ -478,6 +525,20 @@
<version>${org.apache.commons.lang3.version}</version>
</dependency>
+<!-- <dependency>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>runtime</artifactId>
+ <version>0.4.1.5</version>
+ </dependency> -->
+
+<!-- <dependency>
+ <groupId>org.jvnet.jaxb2_commons</groupId>
+ <artifactId>jaxb2-basics-runtime</artifactId>
+ <version>0.9.4</version>
+ </dependency> -->
+
+
+
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventConstants.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventConstants.java
new file mode 100644
index 000000000..d5d0a3ab1
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventConstants.java
@@ -0,0 +1,97 @@
+/*
+ * 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.advancedlogging;
+
+import at.gv.egiz.components.eventlog.api.EventConstants;
+
+/**
+ * @author tlenz
+ *
+ *Defines Constants for Event Logging
+ *
+ *Event codes from 3000 to 9999 can be defined here
+ *
+ */
+public interface MOAIDEventConstants extends EventConstants {
+
+ //auth protocol specific information
+ public static final int AUTHPROTOCOL_TYPE = 3000;
+
+ public static final int AUTHPROTOCOL_PVP_METADATA = 3100;
+ public static final int AUTHPROTOCOL_PVP_REQUEST_AUTHREQUEST = 3101;
+ public static final int AUTHPROTOCOL_PVP_REQUEST_AUTHRESPONSE = 3102;
+ public static final int AUTHPROTOCOL_PVP_REQUEST_SLO = 3103;
+ public static final int AUTHPROTOCOL_PVP_REQUEST_ATTRIBUTQUERY = 3104;
+
+ public static final int AUTHPROTOCOL_OPENIDCONNECT_AUTHREQUEST = 3200;
+ public static final int AUTHPROTOCOL_OPENIDCONNECT_TOKENREQUEST = 3201;
+
+ public static final int AUTHPROTOCOL_SAML1_AUTHNREQUEST = 3300;
+
+ //authentication process information
+ public static final int AUTHPROCESS_START = 4000;
+ public static final int AUTHPROCESS_FINISHED = 4001;
+ public static final int AUTHPROCESS_MANDATES_REQUESTED = 4002;
+ public static final int AUTHPROCESS_STORK_REQUESTED = 4003;
+ public static final int AUTHPROCESS_SSO = 4004;
+ public static final int AUTHPROCESS_SSO_INVALID = 4005;
+ public static final int AUTHPROCESS_SSO_ASK_USER_START = 4006;
+ public static final int AUTHPROCESS_SSO_ASK_USER_FINISHED = 4007;
+ public static final int AUTHPROCESS_INTERFEDERATION = 4008;
+ public static final int AUTHPROCESS_INTERFEDERATION_REVEIVED = 4009;
+ public static final int AUTHPROCESS_INTERFEDERATION_IDP = 4010;
+ public static final int AUTHPROCESS_SERVICEPROVIDER = 4011;
+
+ public static final int AUTHPROCESS_BKUSELECTION_INIT = 4110;
+ public static final int AUTHPROCESS_BKUTYPE_SELECTED = 4111;
+ public static final int AUTHPROCESS_BKU_URL = 4112;
+ public static final int AUTHPROCESS_BKU_DATAURL_IP = 4113;
+
+ public static final int AUTHPROCESS_IDL_VALIDATED = 4220;
+ public static final int AUTHPROCESS_CERTIFICATE_VALIDATED = 4221;
+ public static final int AUTHPROCESS_AUTHBLOCK_VALIDATED = 4222;
+ public static final int AUTHPROCESS_FOREIGN_FOUND = 4223;
+ public static final int AUTHPROCESS_FOREIGN_SZRGW_CONNECTED = 4224;
+ public static final int AUTHPROCESS_FOREIGN_SZRGW_RECEIVED = 4225;
+
+ public static final int AUTHPROCESS_MANDATE_SERVICE_REQUESTED = 4300;
+ public static final int AUTHPROCESS_MANDATE_REDIRECT = 4301;
+ public static final int AUTHPROCESS_MANDATE_RECEIVED = 4302;
+
+ public static final int AUTHPROCESS_PEPS_REQUESTED = 4400;
+ public static final int AUTHPROCESS_PEPS_RECEIVED = 4401;
+ public static final int AUTHPROCESS_PEPS_IDL_RECEIVED = 4402;
+
+ //person information
+ public static final int PERSONAL_INFORMATION_PROF_REPRESENTATIVE_BPK = 5000;
+ public static final int PERSONAL_INFORMATION_PROF_REPRESENTATIVE = 5001;
+ public static final int PERSONAL_INFORMATION_USERNAME_HASH = 5002;
+
+ public static final int PERSONAL_INFORMATION_MANDATE_TYPE = 5100;
+ public static final int PERSONAL_INFORMATION_MANDATE_MANDATOR_TYPE = 5101;
+ public static final int PERSONAL_INFORMATION_MANDATE_MANDATOR_HASH = 5102;
+ public static final int PERSONAL_INFORMATION_MANDATE_MANDATOR_BASEID = 5103;
+
+
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventLog.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventLog.java
new file mode 100644
index 000000000..6e09ea439
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAIDEventLog.java
@@ -0,0 +1,47 @@
+/*
+ * 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.advancedlogging;
+
+import at.gv.egiz.components.eventlog.api.Event;
+import at.gv.egiz.components.eventlog.api.EventLogFactory;
+import at.gv.egiz.components.eventlog.api.EventLoggingException;
+import at.gv.egovernment.moa.logging.Logger;
+
+/**
+ * @author tlenz
+ *
+ */
+public class MOAIDEventLog extends EventLogFactory {
+
+ public static void logEvent(Event event) {
+ try {
+ getEventLog().logEvent(event);
+
+ } catch (EventLoggingException e) {
+ Logger.warn("Event logging FAILED!", e);
+
+ }
+
+ }
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java
new file mode 100644
index 000000000..77105d77e
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java
@@ -0,0 +1,265 @@
+/*
+ * 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.advancedlogging;
+
+import java.security.MessageDigest;
+import java.util.Date;
+import java.util.List;
+
+import com.google.common.primitives.Ints;
+
+import at.gv.e_government.reference.namespace.mandates._20040701_.Mandate;
+import at.gv.egovernment.moa.id.auth.data.IdentityLink;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.util.client.mis.simple.MISMandate;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class MOAReversionLogger {
+
+ private static MOAReversionLogger instance = null;
+
+ private static final List<Integer> defaultEventCodes = Ints.asList(
+ MOAIDEventConstants.SESSION_CREATED,
+ MOAIDEventConstants.SESSION_DESTROYED,
+ MOAIDEventConstants.SESSION_ERROR,
+ MOAIDEventConstants.TRANSACTION_CREATED,
+ MOAIDEventConstants.TRANSACTION_DESTROYED,
+ MOAIDEventConstants.TRANSACTION_ERROR,
+ MOAIDEventConstants.TRANSACTION_IP,
+ MOAIDEventConstants.AUTHPROTOCOL_TYPE,
+ MOAIDEventConstants.AUTHPROTOCOL_PVP_METADATA,
+
+ MOAIDEventConstants.AUTHPROCESS_START,
+ MOAIDEventConstants.AUTHPROCESS_FINISHED,
+ MOAIDEventConstants.AUTHPROCESS_BKU_URL,
+ MOAIDEventConstants.AUTHPROCESS_BKU_DATAURL_IP,
+ MOAIDEventConstants.AUTHPROCESS_IDL_VALIDATED,
+ MOAIDEventConstants.AUTHPROCESS_CERTIFICATE_VALIDATED,
+ MOAIDEventConstants.AUTHPROCESS_AUTHBLOCK_VALIDATED,
+ MOAIDEventConstants.AUTHPROCESS_SSO,
+ MOAIDEventConstants.AUTHPROCESS_INTERFEDERATION,
+ MOAIDEventConstants.AUTHPROCESS_STORK_REQUESTED,
+ MOAIDEventConstants.AUTHPROCESS_SERVICEPROVIDER
+ );
+
+ public static synchronized MOAReversionLogger getInstance() {
+ if (instance == null) {
+ instance = new MOAReversionLogger();
+ MOAIDEventLog.reload();
+
+ }
+
+ return instance;
+ }
+
+ public void logEvent(IOAAuthParameters oaConfig,
+ int eventCode, String message) {
+ if (selectOASpecificEventCodes(oaConfig).contains(eventCode))
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode, message));
+ }
+
+ public void logEvent(IOAAuthParameters oaConfig, IRequest pendingRequest,
+ int eventCode) {
+ if (selectOASpecificEventCodes(oaConfig).contains(eventCode))
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode,
+ pendingRequest.getSessionIdentifier(),
+ pendingRequest.getRequestID()));
+
+ }
+
+ public void logEvent(IOAAuthParameters oaConfig, IRequest pendingRequest,
+ int eventCode, String message) {
+ if (selectOASpecificEventCodes(oaConfig).contains(eventCode))
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode,
+ message,
+ pendingRequest.getSessionIdentifier(),
+ pendingRequest.getRequestID()
+ ));
+
+ }
+
+ /**
+ * @param sessionCreated
+ * @param uniqueSessionIdentifier
+ */
+ public void logEvent(int eventCode, String message) {
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode, message));
+
+ }
+
+ /**
+ * @param sessionCreated
+ * @param uniqueSessionIdentifier
+ */
+ public void logEvent(String sessionID, String transactionID, int eventCode, String message) {
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode, message, sessionID, transactionID));
+
+ }
+
+ /**
+ * @param sessionCreated
+ * @param uniqueSessionIdentifier
+ */
+ public void logEvent(String sessionID, String transactionID, int eventCode) {
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode, sessionID, transactionID));
+
+ }
+
+ /**
+ * @param errorRequest
+ * @param transactionError
+ */
+ public void logEvent(IRequest pendingRequest, int eventCode) {
+ MOAIDEventLog.logEvent(MOAIDEventLog.createNewEvent(new Date().getTime(), eventCode,
+ pendingRequest.getSessionIdentifier(),
+ pendingRequest.getRequestID()));
+
+ }
+
+ public void logEvent(IRequest pendingRequest, int eventCode, String message) {
+ logEvent(pendingRequest.getOnlineApplicationConfiguration(),
+ pendingRequest, eventCode, message);
+
+ }
+
+ public void logMandateEventSet(IRequest pendingReq, MISMandate mandate) {
+ if (MiscUtil.isNotEmpty(mandate.getOWbPK()))
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_PROF_REPRESENTATIVE_BPK,
+ mandate.getOWbPK());
+
+ if (MiscUtil.isNotEmpty(mandate.getProfRep()))
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_PROF_REPRESENTATIVE,
+ mandate.getProfRep());
+
+ Mandate jaxBMandate = mandate.getMandateJaxB();
+ if (jaxBMandate != null) {
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_MANDATE_TYPE,
+ jaxBMandate.getAnnotation());
+
+ if (jaxBMandate.getMandator().getCorporateBody() != null) {
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_MANDATE_MANDATOR_TYPE,
+ "jur");
+ try {
+ String jurBaseID = jaxBMandate.getMandator().getCorporateBody().getIdentification().get(0).getType()
+ + "+" + jaxBMandate.getMandator().getCorporateBody().getIdentification().get(0).getId();
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_MANDATE_MANDATOR_BASEID,
+ jurBaseID);
+
+ } catch (Throwable e) {
+ Logger.warn("ReversionsLogger: mandator baseID logging FAILED.", e);
+
+ }
+
+ } else {
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_MANDATE_MANDATOR_TYPE,
+ "nat");
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_MANDATE_MANDATOR_HASH,
+ buildPersonInformationHash(
+ jaxBMandate.getMandator().getPhysicalPerson().getName().getGivenName().get(0),
+ jaxBMandate.getMandator().getPhysicalPerson().getName().getFamilyName().get(0).getValue(),
+ jaxBMandate.getMandator().getPhysicalPerson().getDateOfBirth()));
+ }
+ }
+ }
+
+ /**
+ * @param pendingReq
+ * @param identityLink
+ */
+ public void logPersonalInformationEvent(IRequest pendingReq,
+ IdentityLink identityLink) {
+ logEvent(pendingReq, MOAIDEventConstants.PERSONAL_INFORMATION_USERNAME_HASH,
+ buildPersonInformationHash(
+ identityLink.getGivenName(),
+ identityLink.getFamilyName(),
+ identityLink.getDateOfBirth()
+ ));
+
+ }
+
+ private List<Integer> selectOASpecificEventCodes(IOAAuthParameters oaConfig) {
+ List<Integer> OASpecificEventCodes = null;
+ if (oaConfig != null && oaConfig.getReversionsLoggingEventCodes() != null)
+ OASpecificEventCodes = oaConfig.getReversionsLoggingEventCodes();
+
+ else
+ OASpecificEventCodes = getDefaulttReversionsLoggingEventCodes();
+
+ return OASpecificEventCodes;
+ }
+
+ private String buildPersonInformationHash(String givenName, String familyName, String dateofBirth) {
+
+ // {"hash":"hashvalue","salt":"testSalt"}
+ // {"person":{"givenname":"value","familyname":"value","dateofbirth":"value"},"salt":"saltvalue"}
+
+ String salt = "default";
+ String inputData = "{\"person\":{\"givenname\":\""
+ + givenName
+ + "\",\"familyname\":\""
+ + familyName
+ + "\",\"dateofbirth\":\""
+ + dateofBirth
+ +"\"},\"salt\":\""
+ + salt
+ +"\"}";
+
+ MessageDigest md;
+ try {
+ md = MessageDigest.getInstance("SHA-256");
+ byte[] hash = md.digest(inputData.getBytes("UTF-8"));
+ String hashBase64 = Base64Utils.encode(hash);
+ return "{\"hash\":\"" + hashBase64 + "\",\"salt\":\"" + salt + "\"}";
+
+ } catch (Throwable e) {
+ Logger.warn("ReversionsLogger: mandator personalInformationHash logging FAILED.", e);
+ return null;
+
+ }
+
+ }
+
+ public List<Integer> getDefaulttReversionsLoggingEventCodes() {
+ try {
+ List<Integer> configuredDefaultEventCodes = AuthConfigurationProviderFactory.getInstance().getDefaultRevisionsLogEventCodes();
+ if (configuredDefaultEventCodes != null)
+ return configuredDefaultEventCodes;
+
+ } catch (ConfigurationException e) {
+ Logger.error("Access to configuration FAILED.", e);
+
+ }
+
+ return defaultEventCodes;
+ }
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
index f45a16780..0d9c1ec20 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/StatisticLogger.java
@@ -26,6 +26,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
+import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -43,17 +44,15 @@ import at.gv.egovernment.moa.id.auth.exception.MISSimpleClientException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.ServiceException;
import at.gv.egovernment.moa.id.client.SZRGWClientException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
@@ -91,7 +90,7 @@ public class StatisticLogger {
private StatisticLogger() {
try {
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
if (config != null)
isAktive = config.isAdvancedLoggingActive();
@@ -105,20 +104,27 @@ public class StatisticLogger {
if ( isAktive && protocolRequest != null && authData != null) {
- OnlineApplication dbOA = ConfigurationDBRead.getOnlineApplication(protocolRequest.getOAURL());
-
- if (dbOA == null) {
- Logger.warn("Advanced logging failed: OA can not be found in database.");
+ OAAuthParameter dbOA = null;
+ try {
+ dbOA = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
+
+ if (dbOA == null) {
+ Logger.warn("Advanced logging failed: OA can not be found in database.");
+ return;
+ }
+
+ } catch (ConfigurationException e1) {
+ Logger.error("Access MOA-ID configuration FAILED.", e1);
return;
}
-
+
StatisticLog dblog = new StatisticLog();
//set actual date and time
dblog.setTimestamp(new Date());
//set OA databaseID
- dblog.setOaID(dbOA.getHjid());
+ //dblog.setOaID(dbOA.getHjid());
//log basic AuthInformation
dblog.setOaurlprefix(protocolRequest.getOAURL());
@@ -206,7 +212,7 @@ public class StatisticLogger {
}
}
- ConfigurationDBUtils.closeSession();
+
try {
StatisticLogDBUtils.saveOrUpdate(dblog);
@@ -257,40 +263,46 @@ public class StatisticLogger {
dblog.setProtocoltype(errorRequest.requestedModule());
dblog.setProtocolsubtype(errorRequest.requestedAction());
- OnlineApplication dbOA = ConfigurationDBRead.getOnlineApplication(errorRequest.getOAURL());
- if (dbOA != null) {
- dblog.setOafriendlyName(dbOA.getFriendlyName());
- dblog.setOatarget(dbOA.getTarget());
- dblog.setOaID(dbOA.getHjid());
- dblog.setBusinessservice(isBusinessService(dbOA));
- }
+ try {
+ OAAuthParameter dbOA = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(errorRequest.getOAURL());
+ if (dbOA != null) {
+ dblog.setOafriendlyName(dbOA.getFriendlyName());
+ dblog.setOatarget(dbOA.getTarget());
+ //dblog.setOaID(dbOA.getHjid());
+ dblog.setBusinessservice(isBusinessService(dbOA));
+
- AuthenticationSession moasession = AuthenticationSessionStoreage.getSessionWithPendingRequestID(errorRequest.getRequestID());
- if (moasession != null) {
- if (MiscUtil.isNotEmpty(moasession.getBkuURL())) {
- dblog.setBkuurl(moasession.getBkuURL());
- dblog.setBkutype(findBKUType(moasession.getBkuURL(), dbOA));
- }
+ AuthenticationSession moasession = AuthenticationSessionStoreage.getSessionWithPendingRequestID(errorRequest.getRequestID());
+ if (moasession != null) {
+ if (MiscUtil.isNotEmpty(moasession.getBkuURL())) {
+ dblog.setBkuurl(moasession.getBkuURL());
+ dblog.setBkutype(findBKUType(moasession.getBkuURL(), dbOA));
+ }
- dblog.setMandatelogin(moasession.getUseMandate());
- }
+ dblog.setMandatelogin(moasession.getUseMandate());
+ }
- generateErrorLogFormThrowable(throwable, dblog);
-
- ConfigurationDBUtils.closeSession();
+ generateErrorLogFormThrowable(throwable, dblog);
+
+
- try {
- StatisticLogDBUtils.saveOrUpdate(dblog);
+ try {
+ StatisticLogDBUtils.saveOrUpdate(dblog);
- } catch (MOADatabaseException e) {
- Logger.warn("Statistic Log can not be stored into Database", e);
+ } catch (MOADatabaseException e) {
+ Logger.warn("Statistic Log can not be stored into Database", e);
+ }
+ }
+ } catch (ConfigurationException e) {
+ Logger.error("Access MOA-ID configuration FAILED.", e);
+ return;
}
}
}
- private boolean isBusinessService(OnlineApplication oa) {
+ private boolean isBusinessService(OAAuthParameter dbOA) {
- if (oa.getType().equals("businessService"))
+ if (dbOA.getOaType().equals("businessService"))
return true;
else
return false;
@@ -351,29 +363,23 @@ public class StatisticLogger {
}
- private String findBKUType(String bkuURL, OnlineApplication dbOA) {
+ private String findBKUType(String bkuURL, OAAuthParameter dbOA) {
if (dbOA != null) {
- AuthComponentOA oaAuth = dbOA.getAuthComponentOA();
- if (oaAuth != null) {
- BKUURLS bkuurls = oaAuth.getBKUURLS();
- if (bkuurls != null) {
- if (bkuURL.equals(bkuurls.getHandyBKU()))
- return IOAAuthParameters.HANDYBKU;
+ if (bkuURL.equals(dbOA.getBKUURL(OAAuthParameter.HANDYBKU)))
+ return IOAAuthParameters.HANDYBKU;
- if (bkuURL.equals(bkuurls.getLocalBKU()))
- return IOAAuthParameters.LOCALBKU;
+ if (bkuURL.equals(dbOA.getBKUURL(OAAuthParameter.LOCALBKU)))
+ return IOAAuthParameters.LOCALBKU;
- if (bkuURL.equals(bkuurls.getOnlineBKU()))
- return IOAAuthParameters.ONLINEBKU;
- }
- }
+ if (bkuURL.equals(dbOA.getBKUURL(OAAuthParameter.ONLINEBKU)))
+ return IOAAuthParameters.ONLINEBKU;
}
Logger.trace("Staticic Log search BKUType from DefaultBKUs");
try {
- AuthConfigurationProvider authconfig = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authconfig = AuthConfigurationProviderFactory.getInstance();
if (bkuURL.equals(authconfig.getDefaultBKUURL(IOAAuthParameters.ONLINEBKU)))
return IOAAuthParameters.ONLINEBKU;
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/TransactionIDUtils.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/TransactionIDUtils.java
new file mode 100644
index 000000000..7f6f2c6b3
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/TransactionIDUtils.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.advancedlogging;
+
+
+import java.util.Date;
+
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class TransactionIDUtils {
+
+ public static void setTransactionId(String pendingRequestID) {
+ org.apache.log4j.MDC.put(MOAIDAuthConstants.MDC_TRANSACTION_ID,
+ "TID-" + pendingRequestID);
+ org.slf4j.MDC.put(MOAIDAuthConstants.MDC_TRANSACTION_ID,
+ "TID-" + pendingRequestID);
+
+ }
+
+ public static void removeTransactionId() {
+ org.apache.log4j.MDC.remove(MOAIDAuthConstants.MDC_TRANSACTION_ID);
+ org.slf4j.MDC.remove(MOAIDAuthConstants.MDC_TRANSACTION_ID);
+
+ }
+
+ public static void setSessionId(String uniqueSessionId) {
+ org.apache.log4j.MDC.put(MOAIDAuthConstants.MDC_SESSION_ID,
+ "TID-" + uniqueSessionId);
+ org.slf4j.MDC.put(MOAIDAuthConstants.MDC_SESSION_ID,
+ "TID-" + uniqueSessionId);
+
+ }
+
+ public static void removeSessionId() {
+ org.apache.log4j.MDC.remove(MOAIDAuthConstants.MDC_SESSION_ID);
+ org.slf4j.MDC.remove(MOAIDAuthConstants.MDC_SESSION_ID);
+
+ }
+
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java
index eab7c511e..e2b0f78a5 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java
@@ -8,44 +8,31 @@ import iaik.x509.X509ExtensionInitException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
-import java.math.BigInteger;
-import java.net.URL;
-import java.security.NoSuchAlgorithmException;
import java.security.Principal;
import java.security.cert.CertificateException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-//import java.security.cert.CertificateFactory;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
-import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
import org.apache.xpath.XPathAPI;
-import org.opensaml.common.IdentifierGenerator;
-import org.opensaml.common.impl.SecureRandomIdentifierGenerator;
import org.opensaml.xml.util.Base64;
import org.opensaml.xml.util.XMLHelper;
-import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.builder.AuthenticationBlockAssertionBuilder;
import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;
import at.gv.egovernment.moa.id.auth.builder.CreateXMLSignatureRequestBuilder;
@@ -71,8 +58,6 @@ import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker;
import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;
import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser;
import at.gv.egovernment.moa.id.auth.parser.VerifyXMLSignatureResponseParser;
-import at.gv.egovernment.moa.id.auth.servlet.PEPSConnectorServlet;
-import at.gv.egovernment.moa.id.auth.servlet.PEPSConnectorWithLocalSigningServlet;
import at.gv.egovernment.moa.id.auth.validator.CreateXMLSignatureResponseValidator;
import at.gv.egovernment.moa.id.auth.validator.IdentityLinkValidator;
import at.gv.egovernment.moa.id.auth.validator.VerifyXMLSignatureResponseValidator;
@@ -80,21 +65,18 @@ import at.gv.egovernment.moa.id.auth.validator.parep.ParepUtils;
import at.gv.egovernment.moa.id.auth.validator.parep.client.szrgw.SZRGWConstants;
import at.gv.egovernment.moa.id.client.SZRGWClient;
import at.gv.egovernment.moa.id.client.SZRGWClientException;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
-import at.gv.egovernment.moa.id.config.stork.CPEPS;
-import at.gv.egovernment.moa.id.config.stork.STORKConfig;
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.storage.AssertionStorage;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.storage.DBExceptionStoreImpl;
import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
-import at.gv.egovernment.moa.id.util.VelocityProvider;
import at.gv.egovernment.moa.id.util.XMLUtil;
import at.gv.egovernment.moa.id.util.client.mis.simple.MISMandate;
import at.gv.egovernment.moa.logging.LogMsg;
@@ -112,21 +94,6 @@ import at.gv.util.xsd.srzgw.CreateIdentityLinkRequest.PEPSData;
import at.gv.util.xsd.srzgw.CreateIdentityLinkResponse;
import at.gv.util.xsd.srzgw.MISType;
import at.gv.util.xsd.srzgw.MISType.Filters;
-import eu.stork.oasisdss.api.AdditionalProfiles;
-import eu.stork.oasisdss.api.ApiUtils;
-import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
-import eu.stork.oasisdss.api.Profiles;
-import eu.stork.oasisdss.api.QualityLevels;
-import eu.stork.oasisdss.api.SignatureTypes;
-import eu.stork.oasisdss.profile.AnyType;
-import eu.stork.oasisdss.profile.DocumentType;
-import eu.stork.oasisdss.profile.SignRequest;
-import eu.stork.peps.auth.commons.PEPSUtil;
-import eu.stork.peps.auth.commons.PersonalAttribute;
-import eu.stork.peps.auth.commons.PersonalAttributeList;
-import eu.stork.peps.auth.commons.STORKAuthnRequest;
-import eu.stork.peps.auth.engine.STORKSAMLEngine;
-import eu.stork.peps.exceptions.STORKSAMLEngineException;
/**
* API for MOA ID Authentication Service.<br> {@link AuthenticationSession} is
@@ -136,7 +103,7 @@ import eu.stork.peps.exceptions.STORKSAMLEngineException;
* @version $Id: AuthenticationServer.java 1273 2012-02-27 14:50:18Z kstranacher
* $
*/
-public class AuthenticationServer implements MOAIDAuthConstants {
+public class AuthenticationServer extends MOAIDAuthConstants {
/**
* single instance
@@ -216,7 +183,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
//load OnlineApplication configuration
OAAuthParameter oaParam =
- AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
+ AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
if (oaParam == null)
throw new AuthenticationException("auth.00", new Object[]{session.getPublicOAURLPrefix()});
@@ -234,7 +201,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
String infoboxReadRequest = "";
- String domainIdentifier = AuthConfigurationProvider.getInstance().getSSOTagetIdentifier().trim();
+ String domainIdentifier = AuthConfigurationProviderFactory.getInstance().getSSOTagetIdentifier().trim();
if (MiscUtil.isEmpty(domainIdentifier) && session.isSsoRequested()) {
//do not use SSO if no Target is set
Logger.warn("NO SSO-Target found in configuration. Single Sign-On is deaktivated!");
@@ -297,8 +264,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
String appletheigth = req.getParameter(PARAM_APPLET_HEIGTH);
appletheigth = StringEscapeUtils.escapeHtml(appletheigth);
appletwidth = StringEscapeUtils.escapeHtml(appletwidth);
-
-
+
//TODO: cleanup before MOA-ID 2.1 release
try {
String htmlForm = new GetIdentityLinkFormBuilder().build(template,
@@ -338,7 +304,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* link results in an Exception being thrown.
* @throws BKUException
*/
- public String verifyIdentityLink(AuthenticationSession session,
+ public String verifyIdentityLink(IRequest pendingReq, AuthenticationSession session,
Map<String, String> infoboxReadResponseParameters) throws AuthenticationException,
BuildException, ParseException, ConfigurationException,
ValidateException, ServiceException, BKUException {
@@ -354,7 +320,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
throw new AuthenticationException("auth.10", new Object[]{
REQ_VERIFY_IDENTITY_LINK, PARAM_XMLRESPONSE});
- AuthConfigurationProvider authConf = AuthConfigurationProvider
+ AuthConfiguration authConf = AuthConfigurationProviderFactory
.getInstance();
// check if an identity link was found
@@ -387,7 +353,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
// builds a <VerifyXMLSignatureRequest> for a call of MOA-SP
Element domVerifyXMLSignatureRequest = new VerifyXMLSignatureRequestBuilder()
.build(identityLink, authConf
- .getMoaSpIdentityLinkTrustProfileID());
+ .getMoaSpIdentityLinkTrustProfileID(pendingReq.getOnlineApplicationConfiguration().isUseIDLTestTrustStore()));
// invokes the call
Element domVerifyXMLSignatureResponse = new SignatureVerificationInvoker()
@@ -396,7 +362,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
VerifyXMLSignatureResponse verifyXMLSignatureResponse = new VerifyXMLSignatureResponseParser(
domVerifyXMLSignatureResponse).parseData();
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(session.getPublicOAURLPrefix());
// validates the <VerifyXMLSignatureResponse>
@@ -408,10 +374,13 @@ public class AuthenticationServer implements MOAIDAuthConstants {
session.setIdentityLink(identityLink);
// now validate the extended infoboxes
-
+
//Removed in MOA-ID 2.0
//verifyInfoboxes(session, infoboxReadResponseParameters, false);
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_IDL_VALIDATED);
+
return "found!";
}
@@ -462,10 +431,10 @@ public class AuthenticationServer implements MOAIDAuthConstants {
session.setOW(false);
}
- AuthConfigurationProvider authConf = AuthConfigurationProvider
+ AuthConfiguration authConf = AuthConfigurationProviderFactory
.getInstance();
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(session.getPublicOAURLPrefix());
String returnvalue = getCreateXMLSignatureRequestAuthBlockOrRedirect(session,
@@ -484,6 +453,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* containg the authentication block, meant to be returned to the security
* layer implementation</li>
* </ul>
+ * @param pendingReq
*
* @param sessionID ID of associated authentication session data
* @param infoboxReadResponseParameters The parameters from the response returned from the BKU
@@ -499,7 +469,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
throw new AuthenticationException("auth.10", new Object[]{
GET_MIS_SESSIONID, PARAM_SESSIONID});
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(session.getPublicOAURLPrefix());
try {
@@ -536,7 +506,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* @throws ValidateException
*/
public String getCreateXMLSignatureRequestAuthBlockOrRedirect(
- AuthenticationSession session, AuthConfigurationProvider authConf,
+ AuthenticationSession session, AuthConfiguration authConf,
OAAuthParameter oaParam) throws ConfigurationException,
BuildException, ValidateException {
@@ -545,9 +515,9 @@ public class AuthenticationServer implements MOAIDAuthConstants {
// return "Redirect to Input Processor";
if (authConf == null)
- authConf = AuthConfigurationProvider.getInstance();
+ authConf = AuthConfigurationProviderFactory.getInstance();
if (oaParam == null)
- oaParam = AuthConfigurationProvider.getInstance()
+ oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(
session.getPublicOAURLPrefix());
@@ -583,10 +553,10 @@ public class AuthenticationServer implements MOAIDAuthConstants {
throw new AuthenticationException("auth.10", new Object[]{
REQ_VERIFY_CERTIFICATE, PARAM_SESSIONID});
- AuthConfigurationProvider authConf = AuthConfigurationProvider
+ AuthConfiguration authConf = AuthConfigurationProviderFactory
.getInstance();
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(session.getPublicOAURLPrefix());
return getCreateXMLSignatureRequestForeigID(session, authConf, oaParam,
@@ -594,7 +564,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
}
public String getCreateXMLSignatureRequestForeigID(
- AuthenticationSession session, AuthConfigurationProvider authConf,
+ AuthenticationSession session, AuthConfiguration authConf,
OAAuthParameter oaParam, X509Certificate cert)
throws ConfigurationException {
@@ -603,9 +573,9 @@ public class AuthenticationServer implements MOAIDAuthConstants {
// return "Redirect to Input Processor";
if (authConf == null)
- authConf = AuthConfigurationProvider.getInstance();
+ authConf = AuthConfigurationProviderFactory.getInstance();
if (oaParam == null)
- oaParam = AuthConfigurationProvider.getInstance()
+ oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(
session.getPublicOAURLPrefix());
@@ -616,63 +586,63 @@ public class AuthenticationServer implements MOAIDAuthConstants {
return createXMLSignatureRequest;
}
- /**
- * Processes an <code>&lt;CreateXMLSignatureResponse&gt;</code> sent by the
- * security layer implementation.<br>
- * <ul>
- * <li>Validates given <code>&lt;CreateXMLSignatureResponse&gt;</code></li>
- * <li>Parses response enclosed in
- * <code>&lt;CreateXMLSignatureResponse&gt;</code></li>
- * <li>Verifies signature by calling the MOA SP component</li>
- * <li>Returns the signer certificate</li>
- * </ul>
- *
- * @param sessionID ID of associated authentication session data
- * @param createXMLSignatureResponseParameters The parameters from the response returned from the BKU
- * including the <code>&lt;CreateXMLSignatureResponse&gt;</code>
- * @throws BKUException
- */
- public X509Certificate verifyXMLSignature(String sessionID,
- Map<String, String> createXMLSignatureResponseParameters)
- throws AuthenticationException, BuildException, ParseException,
- ConfigurationException, ValidateException, ServiceException, BKUException {
-
- if (isEmpty(sessionID))
- throw new AuthenticationException("auth.10", new Object[]{
- REQ_GET_FOREIGN_ID, PARAM_SESSIONID});
-
- String xmlCreateXMLSignatureResponse = (String) createXMLSignatureResponseParameters
- .get(PARAM_XMLRESPONSE);
-
- if (isEmpty(xmlCreateXMLSignatureResponse))
- throw new AuthenticationException("auth.10", new Object[]{
- REQ_GET_FOREIGN_ID, PARAM_XMLRESPONSE});
-
- AuthConfigurationProvider authConf = AuthConfigurationProvider
- .getInstance();
-
- // parses the <CreateXMLSignatureResponse>
- CreateXMLSignatureResponseParser p = new CreateXMLSignatureResponseParser(
- xmlCreateXMLSignatureResponse);
- CreateXMLSignatureResponse createXMLSignatureResponse = p
- .parseResponseDsig();
-
- // builds a <VerifyXMLSignatureRequest> for a call of MOA-SP
- Element domVerifyXMLSignatureRequest = new VerifyXMLSignatureRequestBuilder()
- .buildDsig(createXMLSignatureResponse, authConf
- .getMoaSpAuthBlockTrustProfileID());
-
- // invokes the call
- Element domVerifyXMLSignatureResponse = new SignatureVerificationInvoker()
- .verifyXMLSignature(domVerifyXMLSignatureRequest);
-
- // parses the <VerifyXMLSignatureResponse>
- VerifyXMLSignatureResponse verifyXMLSignatureResponse = new VerifyXMLSignatureResponseParser(
- domVerifyXMLSignatureResponse).parseData();
-
- return verifyXMLSignatureResponse.getX509certificate();
-
- }
+// /**
+// * Processes an <code>&lt;CreateXMLSignatureResponse&gt;</code> sent by the
+// * security layer implementation.<br>
+// * <ul>
+// * <li>Validates given <code>&lt;CreateXMLSignatureResponse&gt;</code></li>
+// * <li>Parses response enclosed in
+// * <code>&lt;CreateXMLSignatureResponse&gt;</code></li>
+// * <li>Verifies signature by calling the MOA SP component</li>
+// * <li>Returns the signer certificate</li>
+// * </ul>
+// *
+// * @param sessionID ID of associated authentication session data
+// * @param createXMLSignatureResponseParameters The parameters from the response returned from the BKU
+// * including the <code>&lt;CreateXMLSignatureResponse&gt;</code>
+// * @throws BKUException
+// */
+// public X509Certificate verifyXMLSignature(String sessionID,
+// Map<String, String> createXMLSignatureResponseParameters)
+// throws AuthenticationException, BuildException, ParseException,
+// ConfigurationException, ValidateException, ServiceException, BKUException {
+//
+// if (isEmpty(sessionID))
+// throw new AuthenticationException("auth.10", new Object[]{
+// REQ_GET_FOREIGN_ID, PARAM_SESSIONID});
+//
+// String xmlCreateXMLSignatureResponse = (String) createXMLSignatureResponseParameters
+// .get(PARAM_XMLRESPONSE);
+//
+// if (isEmpty(xmlCreateXMLSignatureResponse))
+// throw new AuthenticationException("auth.10", new Object[]{
+// REQ_GET_FOREIGN_ID, PARAM_XMLRESPONSE});
+//
+// AuthConfiguration authConf = AuthConfigurationProviderFactory
+// .getInstance();
+//
+// // parses the <CreateXMLSignatureResponse>
+// CreateXMLSignatureResponseParser p = new CreateXMLSignatureResponseParser(
+// xmlCreateXMLSignatureResponse);
+// CreateXMLSignatureResponse createXMLSignatureResponse = p
+// .parseResponseDsig();
+//
+// // builds a <VerifyXMLSignatureRequest> for a call of MOA-SP
+// Element domVerifyXMLSignatureRequest = new VerifyXMLSignatureRequestBuilder()
+// .buildDsig(createXMLSignatureResponse, authConf
+// .getMoaSpAuthBlockTrustProfileID());
+//
+// // invokes the call
+// Element domVerifyXMLSignatureResponse = new SignatureVerificationInvoker()
+// .verifyXMLSignature(domVerifyXMLSignatureRequest);
+//
+// // parses the <VerifyXMLSignatureResponse>
+// VerifyXMLSignatureResponse verifyXMLSignatureResponse = new VerifyXMLSignatureResponseParser(
+// domVerifyXMLSignatureResponse).parseData();
+//
+// return verifyXMLSignatureResponse.getX509certificate();
+//
+// }
/**
* Processes an <code>&lt;CreateXMLSignatureResponse&gt;</code> sent by the
@@ -684,13 +654,14 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* <li>Verifies signature by calling the MOA SP component</li>
* <li>Returns the signer certificate</li>
* </ul>
+ * @param pendingReq
*
* @param sessionID ID of associated authentication session data
* @param readInfoboxResponseParameters The parameters from the response returned from the BKU
* including the <code>&lt;ReadInfoboxResponse&gt;</code>
* @throws BKUException
*/
- public X509Certificate getCertificate(String sessionID,
+ public X509Certificate getCertificate(IRequest pendingReq, String sessionID,
Map<String, String> readInfoboxResponseParameters) throws AuthenticationException,
BuildException, ParseException, ConfigurationException,
ValidateException, ServiceException, BKUException {
@@ -711,6 +682,9 @@ public class AuthenticationServer implements MOAIDAuthConstants {
xmlReadInfoboxResponse);
X509Certificate cert = p.parseCertificate();
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_CERTIFICATE_VALIDATED);
+
return cert;
}
@@ -783,7 +757,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
if (session.isSsoRequested()) {
String oaURL = new String();
try {
- oaURL = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ oaURL = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
if (MiscUtil.isNotEmpty(oaURL))
oaURL = oaURL.replaceAll("&", "&amp;");
@@ -1102,6 +1076,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* <li>Deletes authentication session</li>
* <li><strike>Returns the SAML artifact, encoded BASE64</strike><br/>New id of the authenticated MOA session or {@code null} in case of mandate mode (???)</li>
* </ul>
+ * @param pendingReq
*
* @param sessionID session ID of the running authentication session
* @param xmlCreateXMLSignatureReadResponse String representation of the
@@ -1110,7 +1085,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* BASE64</strike><br/>New id of the authenticated MOA session or {@code null} in case of mandate mode (???)
* @throws BKUException
*/
- public String verifyAuthenticationBlock(AuthenticationSession session,
+ public void verifyAuthenticationBlock(IRequest pendingReq, AuthenticationSession session,
String xmlCreateXMLSignatureReadResponse)
throws AuthenticationException, BuildException, ParseException,
ConfigurationException, ServiceException, ValidateException, BKUException {
@@ -1122,7 +1097,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
throw new AuthenticationException("auth.10", new Object[]{
REQ_VERIFY_AUTH_BLOCK, PARAM_XMLRESPONSE});
- AuthConfigurationProvider authConf = AuthConfigurationProvider
+ AuthConfiguration authConf = AuthConfigurationProviderFactory
.getInstance();
// parses <CreateXMLSignatureResponse>
CreateXMLSignatureResponse csresp = new CreateXMLSignatureResponseParser(
@@ -1147,7 +1122,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
// builds a <VerifyXMLSignatureRequest> for a MOA-SPSS call
List<String> vtids = authConf.getMoaSpAuthBlockVerifyTransformsInfoIDs();
- String tpid = authConf.getMoaSpAuthBlockTrustProfileID();
+ String tpid = authConf.getMoaSpAuthBlockTrustProfileID(pendingReq.getOnlineApplicationConfiguration().isUseAuthBlockTestTestStore());
Element domVsreq = new VerifyXMLSignatureRequestBuilder().build(csresp,
vtids, tpid);
// debug output
@@ -1158,24 +1133,6 @@ public class AuthenticationServer implements MOAIDAuthConstants {
// invokes the call
domVsresp = new SignatureVerificationInvoker()
.verifyXMLSignature(domVsreq);
- // debug output
-
- // } catch ( ServiceException e) {
- // Logger.error("Signature verification error. ", e);
- // Logger.error("Signed Data: " + session.getAuthBlock());
- // try {
- // Logger.error("VerifyRequest: " + DOMUtils.serializeNode(domVsreq));
- // } catch (TransformerException e1) {
- // e1.printStackTrace();
- //
- // } catch (IOException e1) {
- // e1.printStackTrace();
- //
- // }
- //
- // throw e;
- // }
-
// parses the <VerifyXMLSignatureResponse>
VerifyXMLSignatureResponse vsresp = new VerifyXMLSignatureResponseParser(
@@ -1195,7 +1152,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {
}
}
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(session.getPublicOAURLPrefix());
// validates the <VerifyXMLSignatureResponse>
@@ -1228,74 +1185,20 @@ public class AuthenticationServer implements MOAIDAuthConstants {
throw e;
}
-
- // // post processing of the infoboxes
- // Iterator iter = session.getInfoboxValidatorIterator();
- // boolean formpending = false;
- // if (iter != null) {
- // while (!formpending && iter.hasNext()) {
- // Vector infoboxValidatorVector = (Vector) iter.next();
- // String identifier = (String) infoboxValidatorVector.get(0);
- // String friendlyName = (String) infoboxValidatorVector.get(1);
- // InfoboxValidator infoboxvalidator = (InfoboxValidator) infoboxValidatorVector
- // .get(2);
- // InfoboxValidationResult infoboxValidationResult = null;
- // try {
- // infoboxValidationResult = infoboxvalidator.validate(csresp
- // .getSamlAssertion());
- // } catch (ValidateException e) {
- // Logger.error("Error validating " + identifier + " infobox:"
- // + e.getMessage());
- // throw new ValidateException("validator.44",
- // new Object[]{friendlyName});
- // }
- // if (!infoboxValidationResult.isValid()) {
- // Logger.info("Validation of " + identifier
- // + " infobox failed.");
- // throw new ValidateException("validator.40", new Object[]{
- // friendlyName,
- // infoboxValidationResult.getErrorMessage()});
- // }
- // String form = infoboxvalidator.getForm();
- // if (ParepUtils.isEmpty(form)) {
- // AddAdditionalSAMLAttributes(
- // session,
- // infoboxValidationResult.getExtendedSamlAttributes(),
- // identifier, friendlyName);
- // } else {
- // return "Redirect to Input Processor";
- // }
- // }
- // }
-
+
session.setXMLVerifySignatureResponse(vsresp);
session.setSignerCertificate(vsresp.getX509certificate());
vsresp.setX509certificate(null);
session.setForeigner(false);
- if (session.getUseMandate()) {
- // mandate mode
- return null;
-
- } else {
-
- session.setAuthenticatedUsed(false);
- session.setAuthenticated(true);
-
- //set QAA Level four in case of card authentifcation
- session.setQAALevel(PVPConstants.STORK_QAA_1_4);
-
-
- String oldsessionID = session.getSessionID();
-
- //Session is implicte stored in changeSessionID!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- Logger.info("Changed MOASession " + oldsessionID + " to Session " + newMOASessionID);
- Logger.info("Daten angelegt zu MOASession " + newMOASessionID);
-
- return newMOASessionID;
- }
+ //set QAA Level four in case of card authentifcation
+ session.setQAALevel(PVPConstants.STORK_QAA_1_4);
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_AUTHBLOCK_VALIDATED);
+
+ MOAReversionLogger.getInstance().logPersonalInformationEvent(pendingReq, session.getIdentityLink()
+ );
}
/**
@@ -1378,10 +1281,10 @@ public class AuthenticationServer implements MOAIDAuthConstants {
* @param sessionID session ID of the running authentication session
* @return String "new Session"
*/
- public String getForeignAuthenticationData(AuthenticationSession session)
+ public void getForeignAuthenticationData(AuthenticationSession session)
throws AuthenticationException, BuildException, ParseException,
ConfigurationException, ServiceException, ValidateException {
-
+
if (session == null)
throw new AuthenticationException("auth.10", new Object[]{
REQ_VERIFY_AUTH_BLOCK, PARAM_SESSIONID});
@@ -1389,17 +1292,10 @@ public class AuthenticationServer implements MOAIDAuthConstants {
X509Certificate cert = session.getSignerCertificate();
vsresp.setX509certificate(cert);
- session.setAuthenticatedUsed(false);
- session.setAuthenticated(true);
-
-
session.setXMLVerifySignatureResponse(vsresp);
session.setSignerCertificate(vsresp.getX509certificate());
vsresp.setX509certificate(null);
session.setForeigner(true);
-
- //TODO: regenerate MOASession ID!
- return "new Session";
}
/**
@@ -1601,14 +1497,15 @@ public class AuthenticationServer implements MOAIDAuthConstants {
public CreateIdentityLinkResponse getIdentityLink(String PEPSIdentifier, String PEPSFirstname, String PEPSFamilyname, String PEPSDateOfBirth, String gender, String citizenSignature, String represented, String representative, String mandateContent, String organizationAddress, String organizationType, String targetType, String targetValue, String oaFriendlyName, List<String> filters, String PEPSFiscalNumber) throws SZRGWClientException {
try {
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authConf = AuthConfigurationProviderFactory.getInstance();
ConnectionParameter connectionParameters = authConf.getForeignIDConnectionParameter();
+ String requestID = UUID.randomUUID().toString();
SZRGWClient client = new SZRGWClient(connectionParameters);
CreateIdentityLinkRequest request = new CreateIdentityLinkRequest();
request.setSignature(citizenSignature.getBytes("UTF-8"));
-
+ request.setReqID(requestID);
if(PEPSDateOfBirth!=null || PEPSFamilyname!=null || PEPSFirstname!=null || PEPSIdentifier!=null || representative!=null || represented!=null || mandateContent!=null || organizationAddress!=null || organizationType!=null)
{
PEPSData data = new PEPSData();
@@ -1670,287 +1567,6 @@ public class AuthenticationServer implements MOAIDAuthConstants {
}
/**
- * Starts a MOA-ID authentication process using STORK
- *
- * @param req HttpServletRequest
- * @param resp HttpServletResponse
- * @param ccc Citizen country code
- * @param oaURL URL of the online application
- * @param target Target parameter
- * @param targetFriendlyName Friendly Name of Target
- * @param authURL Authentication URL
- * @param sourceID SourceID parameter
- * @throws MOAIDException
- * @throws AuthenticationException
- * @throws WrongParametersException
- * @throws ConfigurationException
- */
- public static void startSTORKAuthentication(
- HttpServletRequest req,
- HttpServletResponse resp,
- AuthenticationSession moasession) throws MOAIDException, AuthenticationException, WrongParametersException, ConfigurationException {
-
- if (moasession == null) {
- throw new AuthenticationException("auth.18", new Object[]{});
- }
-
- //read configuration paramters of OA
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix());
- if (oaParam == null)
- throw new AuthenticationException("auth.00", new Object[]{moasession.getPublicOAURLPrefix()});
-
- //Start of STORK Processing
- STORKConfig storkConfig = AuthConfigurationProvider.getInstance().getStorkConfig();
-
- CPEPS cpeps = storkConfig.getCPEPS(moasession.getCcc());
-
- Logger.debug("Preparing to assemble STORK AuthnRequest with the following values:");
- String destination = cpeps.getPepsURL().toExternalForm();
- Logger.debug("C-PEPS URL: " + destination);
-
-
- String issuerValue = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
- // String acsURL = new DataURLBuilder().buildDataURL(issuerValue,
- // PEPSConnectorServlet.PEPSCONNECTOR_SERVLET_URL_PATTERN, moasession.getSessionID());
-
-
- String providerName = oaParam.getFriendlyName();
- Logger.debug("Issuer value: " + issuerValue);
-
- // prepare collection of required attributes
- // - attributes for online application
- List<OAStorkAttribute> attributesFromConfig = oaParam.getRequestedAttributes();
-
- // - prepare attribute list
- PersonalAttributeList attributeList = new PersonalAttributeList();
-
- // - fill container
- for (OAStorkAttribute current : attributesFromConfig) {
- PersonalAttribute newAttribute = new PersonalAttribute();
- newAttribute.setName(current.getName());
-
- boolean globallyMandatory = false;
- for (StorkAttribute currentGlobalAttribute : storkConfig.getStorkAttributes())
- if (current.getName().equals(currentGlobalAttribute.getName())) {
- globallyMandatory = BooleanUtils.isTrue(currentGlobalAttribute.isMandatory());
- break;
- }
-
- newAttribute.setIsRequired(current.isMandatory() || globallyMandatory);
- attributeList.add(newAttribute);
- }
-
- // add sign request
- PersonalAttribute newAttribute = new PersonalAttribute();
- newAttribute.setName("signedDoc");
- newAttribute.setIsRequired(true);
- List<String> value = new ArrayList<String>();
-
- Logger.debug("PEPS supports XMLSignatures:"+cpeps.isXMLSignatureSupported());
- String acsURL;
- if(cpeps.isXMLSignatureSupported())//Send SignRequest to PEPS
- {
- //solve Problem with sessionIDs
- acsURL = issuerValue + PEPSConnectorServlet.PEPSCONNECTOR_SERVLET_URL_PATTERN;
-
- value.add(generateDssSignRequest(CreateXMLSignatureRequestBuilder.buildForeignIDTextToBeSigned("wie im Signaturzertifikat (as in my signature certificate)", oaParam, moasession),
- "application/xhtml+xml", moasession.getCcc()));
- newAttribute.setValue(value);
- attributeList.add(newAttribute);
-
- // TODO[branch]: STORK AuthReq CPEPS acsURL "/PEPSConnector"
- }
- else//Process SignRequest locally with MOCCA
- {
- String target = moasession.getTarget();
- moasession.setTarget("AT");
- String signedDoc = (generateDssSignRequest(CreateXMLSignatureRequestBuilder.buildForeignIDTextToBeSigned("wie im Signaturzertifikat (as in my signature certificate)", oaParam, moasession),
- "application/xhtml+xml", "AT"));//moasession.getCcc()
- moasession.setTarget(target);
- Logger.warn("signedDoc to store:"+signedDoc);
- //attributeList.add(newAttribute);
-
- //store SignRequest for later...
- moasession.setSignedDoc(signedDoc);
-
- acsURL = issuerValue + PEPSConnectorWithLocalSigningServlet.PEPSCONNECTOR_SERVLET_URL_PATTERN;
- // TODO[branch]: STORK AuthReq acsURL "/PEPSConnectorWithLocalSigning"
- try {
- AuthenticationSessionStoreage.storeSession(moasession);
- } catch (MOADatabaseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
- Logger.debug("MOA Assertion Consumer URL (PEPSConnctor): " + acsURL);
-
- if (Logger.isDebugEnabled()) {
- Logger.debug("The following attributes are requested for this OA:");
- for (OAStorkAttribute logReqAttr : attributesFromConfig)
- Logger.debug("OA specific requested attribute: " + logReqAttr.getName() + ", isRequired: " + logReqAttr.isMandatory());
- }
-
- //TODO: check Target in case of SSO!!
- String spSector = StringUtils.isEmpty(moasession.getTarget()) ? "Business" : moasession.getTarget();
- String spInstitution = StringUtils.isEmpty(oaParam.getFriendlyName()) ? "UNKNOWN" : oaParam.getFriendlyName();
- String spApplication = spInstitution;
- String spCountry = "AT"; // intentionally set AT - the flow is limited on that use case only
-
- //generate AuthnRquest
- STORKAuthnRequest authnRequest = new STORKAuthnRequest();
- authnRequest.setDestination(destination);
- authnRequest.setAssertionConsumerServiceURL(acsURL);//PEPSConnectorWithLocalSigning
- authnRequest.setProviderName(providerName);
- authnRequest.setIssuer(issuerValue);
- authnRequest.setQaa(oaParam.getQaaLevel());
- authnRequest.setSpInstitution(spInstitution);
- authnRequest.setSpCountry(spCountry);
- authnRequest.setSpApplication(spApplication);
- authnRequest.setSpSector(spSector);
- authnRequest.setPersonalAttributeList(attributeList);
-
- //TODO change
- authnRequest.setEIDCrossBorderShare(true);
- authnRequest.setEIDCrossSectorShare(true);
- authnRequest.setEIDSectorShare(true);
-
- authnRequest.setCitizenCountryCode(moasession.getCcc());
-
- Logger.debug("STORK AuthnRequest succesfully assembled.");
-
- STORKSAMLEngine samlEngine = STORKSAMLEngine.getInstance("outgoing");
-
- if (samlEngine == null) {
- Logger.error("Could not initalize STORK SAML engine.");
- throw new MOAIDException("stork.00", null);
- }
-
- try {
- authnRequest = samlEngine.generateSTORKAuthnRequest(authnRequest);
- } catch (STORKSAMLEngineException e) {
- Logger.error("Could not sign STORK SAML AuthnRequest.", e);
- throw new MOAIDException("stork.00", null);
- }
-
- Logger.info("STORK AuthnRequest successfully signed!");
-
- //validate AuthnRequest
- try {
- samlEngine.validateSTORKAuthnRequest(authnRequest.getTokenSaml());
- } catch (STORKSAMLEngineException e) {
- Logger.error("STORK SAML AuthnRequest not valid.", e);
- throw new MOAIDException("stork.01", null);
- }
-
- Logger.debug("STORK AuthnRequest successfully internally validated.");
-
- //send
- moasession.setStorkAuthnRequest(authnRequest);
-
- // do PEPS-conform logging for easier evaluation
- try {
- // 2015-03-12 16:44:27.144#S-PEPS receives request from SP#spurl#spepsurl#spapp#spdomain#citizen country#qaa#msghash#msg_id id1#
- Logger.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) + "#S-PEPS receives request from SP#" +
- moasession.getPublicOAURLPrefix() + "#" + issuerValue + "#" + spApplication + "#" +
- new URL(moasession.getPublicOAURLPrefix()).getHost() + "#" + moasession.getCcc() + "#" + oaParam.getQaaLevel() +
- "#_hash_#" + moasession.getProcessInstanceId() + "#");
- } catch (Exception e1) {
- Logger.info("STORK PEPS conform logging failed because of: " + e1.getMessage());
- }
-
- AuthenticationSessionStoreage.changeSessionID(moasession, authnRequest.getSamlId());
-
-
- Logger.info("Preparing to send STORK AuthnRequest.");
- Logger.info("prepared STORKAuthnRequest: ");
- Logger.info(new String(authnRequest.getTokenSaml()));
-
- try {
- Logger.trace("Initialize VelocityEngine...");
-
- VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine();
- Template template = velocityEngine.getTemplate("/resources/templates/saml2-post-binding-moa.vm");
- VelocityContext context = new VelocityContext();
- context.put("SAMLRequest", PEPSUtil.encodeSAMLToken(authnRequest.getTokenSaml()));
- context.put("RelayState", moasession.getSessionID());
- context.put("action", destination);
-
- StringWriter writer = new StringWriter();
- template.merge(context, writer);
-
- // TODO[branch]: SAML2 Form Submit to CPEPS, response to acsURL Servlet
-
- resp.setContentType("text/html;charset=UTF-8");
- resp.getOutputStream().write(writer.toString().getBytes("UTF-8"));
-
- } catch (Exception e) {
- Logger.error("Error sending STORK SAML AuthnRequest.", e);
- throw new MOAIDException("stork.02", new Object[]{destination});
-
- }
-
- Logger.info("STORK AuthnRequest successfully successfully prepared for client with target location: " + authnRequest.getDestination());
-
- // do PEPS-conform logging for easier evaluation
- try {
- // 2015-03-12 16:44:27.144#S-PEPS generates request to C-PEPS#spepsurl#cpepsurl#spapp#spdomain#citizen country#qaa#msghash#msg_id id1#id2#
- Logger.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) + "#S-PEPS generates request to C-PEPS#" +
- issuerValue + "#" + destination + "#" + spApplication + "#" +
- new URL(moasession.getPublicOAURLPrefix()).getHost() + "#" + moasession.getCcc() + "#" + oaParam.getQaaLevel() +
- "#_hash_#" + moasession.getProcessInstanceId() + "#" + authnRequest.getSamlId() + "#");
- } catch (Exception e1) {
- Logger.info("STORK PEPS conform logging failed because of: " + e1.getMessage());
- }
- }
-
- private static String generateDssSignRequest(String text, String mimeType, String citizenCountry) {
- IdentifierGenerator idGenerator;
- try {
- idGenerator = new SecureRandomIdentifierGenerator();
-
- DocumentType doc = new DocumentType();
- doc.setBase64XML(text.getBytes("UTF-8"));
- doc.setID(idGenerator.generateIdentifier());
-
- SignRequest request = new SignRequest();
- request.setInputDocuments(ApiUtils.createInputDocuments(doc));
-
- String id = idGenerator.generateIdentifier();
- request.setRequestID(id);
- request.setDocUI(id);
-
- request.setProfile(Profiles.XADES_BES.toString());
- request.setNumberOfSigners(BigInteger.ONE);
- request.setTargetCountry(citizenCountry);
-
- // no, no todo. PEPS will alter this value anyhow.
- request.setReturnURL("http://invalid_return");
-
- AnyType required = new AnyType();
- required.getAny().add(ApiUtils.createSignatureType(SignatureTypes.XMLSIG_RFC3275.toString()));
- required.getAny().add(ApiUtils.createAdditionalProfile(AdditionalProfiles.XADES.toString()));
- required.getAny().add(ApiUtils.createQualityRequirements(QualityLevels.QUALITYLEVEL_QUALIFIEDSIG));
- required.getAny().add(ApiUtils.createIncludeObject(doc));
- request.setOptionalInputs(required);
-
- return IOUtils.toString(ApiUtils.marshalToInputStream(request));
- } catch (NoSuchAlgorithmException e) {
- Logger.error("Cannot generate id", e);
- throw new RuntimeException(e);
- } catch (ApiUtilsException e) {
- Logger.error("Could not create SignRequest", e);
- throw new RuntimeException(e);
- } catch (DOMException e) {
- Logger.error("Could not create SignRequest", e);
- throw new RuntimeException(e);
- } catch (IOException e) {
- Logger.error("Could not create SignRequest", e);
- throw new RuntimeException(e);
- }
- }
-
- /**
* Extracts an X509 Certificate out of an XML signagture element
*
* @param signedXML XML signature element
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthConstants.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthConstants.java
index 5223a181d..61caa463c 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthConstants.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthConstants.java
@@ -9,6 +9,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import at.gv.egovernment.moa.id.commons.MOAIDConstants;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+
import iaik.asn1.ObjectID;
@@ -18,7 +21,7 @@ import iaik.asn1.ObjectID;
* @author Paul Ivancsics
* @version $Id$
*/
-public interface MOAIDAuthConstants {
+public class MOAIDAuthConstants extends MOAIDConstants{
/** servlet parameter &quot;Target&quot; */
public static final String PARAM_TARGET = "Target";
@@ -113,9 +116,7 @@ public interface MOAIDAuthConstants {
// /** the number of the certifcate extension for party organ representatives */
// public static final String PARTY_ORGAN_REPRESENTATION_OID_NUMBER = PARTY_REPRESENTATION_OID_NUMBER + ".10";
-
- public static final String PREFIX_WPBK = "urn:publicid:gv.at:wbpk+";
-
+
/** OW */
public static final String OW_ORGANWALTER = PARTY_REPRESENTATION_OID_NUMBER + ".4";
@@ -143,8 +144,6 @@ public interface MOAIDAuthConstants {
public static final String PARAM_APPLET_HEIGTH = "heigth";
public static final String PARAM_APPLET_WIDTH = "width";
- public static final String TESTCREDENTIALROOTOID = "1.2.40.0.10.2.4.1";
-
public static final Map<String, String> COUNTRYCODE_XX_TO_NAME =
Collections.unmodifiableMap(new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
@@ -168,4 +167,9 @@ public interface MOAIDAuthConstants {
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
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java
index 025c4c652..ed632d8b9 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java
@@ -18,8 +18,11 @@ import javax.net.ssl.SSLSocketFactory;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.ConnectionParameter;
import at.gv.egovernment.moa.id.config.auth.AuthConfigLoader;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.PropertyBasedAuthConfigurationProvider;
import at.gv.egovernment.moa.id.iaik.config.LoggerConfigImpl;
+import at.gv.egovernment.moa.id.protocols.pvp2x.metadata.MOAMetadataProvider;
import at.gv.egovernment.moa.id.util.AxisSecureSocketFactory;
import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
import at.gv.egovernment.moa.id.util.SSLUtils;
@@ -29,6 +32,7 @@ import at.gv.egovernment.moa.logging.LoggingContextManager;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
import at.gv.egovernment.moa.util.Constants;
+import at.gv.egovernment.moa.util.MiscUtil;
/**
* Web application initializer
@@ -96,9 +100,17 @@ public class MOAIDAuthInitializer {
// EDH-DSS-DES-CBC3-SHA -
// DES-CBC3-SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA
- System.setProperty(
- "https.cipherSuites",
- "TLS_DH_anon_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA");
+ if (MiscUtil.isEmpty(System.getProperty("https.cipherSuites")))
+ System.setProperty(
+ "https.cipherSuites",
+ "TLS_DH_anon_WITH_AES_128_CBC_SHA" +
+ ",TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +
+ ",TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +
+ ",TLS_RSA_WITH_AES_128_CBC_SHA" +
+ ",TLS_RSA_WITH_AES_256_CBC_SHA" +
+ ",SSL_DH_anon_WITH_3DES_EDE_CBC_SHA" +
+ ",SSL_RSA_WITH_3DES_EDE_CBC_SHA"
+ );
@@ -129,42 +141,49 @@ public class MOAIDAuthInitializer {
Constants.nSMap.put(Constants.DSIG_PREFIX, Constants.DSIG_NS_URI);
// Loads the configuration
- AuthConfigurationProvider authConf = AuthConfigurationProvider.reload();
-
- ConnectionParameter moaSPConnParam = authConf
- .getMoaSpConnectionParameter();
-
- // If MOA-SP API calls: loads MOA-SP configuration and configures IAIK
- if (moaSPConnParam == null) {
- try {
- LoggingContextManager.getInstance().setLoggingContext(
- new LoggingContext("startup"));
- ConfigurationProvider config = ConfigurationProvider
- .getInstance();
- new IaikConfigurator().configure(config);
- } catch (at.gv.egovernment.moa.spss.server.config.ConfigurationException ex) {
- throw new ConfigurationException("config.10", new Object[] { ex
- .toString() }, ex);
+ try {
+ AuthConfiguration authConf = AuthConfigurationProviderFactory.reload();
+
+ ConnectionParameter moaSPConnParam = authConf
+ .getMoaSpConnectionParameter();
+
+ // If MOA-SP API calls: loads MOA-SP configuration and configures IAIK
+ if (moaSPConnParam == null) {
+ try {
+ LoggingContextManager.getInstance().setLoggingContext(
+ new LoggingContext("startup"));
+ ConfigurationProvider config = ConfigurationProvider
+ .getInstance();
+ new IaikConfigurator().configure(config);
+ } catch (at.gv.egovernment.moa.spss.server.config.ConfigurationException ex) {
+ throw new ConfigurationException("config.10", new Object[] { ex
+ .toString() }, ex);
+ }
}
+
+ // Initializes IAIKX509TrustManager logging
+ /*
+ String log4jConfigURL = System.getProperty("log4j.configuration");
+ Logger.info("Log4J Configuration: " + log4jConfigURL);
+ if (log4jConfigURL != null) {
+ IAIKX509TrustManager.initLog(new LoggerConfigImpl(log4jConfigURL));
+ }
+ */
+
+ // Initializes the Axis secure socket factory for use in calling the
+ // MOA-SP web service
+ if (moaSPConnParam != null && moaSPConnParam.isHTTPSURL()) {
+ SSLSocketFactory ssf = SSLUtils.getSSLSocketFactory(authConf,
+ moaSPConnParam);
+ AxisSecureSocketFactory.initialize(ssf);
+ }
+
+
+ } catch (ConfigurationException e) {
+ Logger.error("MOA-ID-Auth start-up FAILED. Error during application configuration.", e);
+ System.exit(-1);
+
}
-
- // Initializes IAIKX509TrustManager logging
- /*
- String log4jConfigURL = System.getProperty("log4j.configuration");
- Logger.info("Log4J Configuration: " + log4jConfigURL);
- if (log4jConfigURL != null) {
- IAIKX509TrustManager.initLog(new LoggerConfigImpl(log4jConfigURL));
- }
- */
-
- // Initializes the Axis secure socket factory for use in calling the
- // MOA-SP web service
- if (moaSPConnParam != null && moaSPConnParam.isHTTPSURL()) {
- SSLSocketFactory ssf = SSLUtils.getSSLSocketFactory(authConf,
- moaSPConnParam);
- AxisSecureSocketFactory.initialize(ssf);
- }
-
// Starts the session cleaner thread to remove unpicked authentication data
AuthenticationSessionCleaner.start();
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java
index a6c2cde05..760d28d5b 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java
@@ -50,7 +50,7 @@ import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.id.auth.exception.ParseException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.TargetToSectorNameMapper;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.util.Random;
@@ -265,9 +265,12 @@ public class AuthenticationBlockAssertionBuilder extends AuthenticationAssertion
String text = "";
try {
- OAAuthParameter oaparam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
- if (MiscUtil.isNotEmpty(text = oaparam.getAditionalAuthBlockText()))
- Logger.info("Use addional AuthBlock Text from OA=" + oaparam.getPublicURLPrefix());
+ OAAuthParameter oaparam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
+ if (MiscUtil.isNotEmpty(oaparam.getAditionalAuthBlockText())) {
+ Logger.debug("Use addional AuthBlock Text from OA=" + oaparam.getPublicURLPrefix());
+ text = oaparam.getAditionalAuthBlockText();
+ }
+
} catch (ConfigurationException e) {
Logger.warn("Addional AuthBlock Text can not loaded from OA!", e);
}
@@ -352,7 +355,7 @@ public class AuthenticationBlockAssertionBuilder extends AuthenticationAssertion
//BZ.., reading OA parameters
OAAuthParameter oaParam;
try {
- oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(
+ oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(
session.getPublicOAURLPrefix());
} catch (ConfigurationException e) {
Logger.error("Error on building AUTH-Block: " + e.getMessage());
@@ -417,9 +420,11 @@ public class AuthenticationBlockAssertionBuilder extends AuthenticationAssertion
String text = "";
try {
- OAAuthParameter oaparam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
- if (MiscUtil.isNotEmpty(text = oaparam.getAditionalAuthBlockText()))
- Logger.info("Use addional AuthBlock Text from OA=" + oaparam.getPublicURLPrefix());
+ OAAuthParameter oaparam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
+ if (MiscUtil.isNotEmpty(oaparam.getAditionalAuthBlockText())) {
+ Logger.debug("Use addional AuthBlock Text from OA=" + oaparam.getPublicURLPrefix());
+ text = oaparam.getAditionalAuthBlockText();
+ }
} catch (ConfigurationException e) {
Logger.warn("Addional AuthBlock Text can not loaded from OA!", e);
}
@@ -525,7 +530,7 @@ public class AuthenticationBlockAssertionBuilder extends AuthenticationAssertion
//adding friendly name of OA
String friendlyname;
try {
- friendlyname = AuthConfigurationProvider.getInstance().getSSOFriendlyName();
+ friendlyname = AuthConfigurationProviderFactory.getInstance().getSSOFriendlyName();
ExtendedSAMLAttribute oaFriendlyNameAttribute =
new ExtendedSAMLAttributeImpl("oaFriendlyName", friendlyname, Constants.MOA_NS_URI, ExtendedSAMLAttribute.ADD_TO_AUTHBLOCK_ONLY);
@@ -533,7 +538,7 @@ public class AuthenticationBlockAssertionBuilder extends AuthenticationAssertion
extendedSAMLAttributes.add(oaFriendlyNameAttribute);
- String text = AuthConfigurationProvider.getInstance().getSSOSpecialText();
+ String text = AuthConfigurationProviderFactory.getInstance().getSSOSpecialText();
if (MiscUtil.isEmpty(text))
text="";
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java
index cd751ce7f..573f2e09f 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java
@@ -75,7 +75,8 @@ import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionSto
import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.AuthenticationData;
@@ -115,7 +116,7 @@ import at.gv.util.xsd.szr.PersonInfoType;
* @author tlenz
*
*/
-public class AuthenticationDataBuilder implements MOAIDAuthConstants {
+public class AuthenticationDataBuilder extends MOAIDAuthConstants {
public static IAuthData buildAuthenticationData(IRequest protocolRequest,
AuthenticationSession session, List<Attribute> reqAttributes) throws ConfigurationException, BuildException, WrongParametersException, DynamicOABuildException {
@@ -176,7 +177,7 @@ public class AuthenticationDataBuilder implements MOAIDAuthConstants {
IOAAuthParameters oaParam = null;
if (reqAttributes == null) {
//get OnlineApplication from MOA-ID-Auth configuration
- oaParam = AuthConfigurationProvider.getInstance()
+ oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(oaID);
//build OA dynamically from STROK request if this OA is used as STORK<->PVP gateway
@@ -199,7 +200,7 @@ public class AuthenticationDataBuilder implements MOAIDAuthConstants {
} else {
//get attributes from interfederated IDP
- OAAuthParameter idp = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(interfIDP.getIdpurlprefix());
+ OAAuthParameter idp = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(interfIDP.getIdpurlprefix());
getAuthDataFromInterfederation(authdata, session, oaParam, protocolRequest, interfIDP, idp, reqAttributes);
//mark attribute request as used
@@ -484,7 +485,7 @@ public class AuthenticationDataBuilder implements MOAIDAuthConstants {
if (MiscUtil.isEmpty(authData.getIdentificationValue())) {
Logger.info("No baseID found. Connect SZR to reveive baseID ...");
try {
- EgovUtilPropertiesConfiguration eGovClientsConfig = AuthConfigurationProvider.getInstance().geteGovUtilsConfig();
+ EgovUtilPropertiesConfiguration eGovClientsConfig = AuthConfigurationProviderFactory.getInstance().geteGovUtilsConfig();
if (eGovClientsConfig != null) {
SZRClient szrclient = new SZRClient(eGovClientsConfig);
@@ -929,7 +930,7 @@ public class AuthenticationDataBuilder implements MOAIDAuthConstants {
//set max. SSO session time
if (authData.isSsoSession()) {
- long maxSSOSessionTime = AuthConfigurationProvider.getInstance().getTimeOuts().getMOASessionCreated().longValue() * 1000;
+ long maxSSOSessionTime = AuthConfigurationProviderFactory.getInstance().getSSOCreatedTimeOut() * 1000;
Date ssoSessionValidTo = new Date(session.getSessionCreated().getTime() + maxSSOSessionTime);
authData.setSsoSessionValidTo(ssoSessionValidTo);
@@ -994,7 +995,7 @@ public class AuthenticationDataBuilder implements MOAIDAuthConstants {
IdentityLinkReSigner identitylinkresigner = IdentityLinkReSigner.getInstance();
Element resignedilAssertion;
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
if (config.isIdentityLinkResigning()) {
resignedilAssertion = identitylinkresigner.resignIdentityLink(businessServiceIdl.getSamlAssertion(), config.getIdentityLinkResigningKey());
} else {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java
index 063d7d8e4..1cf6929e6 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java
@@ -245,7 +245,7 @@ public class BPKBuilder {
identificationValue = calculateStorkeIdentifierBase(baseID, sourceCountry, destinationCountry);
} else { // if not, sector identification value is already calculated by BKU
- Logger.info("STORK eIdentifier already provided by BKU");
+ Logger.debug("STORK eIdentifier already provided by BKU");
identificationValue = baseID;
}
@@ -267,7 +267,7 @@ public class BPKBuilder {
private String calculateStorkeIdentifierBase(String baseID, String sourceCountry, String destinationCountry) throws BuildException {
String basisbegriff = baseID + "+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry;
- Logger.info("Building STORK identification from: [identValue]+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry);
+ Logger.debug("Building STORK identification from: [identValue]+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry);
return calculatebPKwbPK(basisbegriff);
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DataURLBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DataURLBuilder.java
index 924051e2a..899b0fd15 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DataURLBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DataURLBuilder.java
@@ -46,6 +46,7 @@
package at.gv.egovernment.moa.id.auth.builder;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.servlet.AuthServlet;
/**
@@ -96,7 +97,7 @@ public class DataURLBuilder {
dataURL = authBaseURL + authServletName;
- dataURL = addParameter(dataURL, AuthServlet.PARAM_SESSIONID, sessionID);
+ dataURL = addParameter(dataURL, MOAIDAuthConstants.PARAM_SESSIONID, sessionID);
return dataURL;
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DynamicOAAuthParameterBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DynamicOAAuthParameterBuilder.java
index 49f87122d..bc3645e74 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DynamicOAAuthParameterBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/DynamicOAAuthParameterBuilder.java
@@ -29,7 +29,7 @@ import org.opensaml.saml2.core.Attribute;
import at.gv.egovernment.moa.id.auth.exception.DynamicOABuildException;
import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.config.auth.data.DynamicOAAuthParameters;
@@ -77,7 +77,7 @@ public class DynamicOAAuthParameterBuilder {
if (interfIDP != null) {
//load interfederated IDP informations
- OAAuthParameter idp = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(interfIDP.getIdpurlprefix());
+ OAAuthParameter idp = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(interfIDP.getIdpurlprefix());
if (idp == null) {
Logger.warn("Interfederated IDP configuration is not loadable.");
throw new DynamicOABuildException("Interfederated IDP configuration is not loadable.", null);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java
index 54196427e..dff2daa09 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/LoginFormBuilder.java
@@ -25,23 +25,19 @@ package at.gv.egovernment.moa.id.auth.builder;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
import org.apache.commons.io.IOUtils;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.config.stork.CPEPS;
import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol;
import at.gv.egovernment.moa.id.util.FormBuildUtils;
import at.gv.egovernment.moa.logging.Logger;
@@ -70,7 +66,7 @@ public class LoginFormBuilder {
InputStream input = null;
try {
- String rootconfigdir = AuthConfigurationProvider.getInstance().getRootConfigFileDir();
+ String rootconfigdir = AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir();
pathLocation = rootconfigdir + HTMLTEMPLATESDIR + HTMLTEMPLATEFULL;
File file = new File(new URI(pathLocation));
input = new FileInputStream(file);
@@ -155,26 +151,20 @@ public class LoginFormBuilder {
if (oaParam.isShowStorkLogin()) {
String pepslist = "";
- List<CPEPS> cpepsList = null;
- try {
- cpepsList = ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS();
-
- for (CPEPS current : oaParam.getPepsList())
- // check if master config has changed...
- if(cpepsList != null && cpepsList.contains(current)) {
- String countryName = null;
- if (MiscUtil.isNotEmpty(MOAIDAuthConstants.COUNTRYCODE_XX_TO_NAME.get(current.getCountryCode().toUpperCase())))
- countryName = MOAIDAuthConstants.COUNTRYCODE_XX_TO_NAME.get(current.getCountryCode().toUpperCase());
- else
- countryName = current.getCountryCode().toUpperCase();
-
- pepslist += "<option value=" + current.getCountryCode() + ">"
- + countryName
- + "</option>\n";
-
- }
-
- value = value.replace(PEPSLIST, pepslist);
+ try {
+ for (CPEPS current : oaParam.getPepsList()) {
+ String countryName = null;
+ if (MiscUtil.isNotEmpty(MOAIDAuthConstants.COUNTRYCODE_XX_TO_NAME.get(current.getCountryCode().toUpperCase())))
+ countryName = MOAIDAuthConstants.COUNTRYCODE_XX_TO_NAME.get(current.getCountryCode().toUpperCase());
+ else
+ countryName = current.getCountryCode().toUpperCase();
+
+ pepslist += "<option value=" + current.getCountryCode() + ">"
+ + countryName
+ + "</option>\n";
+
+ }
+ value = value.replace(PEPSLIST, pepslist);
} catch (NullPointerException e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilder.java
index 1e2a4700d..eeca78e60 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilder.java
@@ -51,7 +51,7 @@ import java.security.MessageDigest;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.id.auth.validator.parep.ParepUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.Base64Utils;
@@ -94,7 +94,7 @@ public class SAMLArtifactBuilder {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] sourceID;
// alternative sourceId
- String alternativeSourceID = AuthConfigurationProvider.getInstance().getAlternativeSourceID();
+ String alternativeSourceID = AuthConfigurationProviderFactory.getInstance().getAlternativeSourceID();
// if sourceID is given in GET/POST param - use this as source id
if (!ParepUtils.isEmpty(sourceIdParam)) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SendAssertionFormBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SendAssertionFormBuilder.java
index 24b848176..253125fe9 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SendAssertionFormBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/SendAssertionFormBuilder.java
@@ -33,12 +33,11 @@ import java.net.URI;
import org.apache.commons.io.IOUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol;
import at.gv.egovernment.moa.id.util.FormBuildUtils;
import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.MiscUtil;
public class SendAssertionFormBuilder {
@@ -63,7 +62,7 @@ public class SendAssertionFormBuilder {
String pathLocation;
InputStream input = null;
try {
- String rootconfigdir = AuthConfigurationProvider.getInstance().getRootConfigFileDir();
+ String rootconfigdir = AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir();
pathLocation = rootconfigdir + HTMLTEMPLATESDIR + HTMLTEMPLATEFULL;
try {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/StartAuthenticationBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/StartAuthenticationBuilder.java
index 9a8372a2d..5c1b12e0d 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/StartAuthenticationBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/StartAuthenticationBuilder.java
@@ -30,10 +30,7 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.stork.STORKConfig;
import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.StringUtils;
public class StartAuthenticationBuilder {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionExtensions.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionExtensions.java
new file mode 100644
index 000000000..61b8f7bd3
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionExtensions.java
@@ -0,0 +1,52 @@
+/*
+ * 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.auth.data;
+
+import java.io.Serializable;
+
+/**
+ * @author tlenz
+ *
+ */
+public class AuthenticationSessionExtensions implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ private String uniqueSessionId = null;
+
+ /**
+ * @return the uniqueSessionId
+ */
+ public String getUniqueSessionId() {
+ return uniqueSessionId;
+ }
+
+ /**
+ * @param uniqueSessionId the uniqueSessionId to set
+ */
+ public void setUniqueSessionId(String uniqueSessionId) {
+ this.uniqueSessionId = uniqueSessionId;
+ }
+
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationInvoker.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationInvoker.java
index 479775dd5..72a7d3ba1 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationInvoker.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationInvoker.java
@@ -59,13 +59,15 @@ import org.w3c.dom.Element;
import at.gv.egovernment.moa.id.auth.exception.ServiceException;
import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.spss.api.SignatureVerificationService;
import at.gv.egovernment.moa.spss.api.xmlbind.VerifyXMLSignatureRequestParser;
import at.gv.egovernment.moa.spss.api.xmlbind.VerifyXMLSignatureResponseBuilder;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
+import at.gv.egovernment.moa.util.MiscUtil;
/**
* Invoker of the <code>SignatureVerification</code> web service of MOA-SPSS.<br>
@@ -106,10 +108,10 @@ public class SignatureVerificationInvoker {
SOAPBodyElement response;
String endPoint;
- AuthConfigurationProvider authConfigProvider = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authConfigProvider = AuthConfigurationProviderFactory.getInstance();
authConnParam = authConfigProvider.getMoaSpConnectionParameter();
//If the ConnectionParameter do NOT exist, we try to get the api to work....
- if (authConnParam != null) {
+ if (authConnParam != null && MiscUtil.isNotEmpty(authConnParam.getUrl())) {
Logger.debug("Connecting using auth url: " + authConnParam.getUrl() + ", service " + serviceName.getNamespaceURI() + " : " + serviceName.getLocalPart() + " : "+ serviceName.getPrefix());
endPoint = authConnParam.getUrl();
call.setTargetEndpointAddress(endPoint);
@@ -125,7 +127,7 @@ public class SignatureVerificationInvoker {
VerifyXMLSignatureResponse vsresponse = svs.verifyXMLSignature(vsrequest);
Document result = new VerifyXMLSignatureResponseBuilder().build(vsresponse);
- Logger.setHierarchy("moa.id.auth");
+ //Logger.setHierarchy("moa.id.auth");
return result.getDocumentElement();
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java
index ed3089a41..0cfd16262 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CertificateReadRequestTask.java
@@ -19,7 +19,7 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
@@ -95,7 +95,7 @@ public class CertificateReadRequestTask extends AbstractAuthServletTask {
throw new TaskExecutionException(e.getMessage(), e);
} finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java
index ee6f0d5a4..df3d90aab 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/CreateIdentityLinkFormTask.java
@@ -8,8 +8,12 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
+import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;
import at.gv.egovernment.moa.id.auth.builder.StartAuthenticationBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
@@ -17,8 +21,10 @@ import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
import at.gv.egovernment.moa.id.auth.servlet.GenerateIFrameTemplateServlet;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.logging.Logger;
@@ -74,6 +80,7 @@ public class CreateIdentityLinkFormTask extends AbstractAuthServletTask {
try {
moasession = AuthenticationSessionStoreage.getSession(moasessionid);
+
AuthenticationSessionStoreage.changeSessionID(moasession);
executionContext.remove(PARAM_SESSIONID);
@@ -89,6 +96,15 @@ public class CreateIdentityLinkFormTask extends AbstractAuthServletTask {
StartAuthenticationBuilder startauth = StartAuthenticationBuilder.getInstance();
String getIdentityLinkForm = startauth.build(moasession, req, resp);
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+
+ if (BooleanUtils.isTrue((Boolean) executionContext.get("useMandate")))
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_MANDATES_REQUESTED);
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_BKU_URL, moasession.getBkuURL());
+
if (!StringUtils.isEmpty(getIdentityLinkForm)) {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = new PrintWriter(resp.getOutputStream());
@@ -113,7 +129,9 @@ public class CreateIdentityLinkFormTask extends AbstractAuthServletTask {
}
finally {
- ConfigurationDBUtils.closeSession();
+
+ TransactionIDUtils.removeTransactionId();
+ TransactionIDUtils.removeSessionId();
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/FinalizeAuthenticationTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/FinalizeAuthenticationTask.java
new file mode 100644
index 000000000..28bed7713
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/FinalizeAuthenticationTask.java
@@ -0,0 +1,118 @@
+/*
+ * 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.auth.modules.internal.tasks;
+
+import static at.gv.egovernment.moa.id.auth.MOAIDAuthConstants.PARAM_SESSIONID;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
+import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
+import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
+import at.gv.egovernment.moa.id.process.api.ExecutionContext;
+import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class FinalizeAuthenticationTask extends AbstractAuthServletTask {
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.process.springweb.MoaIdTask#execute(at.gv.egovernment.moa.id.process.api.ExecutionContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ */
+ @Override
+ public void execute(ExecutionContext executionContext,
+ HttpServletRequest request, HttpServletResponse response)
+ throws TaskExecutionException {
+
+ try {
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+
+ //get Session from context
+ String moasessionid = (String) executionContext.get(PARAM_SESSIONID);
+ AuthenticationSession session = null;
+ if (MiscUtil.isEmpty(moasessionid)) {
+ Logger.warn("MOASessionID is empty.");
+ throw new MOAIDException("auth.18", new Object[] {});
+ }
+
+ try {
+ session = AuthenticationSessionStoreage.getSession(moasessionid);
+ AuthenticationSessionStoreage.changeSessionID(session);
+
+ } catch (MOADatabaseException e) {
+ Logger.info("MOASession with SessionID=" + moasessionid + " is not found in Database");
+ throw new MOAIDException("init.04", new Object[] { moasessionid });
+
+ } catch (Throwable e) {
+ Logger.info("No HTTP Session found!");
+ throw new MOAIDException("auth.18", new Object[] {});
+
+ } finally {
+ executionContext.remove(PARAM_SESSIONID);
+
+ }
+
+
+ session.setAuthenticatedUsed(false);
+ session.setAuthenticated(true);
+
+
+ String oldsessionID = session.getSessionID();
+
+ //Session is implicte stored in changeSessionID!!!
+ String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
+
+ Logger.info("AuthProcess finished. Redirect to Protocol Dispatcher.");
+
+ String redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(),
+ ModulUtils.buildAuthURL(session.getModul(), session.getAction(), pendingReq.getRequestID()), newMOASessionID);
+
+ response.setContentType("text/html");
+ response.setStatus(302);
+ response.addHeader("Location", redirectURL);
+ Logger.debug("REDIRECT TO: " + redirectURL);
+
+ } catch (MOAIDException e) {
+ throw new TaskExecutionException(e.getMessage(), e);
+
+ } catch (Exception e) {
+ Logger.warn("FinalizeAuthenticationTask has an internal error", e);
+ throw new TaskExecutionException(e.getMessage(), e);
+
+ }
+
+ }
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java
index 6bf68e2eb..215a7a809 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java
@@ -15,6 +15,8 @@ import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.lang.StringEscapeUtils;
import org.w3c.dom.Element;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -29,7 +31,9 @@ import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;
import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
import at.gv.egovernment.moa.id.client.SZRGWClientException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
@@ -99,6 +103,11 @@ public class GetForeignIDTask extends AbstractAuthServletTask {
pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
session = AuthenticationServer.getSession(sessionID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_BKU_DATAURL_IP, req.getRemoteHost());
+
// change MOASessionID
sessionID = AuthenticationSessionStoreage.changeSessionID(session);
@@ -118,7 +127,7 @@ public class GetForeignIDTask extends AbstractAuthServletTask {
throw new ParseException("parser.04", new Object[] { REQ_VERIFY_AUTH_BLOCK, PARAM_XMLRESPONSE });
}
-
+
Element signature = csresp.getDsigSignature();
try {
@@ -128,6 +137,9 @@ public class GetForeignIDTask extends AbstractAuthServletTask {
throw new MOAIDException("auth.14", null);
}
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_FOREIGN_SZRGW_CONNECTED);
+
// make SZR request to the identity link
CreateIdentityLinkResponse response = AuthenticationServer.getInstance().getIdentityLink(signature);
@@ -151,24 +163,18 @@ public class GetForeignIDTask extends AbstractAuthServletTask {
Logger.info("Changed MOASession " + sessionID + " to Session " + newMOASessionID);
Logger.info("Daten angelegt zu MOASession " + newMOASessionID);
-
- redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(),
- ModulUtils.buildAuthURL(session.getModul(), session.getAction(), pendingRequestID),
- newMOASessionID);
- redirectURL = resp.encodeRedirectURL(redirectURL);
-
- // TODO[branch]: Final step back to /dispatcher
-
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_FOREIGN_SZRGW_RECEIVED);
+
try {
AuthenticationSessionStoreage.storeSession(session);
} catch (MOADatabaseException e) {
throw new MOAIDException("Session store error", null);
}
- resp.setContentType("text/html");
- resp.setStatus(302);
- resp.addHeader("Location", redirectURL);
- Logger.debug("REDIRECT TO: " + redirectURL);
+ //put session to context
+ executionContext.put(PARAM_SESSIONID, session.getSessionID());
}
} catch (MOAIDException ex) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java
index 4ff5672bd..4951dcab8 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java
@@ -14,6 +14,8 @@ import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang.StringEscapeUtils;
import org.xml.sax.SAXException;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -22,10 +24,13 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
@@ -84,17 +89,20 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {
session = AuthenticationServer.getSession(sessionID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+
//change MOASessionID
sessionID = AuthenticationSessionStoreage.changeSessionID(session);
String misSessionID = session.getMISSessionID();
- AuthConfigurationProvider authConf = AuthConfigurationProvider
+ AuthConfiguration authConf = AuthConfigurationProviderFactory
.getInstance();
ConnectionParameter connectionParameters = authConf
.getOnlineMandatesConnectionParameter();
SSLSocketFactory sslFactory = SSLUtils.getSSLSocketFactory(
- AuthConfigurationProvider.getInstance(),
+ AuthConfigurationProviderFactory.getInstance(),
connectionParameters);
List<MISMandate> list = MISSimpleClient.sendGetMandatesRequest(
@@ -105,6 +113,10 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {
throw new AuthenticationException("auth.15", null);
}
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_MANDATE_RECEIVED);
+
+
// for now: list contains only one element
MISMandate mandate = (MISMandate) list.get(0);
@@ -127,12 +139,10 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {
AuthenticationServer.getInstance().verifyMandate(session, mandate);
session.setMISMandate(mandate);
- session.setAuthenticatedUsed(false);
- session.setAuthenticated(true);
-
- //set QAA Level four in case of card authentifcation
- session.setQAALevel(PVPConstants.STORK_QAA_1_4);
+ //log mandate specific set of events
+ MOAReversionLogger.getInstance().logMandateEventSet(pendingReq, mandate);
+
String oldsessionID = session.getSessionID();
//Session is implicite stored in changeSessionID!!!
@@ -140,19 +150,10 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {
Logger.info("Changed MOASession " + oldsessionID + " to Session " + newMOASessionID);
Logger.info("Daten angelegt zu MOASession " + newMOASessionID);
-
- String redirectURL = new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- ModulUtils.buildAuthURL(session.getModul(),
- session.getAction(), pendingRequestID), newMOASessionID);
- redirectURL = resp.encodeRedirectURL(redirectURL);
-
- // TODO[branch]: Final step back to /dispatcher
+
+ //put session to context
+ executionContext.put(PARAM_SESSIONID, session.getSessionID());
- resp.setContentType("text/html");
- resp.setStatus(302);
- resp.addHeader("Location", redirectURL);
- Logger.debug("REDIRECT TO: " + redirectURL);
} catch (MOAIDException ex) {
throw new TaskExecutionException(ex.getMessage(), ex);
@@ -175,7 +176,7 @@ public class GetMISSessionIDTask extends AbstractAuthServletTask {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java
index 3ae35bc24..4dcd48f57 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareAuthBlockSignatureTask.java
@@ -13,8 +13,9 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
@@ -71,13 +72,9 @@ public class PrepareAuthBlockSignatureTask extends AbstractAuthServletTask {
// change MOASessionID
sessionID = AuthenticationSessionStoreage.changeSessionID(session);
- Logger.info("Normal");
-
- // TODO[branch]: Default behaviour; respond with CXSR for authblock signature, dataURL "/VerifyAuthBlock"
-
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(
session.getPublicOAURLPrefix());
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authConf = AuthConfigurationProviderFactory.getInstance();
String createXMLSignatureRequest = AuthenticationServer.getInstance()
.getCreateXMLSignatureRequestAuthBlockOrRedirect(session, authConf, oaParam);
@@ -97,7 +94,7 @@ public class PrepareAuthBlockSignatureTask extends AbstractAuthServletTask {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java
new file mode 100644
index 000000000..099bc085c
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java
@@ -0,0 +1,207 @@
+/*
+ * 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.auth.modules.internal.tasks;
+
+import static at.gv.egovernment.moa.id.auth.MOAIDAuthConstants.GET_MIS_SESSIONID;
+import static at.gv.egovernment.moa.id.auth.MOAIDAuthConstants.PARAM_SESSIONID;
+
+import java.util.List;
+
+import javax.net.ssl.SSLSocketFactory;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.w3c.dom.Element;
+
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
+import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
+import at.gv.egovernment.moa.id.auth.exception.BuildException;
+import at.gv.egovernment.moa.id.auth.exception.MISSimpleClientException;
+import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
+import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
+import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.config.ConnectionParameter;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
+import at.gv.egovernment.moa.id.process.api.ExecutionContext;
+import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
+import at.gv.egovernment.moa.id.util.SSLUtils;
+import at.gv.egovernment.moa.id.util.client.mis.simple.MISSessionId;
+import at.gv.egovernment.moa.id.util.client.mis.simple.MISSimpleClient;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.DOMUtils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class PrepareGetMISMandateTask extends AbstractAuthServletTask {
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.process.springweb.MoaIdTask#execute(at.gv.egovernment.moa.id.process.api.ExecutionContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ */
+ @Override
+ public void execute(ExecutionContext executionContext,
+ HttpServletRequest request, HttpServletResponse response)
+ throws TaskExecutionException {
+
+ //mandate Mode
+ try {
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+
+ //get Session from context
+ String moasessionid = (String) executionContext.get(PARAM_SESSIONID);
+ AuthenticationSession session = null;
+ if (MiscUtil.isEmpty(moasessionid)) {
+ Logger.warn("MOASessionID is empty.");
+ throw new MOAIDException("auth.18", new Object[] {});
+ }
+
+ try {
+ session = AuthenticationSessionStoreage.getSession(moasessionid);
+ AuthenticationSessionStoreage.changeSessionID(session);
+
+ } catch (MOADatabaseException e) {
+ Logger.info("MOASession with SessionID=" + moasessionid + " is not found in Database");
+ throw new MOAIDException("init.04", new Object[] { moasessionid });
+
+ } catch (Throwable e) {
+ Logger.info("No HTTP Session found!");
+ throw new MOAIDException("auth.18", new Object[] {});
+
+ } finally {
+ executionContext.remove(PARAM_SESSIONID);
+
+ }
+
+
+ AuthConfiguration authConf= AuthConfigurationProviderFactory.getInstance();
+ ConnectionParameter connectionParameters = authConf.getOnlineMandatesConnectionParameter();
+ SSLSocketFactory sslFactory = SSLUtils.getSSLSocketFactory(AuthConfigurationProviderFactory.getInstance(), connectionParameters);
+
+ // get identitity link as byte[]
+ Element elem = session.getIdentityLink().getSamlAssertion();
+ String s = DOMUtils.serializeNode(elem);
+
+ //System.out.println("IDL: " + s);
+
+ byte[] idl = s.getBytes("UTF-8");
+
+ // redirect url
+ // build redirect(to the GetMISSessionIdSerlvet)
+
+ //change MOASessionID before MIS request
+ String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
+
+ String redirectURL = new DataURLBuilder().buildDataURL(
+ session.getAuthURL(),
+ GET_MIS_SESSIONID,
+ newMOASessionID);
+
+ String oaURL = session.getOAURLRequested();
+ IOAAuthParameters oaParam = pendingReq.getOnlineApplicationConfiguration();
+ if (oaParam == null) {
+ oaParam = authConf.getOnlineApplicationParameter(oaURL);
+ Logger.info("No Service info in PendingRequest --> load service info from configuration");
+
+ }
+
+ List<String> profiles = oaParam.getMandateProfiles();
+
+ if (profiles == null) {
+ Logger.error("No Mandate/Profile for OA configured.");
+ throw new AuthenticationException("config.21", new Object[] { GET_MIS_SESSIONID});
+ }
+
+ String oaFriendlyName = oaParam.getFriendlyName();
+ String mandateReferenceValue = session.getMandateReferenceValue();
+ byte[] cert = session.getEncodedSignerCertificate();
+ byte[] authBlock = session.getAuthBlock().getBytes("UTF-8");
+
+ //TODO: check in case of SSO!!!
+ String targetType = null;
+ if(oaParam.getBusinessService()) {
+ String id = oaParam.getIdentityLinkDomainIdentifier();
+ if (id.startsWith(AuthenticationSession.REGISTERANDORDNR_PREFIX_))
+ targetType = id;
+ else
+ targetType = AuthenticationSession.REGISTERANDORDNR_PREFIX_+session.getDomainIdentifier();
+
+ } else {
+ targetType = AuthenticationSession.TARGET_PREFIX_ + oaParam.getTarget();
+ }
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_MANDATE_SERVICE_REQUESTED, mandateReferenceValue);
+
+ MISSessionId misSessionID = MISSimpleClient.sendSessionIdRequest(
+ connectionParameters.getUrl(),
+ idl,
+ cert,
+ oaFriendlyName,
+ redirectURL,
+ mandateReferenceValue,
+ profiles,
+ targetType,
+ authBlock,
+ sslFactory);
+
+ if (misSessionID == null) {
+ Logger.error("Fehler bei Anfrage an Vollmachten Service. MIS Session ID ist null.");
+ throw new MISSimpleClientException("Fehler bei Anfrage an Vollmachten Service.");
+ }
+
+ String redirectMISGUI = misSessionID.getRedirectURL();
+ session.setMISSessionID(misSessionID.getSessiondId());
+
+ try {
+ AuthenticationSessionStoreage.storeSession(session);
+
+ } catch (MOADatabaseException | BuildException e) {
+ throw new MOAIDException("Session store error", null);
+
+ }
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_MANDATE_REDIRECT);
+
+ response.setStatus(302);
+ response.addHeader("Location", redirectMISGUI);
+ Logger.debug("REDIRECT TO: " + redirectMISGUI);
+
+ } catch (Exception e ) {
+ throw new TaskExecutionException(e.getMessage(), e);
+
+ }
+ }
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java
index 64dcb0f41..da464ba68 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyAuthenticationBlockTask.java
@@ -17,6 +17,8 @@ import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.lang.StringEscapeUtils;
import org.w3c.dom.Element;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -26,12 +28,15 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
@@ -114,123 +119,28 @@ public class VerifyAuthenticationBlockTask extends AbstractAuthServletTask {
AuthenticationSession session = AuthenticationServer.getSession(sessionID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_BKU_DATAURL_IP, req.getRemoteHost());
+
//change MOASessionID
sessionID = AuthenticationSessionStoreage.changeSessionID(session);
- String authenticatedMOASessionId = AuthenticationServer.getInstance().verifyAuthenticationBlock(session, createXMLSignatureResponse);
-
- if (authenticatedMOASessionId == null) {
- //mandate Mode
+ AuthenticationServer.getInstance().verifyAuthenticationBlock(pendingReq, session, createXMLSignatureResponse);
- AuthConfigurationProvider authConf= AuthConfigurationProvider.getInstance();
- ConnectionParameter connectionParameters = authConf.getOnlineMandatesConnectionParameter();
- SSLSocketFactory sslFactory = SSLUtils.getSSLSocketFactory(AuthConfigurationProvider.getInstance(), connectionParameters);
-
- // get identitity link as byte[]
- Element elem = session.getIdentityLink().getSamlAssertion();
- String s = DOMUtils.serializeNode(elem);
-
- //System.out.println("IDL: " + s);
-
- byte[] idl = s.getBytes("UTF-8");
-
- // redirect url
- // build redirect(to the GetMISSessionIdSerlvet)
-
- //change MOASessionID before MIS request
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- redirectURL =
- new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- GET_MIS_SESSIONID,
- newMOASessionID);
-
- String oaURL = session.getOAURLRequested();
- OAAuthParameter oaParam = authConf.getOnlineApplicationParameter(oaURL);
- List<String> profiles = oaParam.getMandateProfiles();
-
- if (profiles == null) {
- Logger.error("No Mandate/Profile for OA configured.");
- throw new AuthenticationException("config.21", new Object[] { GET_MIS_SESSIONID});
- }
-
- String oaFriendlyName = oaParam.getFriendlyName();
- String mandateReferenceValue = session.getMandateReferenceValue();
- byte[] cert = session.getEncodedSignerCertificate();
- byte[] authBlock = session.getAuthBlock().getBytes("UTF-8");
-
- //TODO: check in case of SSO!!!
- String targetType = null;
- if(oaParam.getBusinessService()) {
- String id = oaParam.getIdentityLinkDomainIdentifier();
- if (id.startsWith(AuthenticationSession.REGISTERANDORDNR_PREFIX_))
- targetType = id;
- else
- targetType = AuthenticationSession.REGISTERANDORDNR_PREFIX_+session.getDomainIdentifier();
-
- } else {
- targetType = AuthenticationSession.TARGET_PREFIX_ + oaParam.getTarget();
- }
-
- MISSessionId misSessionID = MISSimpleClient.sendSessionIdRequest(
- connectionParameters.getUrl(),
- idl,
- cert,
- oaFriendlyName,
- redirectURL,
- mandateReferenceValue,
- profiles,
- targetType,
- authBlock,
- sslFactory);
-
- if (misSessionID == null) {
- Logger.error("Fehler bei Anfrage an Vollmachten Service. MIS Session ID ist null.");
- throw new MISSimpleClientException("Fehler bei Anfrage an Vollmachten Service.");
- }
-
- String redirectMISGUI = misSessionID.getRedirectURL();
- session.setMISSessionID(misSessionID.getSessiondId());
-
- try {
- AuthenticationSessionStoreage.storeSession(session);
- } catch (MOADatabaseException e) {
- throw new MOAIDException("Session store error", null);
- }
-
- // TODO[branch]: Mandate; redirect to MIS website; website redirects back to "/GetMISSessionID"
-
- resp.setStatus(302);
- resp.addHeader("Location", redirectMISGUI);
- Logger.debug("REDIRECT TO: " + redirectURL);
- }
- else {
- // TODO[branch]: Final step back to /dispatcher
- redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(),
- ModulUtils.buildAuthURL(session.getModul(), session.getAction(), pendingRequestID), authenticatedMOASessionId);
-
- resp.setContentType("text/html");
- resp.setStatus(302);
+ //store all changes in session DAO
+ AuthenticationSessionStoreage.storeSession(session);
- resp.addHeader("Location", redirectURL);
- Logger.debug("REDIRECT TO: " + redirectURL);
-
- }
+ //put session to context
+ executionContext.put(PARAM_SESSIONID, session.getSessionID());
}
catch (MOAIDException ex) {
throw new TaskExecutionException(ex.getMessage(), ex);
- } catch (GeneralSecurityException e) {
- throw new TaskExecutionException(e.getMessage(), e);
-
- } catch (PKIException e) {
- throw new TaskExecutionException(e.getMessage(), e);
-
- } catch (TransformerException e) {
- throw new TaskExecutionException(e.getMessage(), e);
+
} catch (Exception e) {
Logger.error("AuthBlockValidation has an interal Error.", e);
@@ -240,7 +150,7 @@ public class VerifyAuthenticationBlockTask extends AbstractAuthServletTask {
finally {
- ConfigurationDBUtils.closeSession();
+
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java
index 607641532..5e0be0f2c 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyCertificateTask.java
@@ -12,6 +12,8 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.lang.StringEscapeUtils;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -20,8 +22,10 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
@@ -86,10 +90,15 @@ public class VerifyCertificateTask extends AbstractAuthServletTask {
session = AuthenticationServer.getSession(sessionID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_BKU_DATAURL_IP, req.getRemoteHost());
+
//change MOASessionID
sessionID = AuthenticationSessionStoreage.changeSessionID(session);
- X509Certificate cert = AuthenticationServer.getInstance().getCertificate(sessionID, parameters);
+ X509Certificate cert = AuthenticationServer.getInstance().getCertificate(pendingReq, sessionID, parameters);
if (cert == null) {
Logger.error("Certificate could not be read.");
throw new AuthenticationException("auth.14", null);
@@ -113,8 +122,7 @@ public class VerifyCertificateTask extends AbstractAuthServletTask {
}
else {
-
-
+
String countrycode = CertificateUtils.getIssuerCountry(cert);
if (countrycode != null) {
if (countrycode.compareToIgnoreCase("AT") == 0) {
@@ -124,6 +132,9 @@ public class VerifyCertificateTask extends AbstractAuthServletTask {
}
// Foreign Identities Modus
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_FOREIGN_FOUND);
+
String createXMLSignatureRequest = AuthenticationServer.getInstance().createXMLSignatureRequestForeignID(session, cert);
// build dataurl (to the GetForeignIDSerlvet)
String dataurl =
@@ -155,7 +166,7 @@ public class VerifyCertificateTask extends AbstractAuthServletTask {
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java
index 44557453a..f0a0024e5 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/VerifyIdentityLinkTask.java
@@ -10,6 +10,8 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
@@ -17,7 +19,9 @@ import at.gv.egovernment.moa.id.auth.exception.ParseException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
@@ -77,7 +81,12 @@ public class VerifyIdentityLinkTask extends AbstractAuthServletTask {
}
AuthenticationSession session = AuthenticationServer.getSession(sessionID);
- boolean identityLinkAvailable = AuthenticationServer.getInstance().verifyIdentityLink(session, parameters) != null;
+ IRequest pendingReq = RequestStorage.getPendingRequest(
+ (String) executionContext.get("pendingRequestID"));
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_BKU_DATAURL_IP, req.getRemoteHost());
+
+ boolean identityLinkAvailable = AuthenticationServer.getInstance().verifyIdentityLink(pendingReq, session, parameters) != null;
AuthenticationSessionStoreage.storeSession(session);
executionContext.put("identityLinkAvailable", identityLinkAvailable);
@@ -95,7 +104,7 @@ public class VerifyIdentityLinkTask extends AbstractAuthServletTask {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java
index f538d2d12..ded261bfc 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java
@@ -22,12 +22,10 @@
******************************************************************************/
package at.gv.egovernment.moa.id.auth.parser;
-import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringEscapeUtils;
@@ -36,21 +34,18 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.TargetToSectorNameMapper;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.IRequest;
-import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.BoolUtils;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
import at.gv.egovernment.moa.util.StringUtils;
-import at.gv.egovernment.moa.util.URLEncoder;
-public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
+public class StartAuthentificationParameterParser extends MOAIDAuthConstants{
public static void parse(AuthenticationSession moasession,
String target,
@@ -110,7 +105,7 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
OAAuthParameter oaParam;
if (moasession.getPublicOAURLPrefix() != null) {
Logger.debug("Loading OA parameters for PublicURLPrefix: " + moasession.getPublicOAURLPrefix());
- oaParam = AuthConfigurationProvider.getInstance()
+ oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(
moasession.getPublicOAURLPrefix());
@@ -119,7 +114,7 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
new Object[] { moasession.getPublicOAURLPrefix() });
} else {
- oaParam = AuthConfigurationProvider.getInstance()
+ oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(oaURL);
if (oaParam == null)
@@ -143,7 +138,25 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
Logger.error("Selected target is invalid. Using target: " + target);
throw new WrongParametersException("StartAuthentication", PARAM_TARGET, "auth.12");
}
+ if (MiscUtil.isNotEmpty(targetConfig))
+ targetFriendlyName = targetFriendlyNameConfig;
+ else {
+ String sectorName = TargetToSectorNameMapper.getSectorNameViaTarget(target);
+ if (MiscUtil.isNotEmpty(sectorName))
+ targetFriendlyName = sectorName;
+
+ else {
+ //check target contains subSector
+ int delimiter = target.indexOf("-");
+ if (delimiter > 0) {
+ targetFriendlyName =
+ TargetToSectorNameMapper.getSectorNameViaTarget(target.substring(0, delimiter));
+
+ }
+ }
+ }
+
} else {
// use target from config
target = targetConfig;
@@ -170,7 +183,7 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
//Validate BKU URI
List<String> allowedbkus = oaParam.getBKUURL();
- allowedbkus.addAll(AuthConfigurationProvider.getInstance().getDefaultBKUURLs());
+ allowedbkus.addAll(AuthConfigurationProviderFactory.getInstance().getDefaultBKUURLs());
if (!ParamValidatorUtils.isValidBKUURI(bkuURL, allowedbkus))
throw new WrongParametersException("StartAuthentication", PARAM_BKU, "auth.12");
@@ -213,12 +226,12 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
}
authURL = authURL.concat(req.getContextPath() + "/");
- if (!authURL.startsWith("https:") && !AuthConfigurationProvider.getInstance().isHTTPAuthAllowed())
+ if (!authURL.startsWith("https:") && !AuthConfigurationProviderFactory.getInstance().isHTTPAuthAllowed())
throw new AuthenticationException("auth.07",
new Object[] { authURL + "*" });
//set Auth URL from configuration
- moasession.setAuthURL(AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/");
+ moasession.setAuthURL(AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/");
//check and set SourceID
if (oaParam.getSAML1Parameter() != null) {
@@ -229,21 +242,21 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
if (MiscUtil.isEmpty(templateURL)) {
- List<TemplateType> templateURLList = oaParam.getTemplateURL();
+ List<String> templateURLList = oaParam.getTemplateURL();
List<String> defaulTemplateURLList =
- AuthConfigurationProvider.getInstance().getSLRequestTemplates();
+ AuthConfigurationProviderFactory.getInstance().getSLRequestTemplates();
if ( templateURLList != null && templateURLList.size() > 0
- && MiscUtil.isNotEmpty(templateURLList.get(0).getURL()) ) {
+ && MiscUtil.isNotEmpty(templateURLList.get(0)) ) {
templateURL = FileUtils.makeAbsoluteURL(
- oaParam.getTemplateURL().get(0).getURL(),
- AuthConfigurationProvider.getInstance().getRootConfigFileDir());
+ oaParam.getTemplateURL().get(0),
+ AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir());
Logger.info("No SL-Template in request, load SL-Template from OA configuration (URL: " + templateURL + ")");
} else if ( (defaulTemplateURLList.size() > 0) && MiscUtil.isNotEmpty(defaulTemplateURLList.get(0))) {
templateURL = FileUtils.makeAbsoluteURL(
defaulTemplateURLList.get(0),
- AuthConfigurationProvider.getInstance().getRootConfigFileDir());
+ AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir());
Logger.info("No SL-Template in request, load SL-Template from general configuration (URL: " + templateURL + ")");
} else {
@@ -289,6 +302,15 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{
String useMandate = req.getParameter(PARAM_USEMANDATE);
String ccc = req.getParameter(PARAM_CCC);
+ if (request.getOnlineApplicationConfiguration() != null &&
+ request.getOnlineApplicationConfiguration().isOnlyMandateAllowed()) {
+ Logger.debug("Service " + request.getOnlineApplicationConfiguration().getPublicURLPrefix()
+ + " only allows authentication with mandates. --> Set useMandate to TRUE.");
+ useMandate = String.valueOf(request.getOnlineApplicationConfiguration().isOnlyMandateAllowed());
+
+ }
+
+
oaURL = request.getOAURL();
target = request.getTarget();
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java
index c4c4b2691..43f4f90ff 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AuthServlet.java
@@ -96,7 +96,7 @@ import at.gv.egovernment.moa.util.URLDecoder;
* @author Paul Ivancsics
* @version $Id$
*/
-public class AuthServlet extends HttpServlet implements MOAIDAuthConstants {
+public class AuthServlet extends HttpServlet {
/**
*
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java
index ad4776a45..c33cb3d81 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java
@@ -31,16 +31,18 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.registration.ModuleRegistration;
import at.gv.egovernment.moa.id.auth.parser.StartAuthentificationParameterParser;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
+
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.IRequest;
@@ -61,15 +63,15 @@ public class GenerateIFrameTemplateServlet extends AuthServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
- Logger.info("Receive " + GenerateIFrameTemplateServlet.class + " Request");
+ Logger.debug("Receive " + GenerateIFrameTemplateServlet.class + " Request");
String pendingRequestID = null;
try {
- String bkuid = req.getParameter(PARAM_BKU);
- String useMandate = req.getParameter(PARAM_USEMANDATE);
- String ccc = req.getParameter(PARAM_CCC);
- String moasessionid = req.getParameter(PARAM_SESSIONID);
+ String bkuid = req.getParameter(MOAIDAuthConstants.PARAM_BKU);
+ String useMandate = req.getParameter(MOAIDAuthConstants.PARAM_USEMANDATE);
+ String ccc = req.getParameter(MOAIDAuthConstants.PARAM_CCC);
+ String moasessionid = req.getParameter(MOAIDAuthConstants.PARAM_SESSIONID);
moasessionid = StringEscapeUtils.escapeHtml(moasessionid);
@@ -98,44 +100,53 @@ public class GenerateIFrameTemplateServlet extends AuthServlet {
}
//load OA Config
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(moasession.getOAURLRequested());
if (oaParam == null)
throw new AuthenticationException("auth.00", new Object[] { moasession.getOAURLRequested() });
else {
-
+
//get Target from config or from request in case of SAML 1
String target = null;
- IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+ if (pendingReq == null) {
+ Logger.info("No PendingRequest with Id: " + pendingRequestID + " Maybe, a transaction timeout occure.");
+ throw new MOAIDException("auth.28", new Object[]{pendingRequestID});
+
+ }
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq.getOnlineApplicationConfiguration(),
+ pendingReq, MOAIDEventConstants.AUTHPROCESS_BKUTYPE_SELECTED, bkuid);
+
if (MiscUtil.isNotEmpty(pendingReq.getTarget()) &&
pendingReq.requestedModule().equals(SAML1Protocol.PATH))
target = pendingReq.getTarget();
else
target = oaParam.getTarget();
-
+
String bkuURL = oaParam.getBKUURL(bkuid);
if (MiscUtil.isEmpty(bkuURL)) {
Logger.info("No OA specific BKU defined. Use BKU from default configuration");
- bkuURL = AuthConfigurationProvider.getInstance().getDefaultBKUURL(bkuid);
+ bkuURL = AuthConfigurationProviderFactory.getInstance().getDefaultBKUURL(bkuid);
}
//search for OA specific template
String templateURL = null;
- List<TemplateType> oaTemplateURLList = oaParam.getTemplateURL();
+ List<String> oaTemplateURLList = oaParam.getTemplateURL();
if ( oaTemplateURLList != null && oaTemplateURLList.size() > 0
- && MiscUtil.isNotEmpty(oaTemplateURLList.get(0).getURL()) ) {
- templateURL = oaTemplateURLList.get(0).getURL();
+ && MiscUtil.isNotEmpty(oaTemplateURLList.get(0)) ) {
+ templateURL = oaTemplateURLList.get(0);
} else {
- templateURL = AuthConfigurationProvider.getInstance().getSLRequestTemplates(bkuid);
+ templateURL = AuthConfigurationProviderFactory.getInstance().getSLRequestTemplates(bkuid);
}
//make url absolut if it is a local url
if (MiscUtil.isNotEmpty(templateURL))
templateURL = FileUtils.makeAbsoluteURL(templateURL,
- AuthConfigurationProvider.getInstance().getRootConfigFileDir());
+ AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir());
if (oaParam.isOnlyMandateAllowed())
useMandate = "true";
@@ -161,6 +172,7 @@ public class GenerateIFrameTemplateServlet extends AuthServlet {
ec.put("ccc", moasession.getCcc());
ec.put("useMandate", moasession.getUseMandate());
ec.put("bkuURL", moasession.getBkuURL());
+ ec.put("pendingRequestID", pendingRequestID);
// select and create process instance
String processDefinitionId = ModuleRegistration.getInstance().selectProcess(ec);
@@ -182,6 +194,8 @@ public class GenerateIFrameTemplateServlet extends AuthServlet {
throw new MOAIDException("init.04", new Object[] { moasession.getSessionID() });
}
+ Logger.info("BKU is selected -> Start BKU communication ...");
+
// start process
getProcessEngine().start(processInstanceId);
@@ -199,7 +213,7 @@ public class GenerateIFrameTemplateServlet extends AuthServlet {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetForeignIDServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetForeignIDServlet.java
deleted file mode 100644
index 41c2a9c6a..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetForeignIDServlet.java
+++ /dev/null
@@ -1,325 +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.
- ******************************************************************************/
-/*
- * 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.auth.servlet;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.security.cert.CertificateException;
-import java.util.Map;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.transform.TransformerException;
-
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse;
-import at.gv.egovernment.moa.id.auth.data.IdentityLink;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.auth.modules.internal.tasks.GetForeignIDTask;
-import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;
-import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
-import at.gv.egovernment.moa.id.client.SZRGWClientException;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.moduls.ModulUtils;
-import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.util.xsd.srzgw.CreateIdentityLinkResponse;
-
-/**
- * Servlet requested for getting the foreign eID
- * provided by the security layer implementation.
- * Utilizes the {@link AuthenticationServer}.
- * @deprecated Use {@link GetForeignIDTask} instead.
- *
- */
-public class GetForeignIDServlet extends AuthServlet {
-
- /**
- *
- */
- private static final long serialVersionUID = -3415644214702379483L;
-
-/**
- * Constructor for GetForeignIDServlet.
- */
- public GetForeignIDServlet() {
- super();
- }
-
- /**
- * GET requested by security layer implementation to verify
- * that data URL resource is available.
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
- */
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- super.doGet(req, resp);
- }
-
- /**
- * Verifies the identity link and responds with a new
- * <code>CreateXMLSignatureRequest</code>.
- * <br>
- * Request parameters:
- * <ul>
- * <li>MOASessionID: ID of associated authentication session</li>
- * <li>XMLResponse: <code>&lt;InfoboxReadResponse&gt;</code></li>
- * </ul>
- * Response:
- * <ul>
- * <li>Content type: <code>"text/xml"</code></li>
- * <li>Content: see return value of {@link AuthenticationServer#verifyIdentityLink}</li>
- * <li>Error status: <code>500</code>
- * </ul>
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
- */
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("POST GetForeignIDServlet");
-
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
-
- Map<String, String> parameters;
-
- String pendingRequestID = null;
-
- try
- {
- parameters = getParameters(req);
- } catch (FileUploadException e)
- {
- Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
- throw new IOException(e.getMessage());
- }
- String sessionID = req.getParameter(PARAM_SESSIONID);
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
-
- // escape parameter strings
- sessionID = StringEscapeUtils.escapeHtml(sessionID);
-
- String redirectURL = null;
- AuthenticationSession session = null;
- try {
- String xmlCreateXMLSignatureResponse = (String)parameters.get(PARAM_XMLRESPONSE);
- // check parameter
- if (!ParamValidatorUtils.isValidSessionID(sessionID))
- throw new WrongParametersException("GetForeignID", PARAM_SESSIONID, "auth.12");
- if (!ParamValidatorUtils.isValidXMLDocument(xmlCreateXMLSignatureResponse))
- throw new WrongParametersException("GetForeignID", PARAM_XMLRESPONSE, "auth.12");
-
- session = AuthenticationServer.getSession(sessionID);
-
- //change MOASessionID
- sessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- Logger.debug(xmlCreateXMLSignatureResponse);
-
- CreateXMLSignatureResponse csresp =
- new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse).parseResponseDsig();
-
- try {
- String serializedAssertion = DOMUtils.serializeNode(csresp
- .getDsigSignature());
- session.setAuthBlock(serializedAssertion);
-
- } catch (TransformerException e) {
- throw new ParseException("parser.04", new Object[] {
- REQ_VERIFY_AUTH_BLOCK, PARAM_XMLRESPONSE });
-
- } catch (IOException e) {
- throw new ParseException("parser.04", new Object[] {
- REQ_VERIFY_AUTH_BLOCK, PARAM_XMLRESPONSE });
-
- }
-
- Element signature = csresp.getDsigSignature();
-
- try {
- session.setSignerCertificate(AuthenticationServer.getCertificateFromXML(signature));
- } catch (CertificateException e) {
- Logger.error("Could not extract certificate from CreateXMLSignatureResponse");
- throw new MOAIDException("auth.14", null);
- }
-
- // make SZR request to the identity link
- CreateIdentityLinkResponse response = AuthenticationServer.getInstance().getIdentityLink(signature);
-
-
- if (null != response.getErrorResponse()){
- // TODO fix exception parameter
- throw new SZRGWClientException("service.08", (String)response.getErrorResponse().getErrorCode(),
- (String)response.getErrorResponse().getInfo());
- }
- else {
- IdentityLinkAssertionParser ilParser = new IdentityLinkAssertionParser(new ByteArrayInputStream(response.getIdentityLink()));
- IdentityLink identitylink = ilParser.parseIdentityLink();
- session.setIdentityLink(identitylink);
-
- //set QAA Level four in case of card authentifcation
- session.setQAALevel(PVPConstants.STORK_QAA_1_4);
-
- String samlArtifactBase64 =
- AuthenticationServer.getInstance().getForeignAuthenticationData(session);
-
-
- //session is implicit stored in changeSessionID!!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- Logger.info("Changed MOASession " + sessionID + " to Session " + newMOASessionID);
- Logger.info("Daten angelegt zu MOASession " + newMOASessionID);
-
- if (!samlArtifactBase64.equals("Redirect to Input Processor")) {
- /*redirectURL = session.getOAURLRequested();
- if (!session.getBusinessService()) {
- redirectURL = addURLParameter(redirectURL, PARAM_TARGET, URLEncoder.encode(session.getTarget(), "UTF-8"));
- }
- redirectURL = addURLParameter(redirectURL, PARAM_SAMLARTIFACT, URLEncoder.encode(samlArtifactBase64, "UTF-8"));
- redirectURL = resp.encodeRedirectURL(redirectURL);*/
-
- redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(),
- ModulUtils.buildAuthURL(session.getModul(), session.getAction(), pendingRequestID), newMOASessionID);
- redirectURL = resp.encodeRedirectURL(redirectURL);
-
- } else {
- redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(), AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, newMOASessionID);
-
- }
-
- try {
- AuthenticationSessionStoreage.storeSession(session);
- } catch (MOADatabaseException e) {
- throw new MOAIDException("Session store error", null);
- }
-
-
- resp.setContentType("text/html");
- resp.setStatus(302);
- resp.addHeader("Location", redirectURL);
- Logger.debug("REDIRECT TO: " + redirectURL);
- }
-
- }
- catch (MOAIDException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("GetForeignIDServlet has an interal Error.", e);
-
- }
- }
-
-
-
-
-
- /**
- * Builds the szrgw:GetIdentityLinkRequest fuer the SZR-GW
- * @param givenname
- * @param familyname
- * @param birthday
- * @return
- */
-// private static Document buildGetIdentityLinkRequest(X509Certificate cert) {
-//
-// try {
-// byte[] certbyte = cert.getEncoded();
-// String certstring = Base64.encode(certbyte);
-//
-// DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
-// factory.setNamespaceAware(true);
-// DocumentBuilder builder = factory.newDocumentBuilder();
-// Document doc = builder.newDocument();
-//
-// Element getIdentityLink = doc.createElementNS(SZRGWConstants.SZRGW_REQUEST_NS, "szrgw:GetIdentityLinkRequest");
-// getIdentityLink.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:szrgw", SZRGWConstants.SZRGW_REQUEST_NS);
-// doc.appendChild(getIdentityLink);
-//
-// Element x509certificate = doc.createElementNS(SZRGWConstants.SZRGW_REQUEST_NS, "szrgw:X509Certificate");
-// getIdentityLink.appendChild(x509certificate);
-// Text certbase64 = doc.createTextNode(certstring);
-// x509certificate.appendChild(certbase64);
-//
-// return doc;
-// } catch (ParserConfigurationException e) {
-// e.printStackTrace();
-// } catch (CertificateEncodingException e) {
-// e.printStackTrace();
-// }
-// return null;
-//
-// }
-//
-// /**
-// * Checks a parameter.
-// * @param param parameter
-// * @return true if the parameter is null or empty
-// */
-// private boolean isEmpty(String param) {
-// return param == null || param.length() == 0;
-// }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetMISSessionIDServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetMISSessionIDServlet.java
deleted file mode 100644
index 043b660c1..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GetMISSessionIDServlet.java
+++ /dev/null
@@ -1,271 +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.
- ******************************************************************************/
-/*
- * 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.auth.servlet;
-
-import iaik.pki.PKIException;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.util.List;
-
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.xml.sax.SAXException;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.auth.modules.internal.tasks.GetMISSessionIDTask;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.moduls.ModulUtils;
-import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
-import at.gv.egovernment.moa.id.util.SSLUtils;
-import at.gv.egovernment.moa.id.util.client.mis.simple.MISMandate;
-import at.gv.egovernment.moa.id.util.client.mis.simple.MISSimpleClient;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
-
-/**
- * Servlet requested for getting the foreign eID provided by the security layer
- * implementation. Utilizes the {@link AuthenticationServer}.
- * @deprecated Use {@link GetMISSessionIDTask} instead.
- */
-public class GetMISSessionIDServlet extends AuthServlet {
-
- /**
- *
- */
- private static final long serialVersionUID = 4666952867085392597L;
-
- /**
- * Constructor for GetMISSessionIDServlet.
- */
- public GetMISSessionIDServlet() {
- super();
- }
-
- /**
- * GET requested by security layer implementation to verify that data URL
- * resource is available.
- *
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest,
- * HttpServletResponse)
- */
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- doPost(req, resp);
-
- // Logger.debug("GET GetMISSessionIDServlet");
- //
- // resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- // resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- // resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- // resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
- }
-
- /**
- * Gets the signer certificate from the InfoboxReadRequest and responds with
- * a new <code>CreateXMLSignatureRequest</code>. <br>
- * Request parameters:
- * <ul>
- * <li>MOASessionID: ID of associated authentication session</li>
- * <li>XMLResponse: <code>&lt;InfoboxReadResponse&gt;</code></li>
- * </ul>
- *
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest,
- * HttpServletResponse)
- */
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("POST GetMISSessionIDServlet");
-
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,
- MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,
- MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,
- MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,
- MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
-
- // Map parameters;
- // try
- // {
- // parameters = getParameters(req);
- // } catch (FileUploadException e)
- // {
- // Logger.error("Parsing mulitpart/form-data request parameters failed: "
- // + e.getMessage());
- // throw new IOException(e.getMessage());
- // }
-
- String sessionID = req.getParameter(PARAM_SESSIONID);
-
- // escape parameter strings
- sessionID = StringEscapeUtils.escapeHtml(sessionID);
-
- AuthenticationSession session = null;
- String pendingRequestID = null;
- try {
- // check parameter
- if (!ParamValidatorUtils.isValidSessionID(sessionID))
- throw new WrongParametersException("VerifyCertificate",
- PARAM_SESSIONID, "auth.12");
-
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
-
- session = AuthenticationServer.getSession(sessionID);
-
- //change MOASessionID
- sessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- String misSessionID = session.getMISSessionID();
-
- AuthConfigurationProvider authConf = AuthConfigurationProvider
- .getInstance();
- ConnectionParameter connectionParameters = authConf
- .getOnlineMandatesConnectionParameter();
- SSLSocketFactory sslFactory = SSLUtils.getSSLSocketFactory(
- AuthConfigurationProvider.getInstance(),
- connectionParameters);
-
- List<MISMandate> list = MISSimpleClient.sendGetMandatesRequest(
- connectionParameters.getUrl(), misSessionID, sslFactory);
-
- if (list == null || list.size() == 0) {
- Logger.error("Keine Vollmacht gefunden.");
- throw new AuthenticationException("auth.15", null);
- }
-
- // for now: list contains only one element
- MISMandate mandate = (MISMandate) list.get(0);
-
- // TODO[tlenz]: UTF-8 ?
- String sMandate = new String(mandate.getMandate());
- if (sMandate == null || sMandate.compareToIgnoreCase("") == 0) {
- Logger.error("Mandate is empty.");
- throw new AuthenticationException("auth.15",
- new Object[] { GET_MIS_SESSIONID });
- }
-
- //check if it is a parsable XML
- byte[] byteMandate = mandate.getMandate();
- // TODO[tlenz]: UTF-8 ?
- String stringMandate = new String(byteMandate);
- DOMUtils.parseDocument(stringMandate, false,
- null, null).getDocumentElement();
-
- // extract RepresentationType
- AuthenticationServer.getInstance().verifyMandate(session, mandate);
-
- session.setMISMandate(mandate);
- session.setAuthenticatedUsed(false);
- session.setAuthenticated(true);
-
- //set QAA Level four in case of card authentifcation
- session.setQAALevel(PVPConstants.STORK_QAA_1_4);
-
- String oldsessionID = session.getSessionID();
-
- //Session is implicite stored in changeSessionID!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- Logger.info("Changed MOASession " + oldsessionID + " to Session " + newMOASessionID);
- Logger.info("Daten angelegt zu MOASession " + newMOASessionID);
-
- String redirectURL = new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- ModulUtils.buildAuthURL(session.getModul(),
- session.getAction(), pendingRequestID), newMOASessionID);
- redirectURL = resp.encodeRedirectURL(redirectURL);
-
- resp.setContentType("text/html");
- resp.setStatus(302);
- resp.addHeader("Location", redirectURL);
- Logger.debug("REDIRECT TO: " + redirectURL);
-
- } catch (MOAIDException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (GeneralSecurityException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (PKIException e) {
- handleError(null, e, req, resp, pendingRequestID);
-
- } catch (SAXException e) {
- handleError(null, e, req, resp, pendingRequestID);
-
- } catch (ParserConfigurationException e) {
- handleError(null, e, req, resp, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("MISMandateValidation has an interal Error.", e);
-
- }
- finally {
- ConfigurationDBUtils.closeSession();
- }
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/IDPSingleLogOutServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/IDPSingleLogOutServlet.java
index c08d77f12..0a6d30be7 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/IDPSingleLogOutServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/IDPSingleLogOutServlet.java
@@ -32,10 +32,11 @@ import org.apache.velocity.VelocityContext;
import org.opensaml.saml2.core.LogoutResponse;
import org.opensaml.saml2.metadata.SingleLogoutService;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.data.SLOInformationContainer;
import at.gv.egovernment.moa.id.moduls.AuthenticationManager;
import at.gv.egovernment.moa.id.moduls.SSOManager;
@@ -64,9 +65,9 @@ public class IDPSingleLogOutServlet extends AuthServlet {
SSOManager ssomanager = SSOManager.getInstance();
String ssoid = ssomanager.getSSOSessionID(req);
- Object restartProcessObj = req.getParameter(PARAM_SLORESTART);
+ Object restartProcessObj = req.getParameter(MOAIDAuthConstants.PARAM_SLORESTART);
- Object tokkenObj = req.getParameter(PARAM_SLOSTATUS);
+ Object tokkenObj = req.getParameter(MOAIDAuthConstants.PARAM_SLOSTATUS);
String tokken = null;
String status = null;
if (tokkenObj != null && tokkenObj instanceof String) {
@@ -78,7 +79,7 @@ public class IDPSingleLogOutServlet extends AuthServlet {
}
VelocityContext context = new VelocityContext();
- if (SLOSTATUS_SUCCESS.equals(status))
+ if (MOAIDAuthConstants.SLOSTATUS_SUCCESS.equals(status))
context.put("successMsg",
MOAIDMessageProvider.getInstance().getMessage("slo.00", null));
else
@@ -141,23 +142,23 @@ public class IDPSingleLogOutServlet extends AuthServlet {
} else {
//print SLO information directly
- redirectURL = AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/idpSingleLogout";
+ redirectURL = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/idpSingleLogout";
String artifact = Random.nextRandom();
String statusCode = null;
if (sloContainer.getSloFailedOAs() == null ||
sloContainer.getSloFailedOAs().size() == 0)
- statusCode = SLOSTATUS_SUCCESS;
+ statusCode = MOAIDAuthConstants.SLOSTATUS_SUCCESS;
else
- statusCode = SLOSTATUS_ERROR;
+ statusCode = MOAIDAuthConstants.SLOSTATUS_ERROR;
AssertionStorage.getInstance().put(artifact, statusCode);
- redirectURL = addURLParameter(redirectURL, PARAM_SLOSTATUS, artifact);
+ redirectURL = addURLParameter(redirectURL, MOAIDAuthConstants.PARAM_SLOSTATUS, artifact);
}
//redirect to Redirect Servlet
- String url = AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/RedirectServlet";
+ String url = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/RedirectServlet";
url = addURLParameter(url, RedirectServlet.REDIRCT_PARAM_URL, URLEncoder.encode(redirectURL, "UTF-8"));
url = resp.encodeRedirectURL(url);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/LogOutServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/LogOutServlet.java
index d7de985a4..c1e084a59 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/LogOutServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/LogOutServlet.java
@@ -53,10 +53,9 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.AuthenticationManager;
import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.moduls.SSOManager;
@@ -86,14 +85,14 @@ public class LogOutServlet extends AuthServlet {
if (MiscUtil.isEmpty(redirectUrl)) {
//set default redirect Target
Logger.debug("Set default RedirectURL back to MOA-ID-Auth");
- redirectUrl = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ redirectUrl = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
} else {
//return an error if RedirectURL is not a active Online-Applikation
- OnlineApplication oa = ConfigurationDBRead.getActiveOnlineApplication(redirectUrl);
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(redirectUrl);
if (oa == null) {
Logger.info("RedirctURL does not match to OA configuration. Set default RedirectURL back to MOA-ID-Auth");
- redirectUrl = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ redirectUrl = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
}
@@ -123,7 +122,7 @@ public class LogOutServlet extends AuthServlet {
return;
} finally {
- ConfigurationDBUtils.closeSession();
+
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java
deleted file mode 100644
index 24daa76a3..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java
+++ /dev/null
@@ -1,774 +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.auth.servlet;
-
-import iaik.x509.X509Certificate;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Properties;
-
-import javax.activation.DataSource;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.opensaml.saml2.core.StatusCode;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.data.IdentityLink;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
-import at.gv.egovernment.moa.id.auth.stork.STORKException;
-import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
-import at.gv.egovernment.moa.id.moduls.ModulUtils;
-import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.HTTPUtils;
-import at.gv.egovernment.moa.id.util.IdentityLinkReSigner;
-import at.gv.egovernment.moa.id.util.VelocityProvider;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.StringUtils;
-import at.gv.egovernment.moa.util.XPathUtils;
-import at.gv.util.xsd.xmldsig.SignatureType;
-import at.gv.util.xsd.xmldsig.X509DataType;
-import eu.stork.oasisdss.api.ApiUtils;
-import eu.stork.oasisdss.api.LightweightSourceResolver;
-import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
-import eu.stork.oasisdss.api.utils.ByteArrayDataSource;
-import eu.stork.oasisdss.profile.DocumentType;
-import eu.stork.oasisdss.profile.DocumentWithSignature;
-import eu.stork.oasisdss.profile.SignRequest;
-import eu.stork.oasisdss.profile.SignResponse;
-import eu.stork.peps.auth.commons.IPersonalAttributeList;
-import eu.stork.peps.auth.commons.PEPSUtil;
-import eu.stork.peps.auth.commons.PersonalAttribute;
-import eu.stork.peps.auth.commons.PersonalAttributeList;
-import eu.stork.peps.auth.commons.STORKAttrQueryRequest;
-import eu.stork.peps.auth.commons.STORKAuthnRequest;
-import eu.stork.peps.auth.commons.STORKAuthnResponse;
-import eu.stork.peps.auth.engine.STORKSAMLEngine;
-import eu.stork.peps.exceptions.STORKSAMLEngineException;
-
-import eu.stork.documentservice.DocumentService;
-import eu.stork.documentservice.data.DatabaseConnectorMySQLImpl;
-import javax.xml.namespace.QName;
-import javax.xml.ws.Service;
-import javax.xml.ws.soap.SOAPBinding;
-import javax.xml.ws.BindingProvider;
-
-
-/**
- * Endpoint for receiving STORK response messages
- * @deprecated Use {@link at.gv.egovernment.moa.id.auth.modules.stork.tasks.PepsConnectorTask} instead.
- */
-public class PEPSConnectorServlet extends AuthServlet {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PEPSCONNECTOR_SERVLET_URL_PATTERN = "/PEPSConnector";
-
- private String dtlUrl = null;
-
-
- public PEPSConnectorServlet()
- {
- super();
-
- try {
- AuthConfigurationProvider authConfigurationProvider = AuthConfigurationProvider.getInstance();
- dtlUrl = authConfigurationProvider.getDocumentServiceUrl();
- Logger.info ("PEPSConnectorServlet, using dtlUrl:"+dtlUrl);
- } catch (Exception e) {
- dtlUrl = "http://testvidp.buergerkarte.at/DocumentService/DocumentService";
- e.printStackTrace();
- Logger.error("Loading documentservice url failed, using default value:"+dtlUrl);
- }
-
-// Properties props = new Properties();
-// try {
-// props.load(DatabaseConnectorMySQLImpl.class.getResourceAsStream("docservice.properties"));
-// dtlUrl = props.getProperty("docservice.url");
-// } catch (IOException e) {
-// dtlUrl = "http://testvidp.buergerkarte.at/DocumentService/DocumentService";
-// Logger.error("Loading DTL config failed, using default value:"+dtlUrl);
-// e.printStackTrace();
-// }
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- super.doGet(request, response);
- }
-
- /**
- * Handles the reception of a STORK response message
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- String pendingRequestID = null;
-
- try {
-
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- Logger.info("PEPSConnector Servlet invoked, expecting C-PEPS message.");
- Logger.debug("This ACS endpoint is: " + HTTPUtils.getBaseURL(request));
-
- super.setNoCachingHeadersInHttpRespone(request, response);
- Logger.trace("No Caching headers set for HTTP response");
-
- //check if https or only http
- super.checkIfHTTPisAllowed(request.getRequestURL().toString());
-
- Logger.debug("Beginning to extract SAMLResponse out of HTTP Request");
-
- //extract STORK Response from HTTP Request
- //Decodes SAML Response
- byte[] decSamlToken;
- try {
- decSamlToken = PEPSUtil.decodeSAMLToken(request.getParameter("SAMLResponse"));
- Logger.debug("SAMLResponse: " + new String(decSamlToken));
-
- } catch(NullPointerException e) {
- Logger.error("Unable to retrieve STORK Response", e);
- throw new MOAIDException("stork.04", null);
- }
-
-
-
- //Get SAMLEngine instance
- STORKSAMLEngine engine = STORKSAMLEngine.getInstance("outgoing");
-
- STORKAuthnResponse authnResponse = null;
- try {
- //validate SAML Token
- Logger.debug("Starting validation of SAML response");
- authnResponse = engine.validateSTORKAuthnResponse(decSamlToken, (String) request.getRemoteHost());
- Logger.info("SAML response succesfully verified!");
- }catch(STORKSAMLEngineException e){
- Logger.error("Failed to verify STORK SAML Response", e);
- throw new MOAIDException("stork.05", null);
- }
-
- Logger.info("STORK SAML Response message succesfully extracted");
- Logger.debug("STORK response: ");
- Logger.debug(authnResponse.toString());
-
- // do PEPS-conform logging for easier evaluation
- try {
- // 2015-03-12 16:44:27.144#S-PEPS receives response from C-PEPS#orig_msg_id id2 (in response to)#orig_msg_id id1 (in response to)#status#msghash#msg_id id3#
- Logger.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) + "#S-PEPS receives response from C-PEPS#" +
- authnResponse.getInResponseTo() + "#NA#" + authnResponse.getMessage() + "#_hash_#" + authnResponse.getSamlId() + "#");
- } catch (Exception e1) {
- Logger.info("STORK PEPS conform logging failed because of: " + e1.getMessage());
- }
-
- Logger.debug("Trying to find MOA Session-ID ...");
- //String moaSessionID = request.getParameter(PARAM_SESSIONID);
- //first use SAML2 relayState
- String moaSessionID = request.getParameter("RelayState");
-
- // escape parameter strings
- moaSessionID= StringEscapeUtils.escapeHtml(moaSessionID);
-
- //check if SAML2 relaystate includes a MOA sessionID
- if (StringUtils.isEmpty(moaSessionID)) {
- //if relaystate is emtpty, use SAML response -> inResponseTo element as session identifier
-
- moaSessionID = authnResponse.getInResponseTo();
- moaSessionID= StringEscapeUtils.escapeHtml(moaSessionID);
-
- if (StringUtils.isEmpty(moaSessionID)) {
- //No authentication session has been started before
- Logger.error("MOA-SessionID was not found, no previous AuthnRequest had been started");
- Logger.debug("PEPSConnectorURL was: " + request.getRequestURL());
- throw new AuthenticationException("auth.02", new Object[] { moaSessionID });
-
- } else
- Logger.trace("Use MOA SessionID " + moaSessionID + " from AuthnResponse->inResponseTo attribute.");
-
- } else
- //Logger.trace("MOA SessionID " + moaSessionID + " is found in http GET parameter.");
- Logger.trace("MOA SessionID " + moaSessionID + " is found in SAML2 relayState.");
-
- /*INFO!!!!
- * SAML message IDs has an different format then MOASessionIDs
- * This is only a workaround because many PEPS does not support SAML2 relayState or
- * MOASessionID as AttributConsumerServiceURL GET parameter
- */
-// if (!ParamValidatorUtils.isValidSessionID(moaSessionID))
-// throw new WrongParametersException("VerifyAuthenticationBlock", PARAM_SESSIONID, "auth.12");
-
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moaSessionID);
-
- //load MOASession from database
- AuthenticationSession moaSession = AuthenticationServer.getSession(moaSessionID);
- //change MOASessionID
- moaSessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- Logger.info("Found MOA sessionID: " + moaSessionID);
-
-
-
- String statusCodeValue = authnResponse.getStatusCode();
-
- if (!statusCodeValue.equals(StatusCode.SUCCESS_URI)) {
- Logger.error("Received ErrorResponse from PEPS: " + statusCodeValue);
- throw new MOAIDException("stork.06", new Object[] { statusCodeValue });
- }
-
- Logger.info("Got SAML response with authentication success message.");
-
- Logger.debug("MOA session is still valid");
-
- STORKAuthnRequest storkAuthnRequest = moaSession.getStorkAuthnRequest();
-
- if (storkAuthnRequest == null) {
- Logger.error("Could not find any preceeding STORK AuthnRequest to this MOA session: " + moaSessionID);
- throw new MOAIDException("stork.07", null);
- }
-
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix());
- if (oaParam == null)
- throw new AuthenticationException("auth.00", new Object[] { moaSession.getPublicOAURLPrefix() });
- //================== Check QAA level start ====================
- int reqQaa = -1;
- int authQaa = -1;
- String authQaaStr = null;
- try {
- reqQaa = storkAuthnRequest.getQaa();
-
- //TODO: found better solution, but QAA Level in response could be not supported yet
- try {
-
- authQaaStr = authnResponse.getAssertions().get(0).
- getAuthnStatements().get(0).getAuthnContext().
- getAuthnContextClassRef().getAuthnContextClassRef();
- moaSession.setQAALevel(authQaaStr);
-
- } catch (Throwable e) {
- Logger.warn("STORK QAA-Level is not found in AuthnResponse. Set QAA Level to requested level");
- moaSession.setQAALevel(PVPConstants.STORK_QAA_PREFIX + oaParam.getQaaLevel());
- authQaaStr = PVPConstants.STORK_QAA_PREFIX + oaParam.getQaaLevel();
- }
- if(authQaaStr != null)//Check value only if set
- {
- authQaa = Integer.valueOf(authQaaStr.substring(PVPConstants.STORK_QAA_PREFIX.length()));
-// authQaa = Integer.valueOf(authQaaStr);
- if (reqQaa > authQaa) {
- Logger.warn("Requested QAA level does not match to authenticated QAA level");
- throw new MOAIDException("stork.21", new Object[]{reqQaa, authQaa});
-
- }
- }
- } catch (MOAIDException e) {
- throw e;
-
- } catch (Exception e) {
- if (Logger.isDebugEnabled())
- Logger.warn("STORK QAA Level evaluation error", e);
-
- else
- Logger.warn("STORK QAA Level evaluation error (ErrorMessage="
- + e.getMessage() + ")");
-
- throw new MOAIDException("stork.21", new Object[]{reqQaa, authQaa});
-
- }
- //================== Check QAA level end ====================
-
- Logger.debug("Found a preceeding STORK AuthnRequest to this MOA session: " + moaSessionID);
-
- ////////////// incorporate gender from parameters if not in stork response
-
- IPersonalAttributeList attributeList = authnResponse.getPersonalAttributeList();
-
- // but first, check if we have a representation case
- if(STORKResponseProcessor.hasAttribute("mandateContent", attributeList) || STORKResponseProcessor.hasAttribute("representative", attributeList) || STORKResponseProcessor.hasAttribute("represented", attributeList)) {
- // in a representation case...
- moaSession.setUseMandate("true");
-
- // and check if we have the gender value
- PersonalAttribute gender = attributeList.get("gender"); // TODO Do we need to check gender value if there is no representation case?
- if(null == gender) {
- String gendervalue = (String) request.getParameter("gender");
- if(null != gendervalue) {
- gender = new PersonalAttribute();
- gender.setName("gender");
- ArrayList<String> tmp = new ArrayList<String>();
- tmp.add(gendervalue);
- gender.setValue(tmp);
-
- authnResponse.getPersonalAttributeList().add(gender);
- }
- }
- }
-
- //////////////////////////////////////////////////////////////////////////
-
- Logger.debug("Starting extraction of signedDoc attribute");
- //extract signed doc element and citizen signature
- String citizenSignature = null;
- try {
- String signatureInfo = authnResponse.getPersonalAttributeList().get("signedDoc").getValue().get(0); // TODO ERROR HANDLING
-
- Logger.debug("signatureInfo:"+signatureInfo);
-
- SignResponse dssSignResponse = (SignResponse) ApiUtils.unmarshal(new StreamSource(new java.io.StringReader(signatureInfo)));
-
- // fetch signed doc
- DataSource ds = null;
- try{
- ds = LightweightSourceResolver.getDataSource(dssSignResponse);
- }catch(Exception e)
- {
- e.printStackTrace();
- }
- if(ds == null){
- //Normal DocumentServices return a http-page, but the SI DocumentService returns HTTP error 500
- //which results in an exception and ds==null
-
- //try to load document from documentservice
- citizenSignature = loadDocumentFromDocumentService(dssSignResponse);
- //throw new ApiUtilsException("No datasource found in response");
- }
- else
- {
- InputStream incoming = ds.getInputStream();
- citizenSignature = IOUtils.toString(incoming);
- incoming.close();
-
- Logger.debug("citizenSignature:"+citizenSignature);
- if(isDocumentServiceUsed(citizenSignature)==true)
- {
- citizenSignature = loadDocumentFromDocumentService(dssSignResponse);
- // Logger.debug("Loading document from DocumentService.");
- // String url = getDtlUrlFromResponse(dssSignResponse);
- // //get Transferrequest
- // String transferRequest = getDocTransferRequest(dssSignResponse.getDocUI(), url);
- // //Load document from DocumentService
- // byte[] data = getDocumentFromDtl(transferRequest, url);
- // citizenSignature = new String(data, "UTF-8");
- // Logger.debug("Overridung citizenSignature with:"+citizenSignature);
- }
- }
- JAXBContext ctx = JAXBContext.newInstance(SignatureType.class.getPackage().getName());
- SignatureType root = ((JAXBElement<SignatureType>) ctx.createUnmarshaller().unmarshal(IOUtils.toInputStream(citizenSignature))).getValue();
-
- // memorize signature into authblock
- moaSession.setAuthBlock(citizenSignature);
-
- // extract certificate
- for(Object current : root.getKeyInfo().getContent())
- if(((JAXBElement<?>) current).getValue() instanceof X509DataType) {
- for(Object currentX509Data : ((JAXBElement<X509DataType>) current).getValue().getX509IssuerSerialOrX509SKIOrX509SubjectName()) {
- JAXBElement<?> casted = ((JAXBElement<?>) currentX509Data);
- if(casted.getName().getLocalPart().equals("X509Certificate")) {
- moaSession.setSignerCertificate(new X509Certificate(((String)casted.getValue()).getBytes("UTF-8")));
- break;
- }
- }
- }
-
-
- } catch (Throwable e) {
- Logger.error("Could not extract citizen signature from C-PEPS", e);
- throw new MOAIDException("stork.09", null);
- }
- Logger.debug("Foregin Citizen signature successfully extracted from STORK Assertion (signedDoc)");
- Logger.debug("Citizen signature will be verified by SZR Gateway!");
-
- Logger.debug("fetching OAParameters from database");
-
-// //read configuration paramters of OA
-// AuthenticationSession moasession;
-// try {
-// moasession = AuthenticationSessionStoreage.getSession(moaSessionID);
-// } catch (MOADatabaseException e2) {
-// Logger.error("could not retrieve moa session");
-// throw new AuthenticationException("auth.01", null);
-// }
-// OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix());
-// if (oaParam == null)
-// throw new AuthenticationException("auth.00", new Object[] { moaSession.getPublicOAURLPrefix() });
-
- // retrieve target
- //TODO: check in case of SSO!!!
- String targetType = null;
- if(oaParam.getBusinessService()) {
- String id = oaParam.getIdentityLinkDomainIdentifier();
- if (id.startsWith(AuthenticationSession.REGISTERANDORDNR_PREFIX_))
- targetType = id;
- else
- targetType = AuthenticationSession.REGISTERANDORDNR_PREFIX_ + moaSession.getDomainIdentifier();
- } else {
- targetType = AuthenticationSession.TARGET_PREFIX_ + oaParam.getTarget();
- }
-
- IdentityLink identityLink = null;
- try {
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
- if(config.isStorkFakeIdLActive() && config.getStorkFakeIdLCountries().contains(storkAuthnRequest.getCitizenCountryCode())) {
- // create fake IdL
- // - fetch IdL template from resources
- InputStream s = PEPSConnectorServlet.class.getResourceAsStream("/resources/xmldata/fakeIdL_IdL_template.xml");
- Element idlTemplate = DOMUtils.parseXmlValidating(s);
-
- identityLink = new IdentityLinkAssertionParser(idlTemplate).parseIdentityLink();
-
- // replace data
- Element idlassertion = identityLink.getSamlAssertion();
- // - set bpk/wpbk;
- Node prIdentification = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_IDENT_VALUE_XPATH);
- if(!STORKResponseProcessor.hasAttribute("eIdentifier", attributeList))
- throw new STORKException("eIdentifier is missing");
- String eIdentifier = STORKResponseProcessor.getAttributeValue("eIdentifier", attributeList, false);
- prIdentification.getFirstChild().setNodeValue(eIdentifier);
-
- // - set last name
- Node prFamilyName = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_FAMILY_NAME_XPATH);
- if(!STORKResponseProcessor.hasAttribute("surname", attributeList))
- throw new STORKException("surname is missing");
- String familyName = STORKResponseProcessor.getAttributeValue("surname", attributeList, false);
- prFamilyName.getFirstChild().setNodeValue(familyName);
-
- // - set first name
- Node prGivenName = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_GIVEN_NAME_XPATH);
- if(!STORKResponseProcessor.hasAttribute("givenName", attributeList))
- throw new STORKException("givenName is missing");
- String givenName = STORKResponseProcessor.getAttributeValue("givenName", attributeList, false);
- prGivenName.getFirstChild().setNodeValue(givenName);
-
- // - set date of birth
- Node prDateOfBirth = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_DATE_OF_BIRTH_XPATH);
- if(!STORKResponseProcessor.hasAttribute("dateOfBirth", attributeList))
- throw new STORKException("dateOfBirth is missing");
- String dateOfBirth = STORKResponseProcessor.getAttributeValue("dateOfBirth", attributeList, false);
- prDateOfBirth.getFirstChild().setNodeValue(dateOfBirth);
-
- identityLink = new IdentityLinkAssertionParser(idlassertion).parseIdentityLink();
-
- //resign IDL
- IdentityLinkReSigner identitylinkresigner = IdentityLinkReSigner.getInstance();
- Element resignedilAssertion = identitylinkresigner.resignIdentityLink(identityLink.getSamlAssertion(), config.getStorkFakeIdLResigningKey());
- identityLink = new IdentityLinkAssertionParser(resignedilAssertion).parseIdentityLink();
- } else {
- //contact SZR Gateway
- Logger.debug("Starting connecting SZR Gateway");
- identityLink = STORKResponseProcessor.connectToSZRGateway(authnResponse.getPersonalAttributeList(),
- oaParam.getFriendlyName(),
- targetType, null,
- oaParam.getMandateProfiles(), citizenSignature);
- }
- } catch (STORKException e) {
- // this is really nasty but we work against the system here. We are supposed to get the gender attribute from
- // stork. If we do not, we cannot register the person in the ERnP - we have to have the
- // gender for the represented person. So here comes the dirty hack.
- if(e.getCause() instanceof STORKException && e.getCause().getMessage().equals("gender not found in response")) {
- try {
- Logger.trace("Initialize VelocityEngine...");
-
- VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine();
- Template template = velocityEngine.getTemplate("/resources/templates/fetchGender.html");
- VelocityContext context = new VelocityContext();
- context.put("SAMLResponse", request.getParameter("SAMLResponse"));
- context.put("action", request.getRequestURL());
-
- StringWriter writer = new StringWriter();
- template.merge(context, writer);
-
- response.getOutputStream().write(writer.toString().getBytes("UTF-8"));
- } catch (Exception e1) {
- Logger.error("Error sending gender retrival form.", e1);
-// httpSession.invalidate();
- throw new MOAIDException("stork.10", null);
- }
-
- return;
- }
-
- Logger.error("Error connecting SZR Gateway", e);
- throw new MOAIDException("stork.10", null);
- }
- Logger.debug("SZR communication was successfull");
-
- if (identityLink == null) {
- Logger.error("SZR Gateway did not return an identity link.");
- throw new MOAIDException("stork.10", null);
- }
- moaSession.setForeigner(true);
-
- Logger.info("Received Identity Link from SZR Gateway");
- moaSession.setIdentityLink(identityLink);
-
- Logger.debug("Adding addtional STORK attributes to MOA session");
- moaSession.setStorkAttributes(authnResponse.getPersonalAttributeList());
-
- Logger.debug("Add full STORK AuthnResponse to MOA session");
- moaSession.setStorkAuthnResponse(request.getParameter("SAMLResponse"));
-
- //We don't have BKUURL, setting from null to "Not applicable"
- moaSession.setBkuURL("Not applicable (STORK Authentication)");
-
- // free for single use
- moaSession.setAuthenticatedUsed(false);
-
- // stork did the authentication step
- moaSession.setAuthenticated(true);
-
- // do PEPS-conform logging for easier evaluation
- try {
- // 2015-03-12 16:44:27.144#S-PEPS generates response to SP#orig_msg_id id1 (in response to)#status#msghash#msg_id id4#
- Logger.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) + "#S-PEPS generates response to SP#" +
- "#NA#" + authnResponse.getMessage() + "#_hash_#" + moaSession.getProcessInstanceId() + "#");
- } catch (Exception e1) {
- Logger.info("STORK PEPS conform logging failed because of: " + e1.getMessage());
- }
-
-// //TODO: found better solution, but QAA Level in response could be not supported yet
-// try {
-//
-// moaSession.setQAALevel(authnResponse.getAssertions().get(0).
-// getAuthnStatements().get(0).getAuthnContext().
-// getAuthnContextClassRef().getAuthnContextClassRef());
-//
-// } catch (Throwable e) {
-// Logger.warn("STORK QAA-Level is not found in AuthnResponse. Set QAA Level to requested level");
-// moaSession.setQAALevel(PVPConstants.STORK_QAA_PREFIX + oaParam.getQaaLevel());
-//
-// }
-
- //session is implicit stored in changeSessionID!!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- Logger.info("Changed MOASession " + moaSessionID + " to Session " + newMOASessionID);
-
- //redirect
- String redirectURL = null;
- redirectURL = new DataURLBuilder().buildDataURL(moaSession.getAuthURL(),
- ModulUtils.buildAuthURL(moaSession.getModul(), moaSession.getAction(), pendingRequestID), newMOASessionID);
- redirectURL = response.encodeRedirectURL(redirectURL);
-
-// response.setContentType("text/html");
-// response.setStatus(302);
-// response.addHeader("Location", redirectURL);
- response.sendRedirect(redirectURL);
- Logger.info("REDIRECT TO: " + redirectURL);
-
-
-
- } catch (AuthenticationException e) {
- handleError(null, e, request, response, pendingRequestID);
-
- } catch (MOAIDException e) {
- handleError(null, e, request, response, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("PEPSConnector has an interal Error.", e);
- }
-
-
- finally {
- ConfigurationDBUtils.closeSession();
- }
-
- }
-
- private String loadDocumentFromDocumentService(SignResponse dssSignResponse) throws Exception
- {
- Logger.debug("Loading document from DocumentService.");
- String url = getDtlUrlFromResponse(dssSignResponse);
- Logger.debug("Loading document from DocumentService, url:"+url);
- //get Transferrequest
- String transferRequest = getDocTransferRequest(dssSignResponse.getDocUI(), url);
- //Load document from DocumentService
- byte[] data = getDocumentFromDtl(transferRequest, url);
- String citizenSignature = new String(data, "UTF-8");
- Logger.debug("Overridung citizenSignature with:"+citizenSignature);
- return citizenSignature;
- }
-
- private boolean isDocumentServiceUsed(String citizenSignature) //TODo add better check
- {
- if(citizenSignature.contains("<table border=\"0\"><tr><td>Service Name:</td><td>{http://stork.eu}DocumentService</td></tr><tr><td>Port Name:</td><td>{http://stork.eu}DocumentServicePort</td></tr></table>"))
- {
- Logger.trace("isDocumentServiceUsed => true");
- return true;
- }
- Logger.trace("isDocumentServiceUsed => false");
- return false;
- }
-
- /**
- * Get DTL uril from the oasis sign response
- * @param signRequest The signature response
- * @return The URL of DTL service
- * @throws SimpleException
- */
- private String getDtlUrlFromResponse(SignResponse dssSignResponse) {
- List<DocumentWithSignature> documents = ApiUtils.findNamedElement(dssSignResponse.getOptionalOutputs(),
- ApiUtils.OPTIONAL_OUTPUT_DOCUMENTWITHSIGNATURE, DocumentWithSignature.class);
- DocumentType sourceDocument = documents.get(0).getDocument();
-
- if (sourceDocument.getDocumentURL() != null)
- return sourceDocument.getDocumentURL();
- else
- return null;//throw new Exception("No document url found");
- }
-
-//From DTLPEPSUTIL
-
-
-
- /**
- * Get document from DTL
- * @param transferRequest The transfer request (attribute query)
- * @param eDtlUrl The DTL url of external DTL
- * @return the document data
- * @throws SimpleException
- */
- private byte[] getDocumentFromDtl(String transferRequest, String eDtlUrl) throws Exception
- {
- URL url = null;
- try
- {
- Logger.debug("getDocumentFromDtl, dtlUrl:'"+dtlUrl+"' eDtlUrl:'"+eDtlUrl+"'");
- url = new URL(dtlUrl);
- QName qname = new QName("http://stork.eu",
- "DocumentService");
-
- Service service = Service.create(url, qname);
- DocumentService docservice = service.getPort(DocumentService.class);
-
- BindingProvider bp = (BindingProvider) docservice;
- SOAPBinding binding = (SOAPBinding) bp.getBinding();
- binding.setMTOMEnabled(true);
-
- if (eDtlUrl.equalsIgnoreCase(dtlUrl))
- return docservice.getDocument(transferRequest, "");
- else
- return docservice.getDocument(transferRequest, eDtlUrl);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw new Exception("Error in getDocumentFromDtl", e);
- }
- }
-
- /**
- * Get a document transfer request (attribute query)
- * @param docId
- * @return
- * @throws SimpleException
- */
- private String getDocTransferRequest(String docId, String destinationUrl) throws Exception
- {
- String spCountry = docId.substring(0, docId.indexOf("/"));
- final STORKSAMLEngine engine = STORKSAMLEngine.getInstance("VIDP");
- STORKAttrQueryRequest req = new STORKAttrQueryRequest();
- req.setAssertionConsumerServiceURL(dtlUrl);
- req.setDestination(destinationUrl);
- req.setSpCountry(spCountry);
- req.setQaa(3);//TODO
- PersonalAttributeList pal = new PersonalAttributeList();
- PersonalAttribute attr = new PersonalAttribute();
- attr.setName("docRequest");
- attr.setIsRequired(true);
- attr.setValue(Arrays.asList(docId));
- pal.add(attr);
- req.setPersonalAttributeList(pal);
-
- STORKAttrQueryRequest req1;
- try {
- req1 = engine.generateSTORKAttrQueryRequest(req);
- return PEPSUtil.encodeSAMLTokenUrlSafe(req1.getTokenSaml());
- } catch (STORKSAMLEngineException e) {
- e.printStackTrace();
- throw new Exception("Error in doc request attribute query generation", e);
- }
- }
-
- /**
- * Get mime type of document from DTL
- * @param docId The document id
- * @param dtlUrl The url of dtl
- * @return The mime type
- */
-// private String getDocumentMimeFromDtl(String docId, String eDtlUrl) throws Exception
-// {
-// URL url = null;
-// try
-// {
-// url = new URL(dtlUrl);
-// QName qname = new QName("http://stork.eu",
-// "DocumentService");
-//
-// Service service = Service.create(url, qname);
-// DocumentService docservice = service.getPort(DocumentService.class);
-//
-// BindingProvider bp = (BindingProvider) docservice;
-// SOAPBinding binding = (SOAPBinding) bp.getBinding();
-// binding.setMTOMEnabled(true);
-//
-// if (eDtlUrl.equalsIgnoreCase(dtlUrl))
-// return docservice.getDocumentMime(docId, "");
-// else
-// return docservice.getDocumentMime(docId, eDtlUrl);
-// }
-// catch (Exception e)
-// {
-// e.printStackTrace();
-// throw new Exception("Error in getDocumentFromDtl", e);
-// }
-// }
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorWithLocalSigningServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorWithLocalSigningServlet.java
deleted file mode 100644
index 337a9ed31..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorWithLocalSigningServlet.java
+++ /dev/null
@@ -1,816 +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.auth.servlet;
-
-import iaik.x509.X509Certificate;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import javax.activation.DataSource;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.opensaml.saml2.core.StatusCode;
-import org.xml.sax.SAXException;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.data.IdentityLink;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.BKUException;
-import at.gv.egovernment.moa.id.auth.exception.BuildException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.auth.exception.ServiceException;
-import at.gv.egovernment.moa.id.auth.stork.STORKException;
-import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
-import at.gv.egovernment.moa.id.moduls.ModulUtils;
-import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.HTTPUtils;
-import at.gv.egovernment.moa.id.util.VelocityProvider;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.SignatureVerificationService;
-import at.gv.egovernment.moa.spss.api.common.Content;
-
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
-import at.gv.egovernment.moa.util.StringUtils;
-import at.gv.util.xsd.xmldsig.SignatureType;
-import at.gv.util.xsd.xmldsig.X509DataType;
-import eu.stork.oasisdss.api.ApiUtils;
-import eu.stork.oasisdss.api.LightweightSourceResolver;
-import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
-import eu.stork.oasisdss.api.exceptions.UtilsException;
-import eu.stork.oasisdss.profile.SignRequest;
-import eu.stork.oasisdss.profile.SignResponse;
-import eu.stork.peps.auth.commons.IPersonalAttributeList;
-import eu.stork.peps.auth.commons.PEPSUtil;
-import eu.stork.peps.auth.commons.PersonalAttribute;
-import eu.stork.peps.auth.commons.STORKAuthnRequest;
-import eu.stork.peps.auth.commons.STORKAuthnResponse;
-import eu.stork.peps.auth.engine.STORKSAMLEngine;
-import eu.stork.peps.exceptions.STORKSAMLEngineException;
-//import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse;
-
-/**
- * Endpoint for receiving STORK response messages
- * @deprecated Use {@link at.gv.egovernment.moa.id.auth.modules.stork.tasks.PepsConnectorHandleResponseWithoutSignatureTask} instead.
- */
-public class PEPSConnectorWithLocalSigningServlet extends AuthServlet {
- private static final long serialVersionUID = 1L;
-
- public static final String PEPSCONNECTOR_SERVLET_URL_PATTERN = "/PEPSConnectorWithLocalSigning";
-
- private String oasisDssWebFormURL = "https://testvidp.buergerkarte.at/oasis-dss/DSSWebFormServlet";//load from config below
-
-
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- super.doGet(request, response);
- }
-
- /**
- * Handles the reception of a STORK response message
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- String moaSessionID1 = request.getParameter("moaSessionID");
- String signResponse = request.getParameter("signresponse");
- Logger.info("moaSessionID1:"+moaSessionID1);
- Logger.info("signResponse:"+signResponse);
- if(moaSessionID1!=null)
- {
- if(signResponse!=null)
- {
- //redirect from oasis with signresponse
- handleSignResponse(request, response);
- }
- else
- {
- //should not occur
- throw new IOException("should not occur");
- }
- }
- else
- {
- if(signResponse!=null)
- {
- //should not occur
- throw new IOException("should not occur");
- }
- else
- {
- //normal saml response
- handleSAMLResponse(request, response);
- }
- }
- return;
- }
-
- private void handleSignResponse(HttpServletRequest request, HttpServletResponse response) {
- Logger.info("handleSignResponse started");
- String moaSessionID = request.getParameter("moaSessionID");
- String signResponse = request.getParameter("signresponse");
- Logger.info("moaSessionID:"+moaSessionID);
- Logger.info("signResponse:"+signResponse);
- String pendingRequestID = null;
- try{
-
-
- //load MOASession from database
- AuthenticationSession moaSession = AuthenticationServer.getSession(moaSessionID);
- //change MOASessionID
- moaSessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moaSessionID);
- Logger.info("pendingRequestID:"+pendingRequestID);
- String signResponseString = new String(Base64.decodeBase64(signResponse), "UTF8");
- Logger.info("RECEIVED signresponse:"+signResponseString);
- //create SignResponse object
- Source response1 = new StreamSource(new java.io.StringReader(signResponseString));
- SignResponse dssSignResponse = ApiUtils.unmarshal(response1, SignResponse.class);
-
- // SignResponse dssSignResponse = (SignResponse) ApiUtils.unmarshal(new StreamSource(new java.io.StringReader(Base64.signResponse)));
-
- String citizenSignature = getCitizienSignatureFromSignResponse(dssSignResponse);
-
- // memorize signature into authblock
- moaSession.setAuthBlock(citizenSignature);
-
- X509Certificate cert = getSignerCertificate(citizenSignature);
- moaSession.setSignerCertificate(cert);
- VerifyXMLSignatureResponse xMLVerifySignatureResponse = verifyXMLSignature(citizenSignature);
- at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse tmp = convert(xMLVerifySignatureResponse);
-
-
- moaSession.setXMLVerifySignatureResponse(tmp);
- try{
- IPersonalAttributeList personalAttributeList = moaSession.getAuthnResponseGetPersonalAttributeList();
- //Add SignResponse TODO Add signature (extracted from signResponse)?
- List<String> values = new ArrayList<String>();
- values.add(signResponseString);
-// values.add(citizenSignature);
- Logger.debug("Assembling signedDoc attribute");
- PersonalAttribute signedDocAttribute = new PersonalAttribute("signedDoc", false, values,
- "Available");
- personalAttributeList.add(signedDocAttribute);
-
- String authnContextClassRef = moaSession.getAuthnContextClassRef();
- SZRGInsertion(moaSession, personalAttributeList, authnContextClassRef, citizenSignature);
- } catch (STORKException e) {
- // this is really nasty but we work against the system here. We are supposed to get the gender attribute from
- // stork. If we do not, we cannot register the person in the ERnP - we have to have the
- // gender for the represented person. So here comes the dirty hack.
- if(e.getCause() instanceof STORKException && e.getCause().getMessage().equals("gender not found in response")) {
- try {
- Logger.trace("Initialize VelocityEngine...");
-
- VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine();
- Template template = velocityEngine.getTemplate("/resources/templates/fetchGender.html");
- VelocityContext context = new VelocityContext();
- context.put("SAMLResponse", request.getParameter("SAMLResponse"));
- context.put("action", request.getRequestURL());
-
- StringWriter writer = new StringWriter();
- template.merge(context, writer);
-
- response.getOutputStream().write(writer.toString().getBytes("UTF-8"));
- } catch (Exception e1) {
- Logger.error("Error sending gender retrival form.", e1);
- // httpSession.invalidate();
- throw new MOAIDException("stork.10", null);
- }
-
- return;
- }
-
- Logger.error("Error connecting SZR Gateway", e);
- throw new MOAIDException("stork.10", null);
- }
-
- Logger.debug("Add full STORK AuthnResponse to MOA session");
- moaSession.setStorkAuthnResponse(request.getParameter("SAMLResponse"));//TODO ask Florian/Thomas authnResponse?
- moaSession.setForeigner(true);
-
- //session is implicit stored in changeSessionID!!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- Logger.info("Changed MOASession " + moaSessionID + " to Session " + newMOASessionID);
-
- //redirect
- String redirectURL = null;
- redirectURL = new DataURLBuilder().buildDataURL(moaSession.getAuthURL(),
- ModulUtils.buildAuthURL(moaSession.getModul(), moaSession.getAction(), pendingRequestID), newMOASessionID);
- redirectURL = response.encodeRedirectURL(redirectURL);
-
- response.sendRedirect(redirectURL);
- Logger.info("REDIRECT TO: " + redirectURL);
-
- } catch (AuthenticationException e) {
- handleError(null, e, request, response, pendingRequestID);
-
- } catch (MOAIDException e) {
- handleError(null, e, request, response, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("PEPSConnector has an interal Error.", e);
- }
-
- finally {
- ConfigurationDBUtils.closeSession();
- }
- }
-
- private void handleSAMLResponse(HttpServletRequest request, HttpServletResponse response) {
- Logger.info("handleSAMLResponse started");
- String pendingRequestID = null;
-
- try {
- Logger.info("PEPSConnector Servlet invoked, expecting C-PEPS message.");
- Logger.debug("This ACS endpoint is: " + HTTPUtils.getBaseURL(request));
-
- super.setNoCachingHeadersInHttpRespone(request, response);
- Logger.trace("No Caching headers set for HTTP response");
-
- //check if https or only http
- super.checkIfHTTPisAllowed(request.getRequestURL().toString());
-
- Logger.debug("Beginning to extract SAMLResponse out of HTTP Request");
-
- //extract STORK Response from HTTP Request
- //Decodes SAML Response
- byte[] decSamlToken;
- try {
- decSamlToken = PEPSUtil.decodeSAMLToken(request.getParameter("SAMLResponse"));
- Logger.debug("SAMLResponse: " + new String(decSamlToken));
-
- } catch(NullPointerException e) {
- Logger.error("Unable to retrieve STORK Response", e);
- throw new MOAIDException("stork.04", null);
- }
-
- //Get SAMLEngine instance
- STORKSAMLEngine engine = STORKSAMLEngine.getInstance("outgoing");
-
- STORKAuthnResponse authnResponse = null;
- try {
- //validate SAML Token
- Logger.debug("Starting validation of SAML response");
- authnResponse = engine.validateSTORKAuthnResponse(decSamlToken, (String) request.getRemoteHost());
- Logger.info("SAML response succesfully verified!");
- }catch(STORKSAMLEngineException e){
- Logger.error("Failed to verify STORK SAML Response", e);
- throw new MOAIDException("stork.05", null);
- }
-
- Logger.info("STORK SAML Response message succesfully extracted");
- Logger.debug("STORK response: ");
- Logger.debug(authnResponse.toString());
-
- Logger.debug("Trying to find MOA Session-ID ...");
- //String moaSessionID = request.getParameter(PARAM_SESSIONID);
- //first use SAML2 relayState
- String moaSessionID = request.getParameter("RelayState");
-
- // escape parameter strings
- moaSessionID= StringEscapeUtils.escapeHtml(moaSessionID);
-
- //check if SAML2 relaystate includes a MOA sessionID
- if (StringUtils.isEmpty(moaSessionID)) {
- //if relaystate is emtpty, use SAML response -> inResponseTo element as session identifier
-
- moaSessionID = authnResponse.getInResponseTo();
- moaSessionID= StringEscapeUtils.escapeHtml(moaSessionID);
-
- if (StringUtils.isEmpty(moaSessionID)) {
- //No authentication session has been started before
- Logger.error("MOA-SessionID was not found, no previous AuthnRequest had been started");
- Logger.debug("PEPSConnectorURL was: " + request.getRequestURL());
- throw new AuthenticationException("auth.02", new Object[] { moaSessionID });
-
- } else
- Logger.trace("Use MOA SessionID " + moaSessionID + " from AuthnResponse->inResponseTo attribute.");
-
- } else
- //Logger.trace("MOA SessionID " + moaSessionID + " is found in http GET parameter.");
- Logger.trace("MOA SessionID " + moaSessionID + " is found in SAML2 relayState.");
-
- /*INFO!!!!
- * SAML message IDs has an different format then MOASessionIDs
- * This is only a workaround because many PEPS does not support SAML2 relayState or
- * MOASessionID as AttributConsumerServiceURL GET parameter
- */
- // if (!ParamValidatorUtils.isValidSessionID(moaSessionID))
- // throw new WrongParametersException("VerifyAuthenticationBlock", PARAM_SESSIONID, "auth.12");
-
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moaSessionID);
-
- //load MOASession from database
- AuthenticationSession moaSession = AuthenticationServer.getSession(moaSessionID);
- //change MOASessionID
- moaSessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- Logger.info("Found MOA sessionID: " + moaSessionID);
-
-
-
- String statusCodeValue = authnResponse.getStatusCode();
-
- if (!statusCodeValue.equals(StatusCode.SUCCESS_URI)) {
- Logger.error("Received ErrorResponse from PEPS: " + statusCodeValue);
- throw new MOAIDException("stork.06", new Object[] { statusCodeValue });
- }
-
- Logger.info("Got SAML response with authentication success message.");
-
- Logger.debug("MOA session is still valid");
-
- STORKAuthnRequest storkAuthnRequest = moaSession.getStorkAuthnRequest();
-
- if (storkAuthnRequest == null) {
- Logger.error("Could not find any preceeding STORK AuthnRequest to this MOA session: " + moaSessionID);
- throw new MOAIDException("stork.07", null);
- }
-
- Logger.debug("Found a preceeding STORK AuthnRequest to this MOA session: " + moaSessionID);
-
- ////////////// incorporate gender from parameters if not in stork response
-
- IPersonalAttributeList attributeList = authnResponse.getPersonalAttributeList();
-
- // but first, check if we have a representation case
- if(STORKResponseProcessor.hasAttribute("mandateContent", attributeList) || STORKResponseProcessor.hasAttribute("representative", attributeList) || STORKResponseProcessor.hasAttribute("represented", attributeList)) {
- // in a representation case...
- moaSession.setUseMandate("true");
-
- // and check if we have the gender value
- PersonalAttribute gender = attributeList.get("gender");
- if(null == gender) {
- String gendervalue = (String) request.getParameter("gender");
- if(null != gendervalue) {
- gender = new PersonalAttribute();
- gender.setName("gender");
- ArrayList<String> tmp = new ArrayList<String>();
- tmp.add(gendervalue);
- gender.setValue(tmp);
-
- authnResponse.getPersonalAttributeList().add(gender);
- }
- }
- }
-
- //////////////////////////////////////////////////////////////////////////
-
- Logger.debug("Starting extraction of signedDoc attribute");
- //extract signed doc element and citizen signature
- String citizenSignature = null;
- try {
- PersonalAttribute signedDoc = authnResponse.getPersonalAttributeList().get("signedDoc");
- String signatureInfo = null;
- if(signedDoc!=null)
- {
- signatureInfo = signedDoc.getValue().get(0);
- //should not occur
- }
- else
- {
-
- //store SAMLResponse
- moaSession.setSAMLResponse(request.getParameter("SAMLResponse"));
- //store authnResponse
-
- //moaSession.setAuthnResponse(authnResponse);//not serializable
- moaSession.setAuthnResponseGetPersonalAttributeList(authnResponse.getPersonalAttributeList());
-
- String authnContextClassRef = null;
- try {
- authnContextClassRef = authnResponse.getAssertions().get(0).getAuthnStatements().get(0).getAuthnContext().getAuthnContextClassRef().getAuthnContextClassRef();
- } catch (Throwable e) {
- Logger.warn("STORK QAA-Level is not found in AuthnResponse. Set QAA Level to requested level");
- }
-
- moaSession.setAuthnContextClassRef(authnContextClassRef);
- moaSession.setReturnURL(request.getRequestURL());
-
- //load signedDoc
- String signRequest = moaSession.getSignedDoc();
-
- //session is implicit stored in changeSessionID!!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- //set return url to PEPSConnectorWithLocalSigningServlet and add newMOASessionID
- //signRequest
-
- String issuerValue = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
- String acsURL = issuerValue + PEPSConnectorWithLocalSigningServlet.PEPSCONNECTOR_SERVLET_URL_PATTERN;
-
- String url = acsURL+"?moaSessionID="+newMOASessionID;
- //redirect to OASIS module and sign there
-
- boolean found = false;
- try{
- List<AttributeProviderPlugin> aps = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix()).getStorkAPs();
- Logger.info("Found AttributeProviderPlugins:"+aps.size());
- for(AttributeProviderPlugin ap : aps)
- {
- Logger.info("Found AttributeProviderPlugin attribute:"+ap.getAttributes());
- if(ap.getAttributes().equalsIgnoreCase("signedDoc"))
- {
- // FIXME[tlenz]: A servlet's class field is not thread safe.
- oasisDssWebFormURL = ap.getUrl();
- found = true;
- Logger.info("Loaded signedDoc attribute provider url from config:"+oasisDssWebFormURL);
- break;
- }
- }
- }catch(Exception e)
- {
- e.printStackTrace();
- Logger.error("Loading the signedDoc attribute provider url from config failed");
- }
- if(!found)
- {
- Logger.error("Failed to load the signedDoc attribute provider url from config");
- }
- performRedirect(url,request,response,signRequest);
-
- return;
- }
- SignResponse dssSignResponse = (SignResponse) ApiUtils.unmarshal(new StreamSource(new java.io.StringReader(signatureInfo)));
-
- citizenSignature = getCitizienSignatureFromSignResponse(dssSignResponse);
-
- // memorize signature into authblock
- moaSession.setAuthBlock(citizenSignature);
-
- X509Certificate cert = getSignerCertificate(citizenSignature);
- moaSession.setSignerCertificate(cert);
- moaSession.setForeigner(true);
-
-
- } catch (Throwable e) {
- Logger.error("Could not extract citizen signature from C-PEPS", e);
- throw new MOAIDException("stork.09", null);
- }
-
- try{
- SZRGInsertion(moaSession, authnResponse.getPersonalAttributeList(), authnResponse.getAssertions().get(0).getAuthnStatements().get(0).getAuthnContext().getAuthnContextClassRef().getAuthnContextClassRef(),citizenSignature);
- } catch (STORKException e) {
- // this is really nasty but we work against the system here. We are supposed to get the gender attribute from
- // stork. If we do not, we cannot register the person in the ERnP - we have to have the
- // gender for the represented person. So here comes the dirty hack.
- if(e.getCause() instanceof STORKException && e.getCause().getMessage().equals("gender not found in response")) {
- try {
- Logger.trace("Initialize VelocityEngine...");
-
- VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine();
- Template template = velocityEngine.getTemplate("/resources/templates/fetchGender.html");
- VelocityContext context = new VelocityContext();
- context.put("SAMLResponse", request.getParameter("SAMLResponse"));
- context.put("action", request.getRequestURL());
-
- StringWriter writer = new StringWriter();
- template.merge(context, writer);
-
- response.getOutputStream().write(writer.toString().getBytes("UTF-8"));
- } catch (Exception e1) {
- Logger.error("Error sending gender retrival form.", e1);
- // httpSession.invalidate();
- throw new MOAIDException("stork.10", null);
- }
-
- return;
- }
-
- Logger.error("Error connecting SZR Gateway", e);
- throw new MOAIDException("stork.10", null);
- }
-
- Logger.debug("Add full STORK AuthnResponse to MOA session");
- moaSession.setStorkAuthnResponse(request.getParameter("SAMLResponse"));//TODO ask Florian/Thomas authnResponse?
-
- //session is implicit stored in changeSessionID!!!!
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
-
- Logger.info("Changed MOASession " + moaSessionID + " to Session " + newMOASessionID);
-
- //redirect
- String redirectURL = null;
- redirectURL = new DataURLBuilder().buildDataURL(moaSession.getAuthURL(),
- ModulUtils.buildAuthURL(moaSession.getModul(), moaSession.getAction(), pendingRequestID), newMOASessionID);
- redirectURL = response.encodeRedirectURL(redirectURL);
-
- response.setContentType("text/html");
- response.setStatus(302);
- response.addHeader("Location", redirectURL);
- Logger.info("REDIRECT TO: " + redirectURL);
-
- } catch (AuthenticationException e) {
- handleError(null, e, request, response, pendingRequestID);
-
- } catch (MOAIDException e) {
- handleError(null, e, request, response, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("PEPSConnector has an interal Error.", e);
- }
-
- finally {
- ConfigurationDBUtils.closeSession();
- }
-
- }
-
- private void performRedirect(String url, HttpServletRequest req, HttpServletResponse resp, String signRequestString)
- throws MOAIDException {
-
- try {
- Logger.trace("Initialize VelocityEngine...");
-
- VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine();
- Template template = velocityEngine.getTemplate("/resources/templates/oasis_dss_webform_binding.vm");
- VelocityContext context = new VelocityContext();
-
- Logger.debug("performRedirect, signrequest:"+signRequestString);
- Source signDoc = new StreamSource(new java.io.StringReader(signRequestString));
- SignRequest signRequest = ApiUtils.unmarshal(signDoc, SignRequest.class);
- signRequest.setReturnURL("TODO");
- signRequestString = IOUtils.toString(ApiUtils.marshalToInputStream(signRequest));
- context.put("signrequest", Base64.encodeBase64String(signRequestString.getBytes("UTF8")));
- context.put("clienturl", url);
- context.put("action", oasisDssWebFormURL );
-
- StringWriter writer = new StringWriter();
- template.merge(context, writer);
-
- resp.getOutputStream().write(writer.toString().getBytes("UTF-8"));
- } catch (Exception e) {
- Logger.error("Error sending DSS signrequest.", e);
- throw new MOAIDException("stork.11", null);
- }
- }
-
- private String getCitizienSignatureFromSignResponseFromSAML(STORKAuthnResponse authnResponse) throws ApiUtilsException, IllegalArgumentException, TransformerConfigurationException, UtilsException, TransformerException, TransformerFactoryConfigurationError, IOException, MOAIDException
- {
- PersonalAttribute signedDoc = authnResponse.getPersonalAttributeList().get("signedDoc");
- String signatureInfo = null;
- if(signedDoc==null)
- {
- Logger.error("SignedDoc = null, failed to extract Signresponse from authnResponse");
- throw new MOAIDException("stork.09", null);
- }
- signatureInfo = signedDoc.getValue().get(0);
-
- SignResponse dssSignResponse = (SignResponse) ApiUtils.unmarshal(new StreamSource(new java.io.StringReader(signatureInfo)));
- String citizenSignature = getCitizienSignatureFromSignResponse(dssSignResponse);
- return citizenSignature;
-
- }
-
- private String getCitizienSignatureFromSignResponse(SignResponse dssSignResponse) throws IllegalArgumentException, TransformerConfigurationException, UtilsException, TransformerException, TransformerFactoryConfigurationError, IOException, ApiUtilsException
- {
- // fetch signed doc
- DataSource ds = LightweightSourceResolver.getDataSource(dssSignResponse);
- if(ds == null){
- throw new ApiUtilsException("No datasource found in response");
- }
-
- InputStream incoming = ds.getInputStream();
- String citizenSignature = IOUtils.toString(incoming);
- incoming.close();
-
- return citizenSignature;
- }
-
- private X509Certificate getSignerCertificate(String citizenSignature) throws CertificateException, JAXBException, UnsupportedEncodingException
- {
- JAXBContext ctx = JAXBContext.newInstance(SignatureType.class.getPackage().getName());
- SignatureType root = ((JAXBElement<SignatureType>) ctx.createUnmarshaller().unmarshal(IOUtils.toInputStream(citizenSignature))).getValue();
-
- // extract certificate
- for(Object current : root.getKeyInfo().getContent())
- if(((JAXBElement<?>) current).getValue() instanceof X509DataType) {
- for(Object currentX509Data : ((JAXBElement<X509DataType>) current).getValue().getX509IssuerSerialOrX509SKIOrX509SubjectName()) {
- JAXBElement<?> casted = ((JAXBElement<?>) currentX509Data);
- if(casted.getName().getLocalPart().equals("X509Certificate")) {
- return new X509Certificate(((String)casted.getValue()).getBytes("UTF-8"));
- }
- }
- }
- return null;
- }
-
- private void SZRGInsertion(AuthenticationSession moaSession, IPersonalAttributeList personalAttributeList, String authnContextClassRef, String citizenSignature) throws STORKException, MOAIDException
- {
- Logger.debug("Foregin Citizen signature successfully extracted from STORK Assertion (signedDoc)");
- Logger.debug("Citizen signature will be verified by SZR Gateway!");
-
- Logger.debug("fetching OAParameters from database");
-
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix());
- if (oaParam == null)
- throw new AuthenticationException("auth.00", new Object[] { moaSession.getPublicOAURLPrefix() });
-
- // retrieve target
- //TODO: check in case of SSO!!!
- String targetType = null;
- if(oaParam.getBusinessService()) {
- String id = oaParam.getIdentityLinkDomainIdentifier();
- if (id.startsWith(AuthenticationSession.REGISTERANDORDNR_PREFIX_))
- targetType = id;
- else
- targetType = AuthenticationSession.REGISTERANDORDNR_PREFIX_ + moaSession.getDomainIdentifier();
- } else {
- targetType = AuthenticationSession.TARGET_PREFIX_ + oaParam.getTarget();
- }
-
-
-
- Logger.debug("Starting connecting SZR Gateway");
- //contact SZR Gateway
- IdentityLink identityLink = null;
-
- identityLink = STORKResponseProcessor.connectToSZRGateway(personalAttributeList,
- oaParam.getFriendlyName(),
- targetType, null,
- oaParam.getMandateProfiles(),citizenSignature);
- Logger.debug("SZR communication was successfull");
-
- if (identityLink == null) {
- Logger.error("SZR Gateway did not return an identity link.");
- throw new MOAIDException("stork.10", null);
- }
- Logger.info("Received Identity Link from SZR Gateway");
- moaSession.setIdentityLink(identityLink);
-
- Logger.debug("Adding addtional STORK attributes to MOA session");
- moaSession.setStorkAttributes(personalAttributeList);
-
- //We don't have BKUURL, setting from null to "Not applicable"
- moaSession.setBkuURL("Not applicable (STORK Authentication)");
-
- // free for single use
- moaSession.setAuthenticatedUsed(false);
-
- // stork did the authentication step
- moaSession.setAuthenticated(true);
-
- //TODO: found better solution, but QAA Level in response could be not supported yet
- try {
- if(authnContextClassRef==null)
- authnContextClassRef = PVPConstants.STORK_QAA_PREFIX + oaParam.getQaaLevel();
- moaSession.setQAALevel(authnContextClassRef);
-
- } catch (Throwable e) {
- Logger.warn("STORK QAA-Level is not found in AuthnResponse. Set QAA Level to requested level");
- moaSession.setQAALevel(PVPConstants.STORK_QAA_PREFIX + oaParam.getQaaLevel());
-
- }
-
- }
-
- private VerifyXMLSignatureResponse verifyXMLSignature(String signature) throws AuthenticationException, ParseException, BKUException, BuildException, ConfigurationException, ServiceException, UnsupportedEncodingException, SAXException, IOException, ParserConfigurationException, MOAException
- {
- //Based on MOA demo client
- // Factory und Service instanzieren
- SPSSFactory spssFac = SPSSFactory.getInstance();
- SignatureVerificationService sigVerifyService = SignatureVerificationService.getInstance();
-
- Content sigDocContent1 = spssFac.createContent(IOUtils.toInputStream(signature, "UTF-8"), null);
-
- // Position der zu prüfenden Signatur im Dokument angeben
- // (Nachdem im XPath-Ausdruck ein NS-Präfix verwendet wird, muss in einer Lookup-Tabelle
- // der damit bezeichnete Namenraum mitgegeben werden)
- HashMap nSMap = new HashMap();
- nSMap.put("dsig", "http://www.w3.org/2000/09/xmldsig#");
- VerifySignatureLocation sigLocation = spssFac.createVerifySignatureLocation("//dsig:Signature", nSMap);
-
- // Zu prüfendes Dokument und Signaturposition zusammenfassen
-
- VerifySignatureInfo sigInfo = spssFac.createVerifySignatureInfo(sigDocContent1, sigLocation);
-
- // Prüfrequest zusammenstellen
- VerifyXMLSignatureRequest verifyRequest = spssFac.createVerifyXMLSignatureRequest(
- null, // Wird Prüfzeit nicht angegeben, wird aktuelle Zeit verwendet
- sigInfo,
- null, // Keine Ergänzungsobjekte notwendig
- null, // Signaturmanifest-Prüfung soll nicht durchgeführt werden
- false, // Hash-Inputdaten, d.h. tatsächlich signierte Daten werden nicht zurückgeliefert
- "MOAIDBuergerkartePersonenbindungMitTestkarten");//TODO load from config
- //"Test-Signaturdienste"); // ID des verwendeten Vertrauensprofils
-
- VerifyXMLSignatureResponse verifyResponse = null;
- try
- {
- // Aufruf der Signaturprüfung
- verifyResponse = sigVerifyService.verifyXMLSignature(verifyRequest);
- }
- catch (MOAException e)
- {
- // Service liefert Fehler
- System.err.println("Die Signaturprüfung hat folgenden Fehler geliefert:");
- System.err.println("Fehlercode: " + e.getMessageId());
- System.err.println("Fehlernachricht: " + e.getMessage());
- throw e;
- }
-
-// // Auswertung der Response
-// System.out.println();
-// System.out.println("Ergebnisse der Signaturprüfung:");
-// System.out.println();
-//
-// // Besondere Eigenschaften des Signatorzertifikats
-// SignerInfo signerInfo = verifyResponse.getSignerInfo();
-// System.out.println("*** Ist Zertifikat des Signators qualifiziert? " + ((signerInfo.isQualifiedCertificate()) ? "ja" : "nein"));
-// System.out.println("*** Ist Zertifikat des Signators von einer Behörde? " + ((signerInfo.isPublicAuthority()) ? "ja" : "nein"));
-//
-// // Ergebnisse von Signatur- und Zertifikatsprüfung
-// System.out.println();
-// System.out.println("Ergebniscode der Signaturprüfung: " + verifyResponse.getSignatureCheck().getCode());
-// System.out.println("Ergebniscode der Zertifikatsprüfung: " + verifyResponse.getCertificateCheck().getCode());
-//
-// // Signatorzertifikat
-// System.out.println();
-// System.out.println("*** Zertifikat des Signators:");
-// System.out.println("Aussteller: " + signerInfo.getSignerCertificate().getIssuerDN());
-// System.out.println("Subject: " + signerInfo.getSignerCertificate().getSubjectDN());
-// System.out.println("Seriennummer: " + signerInfo.getSignerCertificate().getSerialNumber());
- return verifyResponse;
- }
-
- private at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse convert(VerifyXMLSignatureResponse xMLVerifySignatureResponse) {
- at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse response = new at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse();
- response.setCertificateCheckCode(xMLVerifySignatureResponse.getCertificateCheck().getCode());
- response.setPublicAuthority(xMLVerifySignatureResponse.getSignerInfo().isPublicAuthority());
-// response.setPublicAuthorityCode(publicAuthorityCode)
- response.setQualifiedCertificate(xMLVerifySignatureResponse.getSignerInfo().isQualifiedCertificate());
- response.setSignatureCheckCode(xMLVerifySignatureResponse.getSignatureCheck().getCode());
- response.setSignatureManifestCheckCode(xMLVerifySignatureResponse.getSignatureManifestCheck().getCode());
-// response.setSigningDateTime()
-// response.setX509certificate(x509certificate)
- response.setXmlDSIGManifestCheckCode(xMLVerifySignatureResponse.getSignatureManifestCheck().getCode());
-// response.setXmlDSIGManigest(xMLVerifySignatureResponse.getSignatureManifestCheck())
-// response.setXmlDsigSubjectName(xmlDsigSubjectName)
- return response;
- }
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java
index 43b6c03d4..ee995e16b 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/ProcessEngineSignalServlet.java
@@ -7,14 +7,21 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
+import org.slf4j.MDC;
+import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionExtensions;
+import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
+import at.gv.egovernment.moa.logging.Logger;
/**
* Servlet that resumes a suspended process (in case of asynchronous tasks).
@@ -33,10 +40,10 @@ public class ProcessEngineSignalServlet extends AuthServlet {
* The HttpServletResponse.
*/
private void setNoCachingHeaders(HttpServletResponse resp) {
- resp.setHeader(HEADER_EXPIRES, HEADER_VALUE_EXPIRES);
- resp.setHeader(HEADER_PRAGMA, HEADER_VALUE_PRAGMA);
- resp.setHeader(HEADER_CACHE_CONTROL, HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(HEADER_CACHE_CONTROL, HEADER_VALUE_CACHE_CONTROL_IE);
+ resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES, MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
+ resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA, MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
+ resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL, MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
+ resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL, MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
}
/**
@@ -65,8 +72,22 @@ public class ProcessEngineSignalServlet extends AuthServlet {
// retrieve moa session
pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
+
+ IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+ if (pendingReq == null) {
+ Logger.info("No PendingRequest with Id: " + pendingRequestID + " Maybe, a transaction timeout occure.");
+ throw new MOAIDException("auth.28", new Object[]{pendingRequestID});
+
+ }
+
+ AuthenticationSessionExtensions extendedSessionInformation = AuthenticationSessionStoreage.getAuthenticationSessionExtensions(sessionID);
AuthenticationSession session = AuthenticationServer.getSession(sessionID);
+ //add transactionID and unique sessionID to Logger
+ if (extendedSessionInformation != null)
+ TransactionIDUtils.setSessionId(extendedSessionInformation.getUniqueSessionId());
+ TransactionIDUtils.setTransactionId(pendingRequestID);
+
// process instance is mandatory
if (session.getProcessInstanceId() == null) {
throw new IllegalStateException("MOA session does not provide process instance id.");
@@ -77,8 +98,12 @@ public class ProcessEngineSignalServlet extends AuthServlet {
} catch (Exception ex) {
handleError(null, ex, req, resp, pendingRequestID);
+
} finally {
- MOASessionDBUtils.closeSession();
+ //MOASessionDBUtils.closeSession();
+ TransactionIDUtils.removeTransactionId();
+ TransactionIDUtils.removeSessionId();
+
}
}
@@ -95,7 +120,7 @@ public class ProcessEngineSignalServlet extends AuthServlet {
* @return The current MOA session id.
*/
public String getMoaSessionId(HttpServletRequest request) {
- return StringEscapeUtils.escapeHtml(request.getParameter(PARAM_SESSIONID));
+ return StringEscapeUtils.escapeHtml(request.getParameter(MOAIDAuthConstants.PARAM_SESSIONID));
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/RedirectServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/RedirectServlet.java
index 532ccb7ba..7dd8645c6 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/RedirectServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/RedirectServlet.java
@@ -29,12 +29,13 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.builder.RedirectFormBuilder;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.SSOManager;
+import at.gv.egovernment.moa.id.util.FormBuildUtils;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
import at.gv.egovernment.moa.util.URLEncoder;
@@ -55,16 +56,16 @@ public class RedirectServlet extends AuthServlet{
Logger.debug("Receive " + RedirectServlet.class + " Request");
String url = req.getParameter(REDIRCT_PARAM_URL);
- String target = req.getParameter(PARAM_TARGET);
- String artifact = req.getParameter(PARAM_SAMLARTIFACT);
- String interIDP = req.getParameter(INTERFEDERATION_IDP);
+ String target = req.getParameter(MOAIDAuthConstants.PARAM_TARGET);
+ String artifact = req.getParameter(MOAIDAuthConstants.PARAM_SAMLARTIFACT);
+ String interIDP = req.getParameter(MOAIDAuthConstants.INTERFEDERATION_IDP);
Logger.debug("Check URL against online-applications");
- OnlineApplication oa = null;
+ OAAuthParameter oa = null;
String redirectTarget = DEFAULT_REDIRECTTARGET;
try {
- oa = ConfigurationDBRead.getActiveOnlineApplication(url);
- if (oa == null && !url.startsWith(AuthConfigurationProvider.getInstance().getPublicURLPrefix())) {
+ oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(url);
+ if (oa == null && !url.startsWith(AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix())) {
resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Parameters not valid");
return;
@@ -72,7 +73,7 @@ public class RedirectServlet extends AuthServlet{
//Redirect is a SAML1 send Artifact redirct
if (MiscUtil.isNotEmpty(artifact)) {
try {
- String test = oa.getAuthComponentOA().getTemplates().getBKUSelectionCustomization().getAppletRedirectTarget();
+ String test = oa.getFormCustomizaten().get(FormBuildUtils.REDIRECTTARGET);
if (MiscUtil.isNotEmpty(test))
redirectTarget = test;
@@ -85,12 +86,12 @@ public class RedirectServlet extends AuthServlet{
if (MiscUtil.isNotEmpty(target)) {
// redirectURL = addURLParameter(redirectURL, PARAM_TARGET,
// URLEncoder.encode(session.getTarget(), "UTF-8"));
- url = addURLParameter(url, PARAM_TARGET,
+ url = addURLParameter(url, MOAIDAuthConstants.PARAM_TARGET,
URLEncoder.encode(target, "UTF-8"));
}
- url = addURLParameter(url, PARAM_SAMLARTIFACT,
+ url = addURLParameter(url, MOAIDAuthConstants.PARAM_SAMLARTIFACT,
URLEncoder.encode(artifact, "UTF-8"));
url = resp.encodeRedirectURL(url);
@@ -134,7 +135,7 @@ public class RedirectServlet extends AuthServlet{
return;
} finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/SSOSendAssertionServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/SSOSendAssertionServlet.java
index 495c4ca5b..600ef2c76 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/SSOSendAssertionServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/SSOSendAssertionServlet.java
@@ -30,12 +30,16 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.moduls.SSOManager;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
@@ -55,7 +59,7 @@ public class SSOSendAssertionServlet extends AuthServlet{
throws ServletException, IOException {
String id = null;
- Logger.info("Receive " + SSOSendAssertionServlet.class + " Request");
+ Logger.debug("Receive " + SSOSendAssertionServlet.class + " Request");
try {
Object idObject = req.getParameter(ID);
@@ -127,7 +131,12 @@ public class SSOSendAssertionServlet extends AuthServlet{
moaSessionID = AuthenticationSessionStoreage.getMOASessionSSOID(ssoId);
AuthenticationSession moasession = AuthenticationSessionStoreage.getSession(moaSessionID);
AuthenticationSessionStoreage.setAuthenticated(moaSessionID, true);
-
+
+ //log event
+ String pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moaSessionID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+ MOAReversionLogger.getInstance().logEvent(pendingReq, MOAIDEventConstants.AUTHPROCESS_SSO_ASK_USER_FINISHED);
+
String redirectURL = new DataURLBuilder().buildDataURL(moasession.getAuthURL(),
ModulUtils.buildAuthURL(module, action, id), "");
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyAuthenticationBlockServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyAuthenticationBlockServlet.java
deleted file mode 100644
index a8fe71485..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyAuthenticationBlockServlet.java
+++ /dev/null
@@ -1,342 +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.
- ******************************************************************************/
-/*
- * 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.auth.servlet;
-
-import iaik.pki.PKIException;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.util.List;
-import java.util.Map;
-
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.transform.TransformerException;
-
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.MISSimpleClientException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.auth.modules.internal.tasks.VerifyAuthenticationBlockTask;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
-import at.gv.egovernment.moa.id.moduls.ModulUtils;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
-import at.gv.egovernment.moa.id.util.SSLUtils;
-import at.gv.egovernment.moa.id.util.client.mis.simple.MISSessionId;
-import at.gv.egovernment.moa.id.util.client.mis.simple.MISSimpleClient;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
-
-/**
- * Servlet requested for verifying the signed authentication block
- * provided by the security layer implementation.
- * Utilizes the {@link AuthenticationServer}.
- *
- * @author Paul Ivancsics
- * @version $Id$
- * @deprecated Use {@link VerifyAuthenticationBlockTask} instead.
- */
-public class VerifyAuthenticationBlockServlet extends AuthServlet {
-
-
- /**
- *
- */
- private static final long serialVersionUID = -2409629495345900542L;
-
-/**
- * Constructor for VerifyAuthenticationBlockServlet.
- */
- public VerifyAuthenticationBlockServlet() {
- super();
- }
-
- /**
- * GET requested by security layer implementation to verify
- * that data URL resource is available.
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
- */
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- //doPost(req, resp);
-
- Logger.debug("GET VerifyAuthenticationBlock");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
-
- }
-
- /**
- * Verifies the signed authentication block and redirects the browser
- * to the online application requested, adding a parameter needed for
- * retrieving the authentication data.
- * <br>
- * Request parameters:
- * <ul>
- * <li>MOASessionID: ID of associated authentication session</li>
- * <li>XMLResponse: <code>&lt;CreateXMLSignatureResponse&gt;</code></li>
- * </ul>
- * Response:
- * <ul>
- * <li>Status: <code>302</code></li>
- * <li>Header <code>"Location"</code>: URL of the online application requested, with
- * parameters <code>"Target"</code>(only if the online application is
- * a public service) and <code>"SAMLArtifact"</code> added</li>
- * <li>Error status: <code>500</code>
- * </ul>
- * @see AuthenticationServer#verifyAuthenticationBlock
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
- */
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("POST VerifyAuthenticationBlock");
-
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
-
- String pendingRequestID = null;
-
- Map<String, String> parameters;
- try
- {
- parameters = getParameters(req);
- } catch (FileUploadException e)
- {
- Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
- throw new IOException(e.getMessage());
-
- }
- String sessionID = req.getParameter(PARAM_SESSIONID);
- String createXMLSignatureResponse = (String)parameters.get(PARAM_XMLRESPONSE);
-
- // escape parameter strings
- sessionID = StringEscapeUtils.escapeHtml(sessionID);
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
-
- String redirectURL = null;
- try {
- // check parameter
- if (!ParamValidatorUtils.isValidSessionID(sessionID))
- throw new WrongParametersException("VerifyAuthenticationBlock", PARAM_SESSIONID, "auth.12");
- if (!ParamValidatorUtils.isValidXMLDocument(createXMLSignatureResponse))
- throw new WrongParametersException("VerifyAuthenticationBlock", PARAM_XMLRESPONSE, "auth.12");
-
- AuthenticationSession session = AuthenticationServer.getSession(sessionID);
-
- //change MOASessionID
- sessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- String samlArtifactBase64 = AuthenticationServer.getInstance().verifyAuthenticationBlock(session, createXMLSignatureResponse);
-
-
-
- if (samlArtifactBase64 == null) {
- //mandate Mode
-
- AuthConfigurationProvider authConf= AuthConfigurationProvider.getInstance();
- ConnectionParameter connectionParameters = authConf.getOnlineMandatesConnectionParameter();
- SSLSocketFactory sslFactory = SSLUtils.getSSLSocketFactory(AuthConfigurationProvider.getInstance(), connectionParameters);
-
- // get identitity link as byte[]
- Element elem = session.getIdentityLink().getSamlAssertion();
- String s = DOMUtils.serializeNode(elem);
-
- //System.out.println("IDL: " + s);
-
- byte[] idl = s.getBytes("UTF-8");
-
- // redirect url
- // build redirect(to the GetMISSessionIdSerlvet)
-
- //change MOASessionID before MIS request
- String newMOASessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- redirectURL =
- new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- GET_MIS_SESSIONID,
- newMOASessionID);
-
- String oaURL = session.getOAURLRequested();
- OAAuthParameter oaParam = authConf.getOnlineApplicationParameter(oaURL);
- List<String> profiles = oaParam.getMandateProfiles();
-
- if (profiles == null) {
- Logger.error("No Mandate/Profile for OA configured.");
- throw new AuthenticationException("config.21", new Object[] { GET_MIS_SESSIONID});
- }
-
-// String profilesArray[] = profiles.split(",");
-// for(int i = 0; i < profilesArray.length; i++) {
-// profilesArray[i] = profilesArray[i].trim();
-// }
-
- String oaFriendlyName = oaParam.getFriendlyName();
- String mandateReferenceValue = session.getMandateReferenceValue();
- byte[] cert = session.getEncodedSignerCertificate();
- byte[] authBlock = session.getAuthBlock().getBytes("UTF-8");
-
- //TODO: check in case of SSO!!!
- String targetType = null;
- if(oaParam.getBusinessService()) {
- String id = oaParam.getIdentityLinkDomainIdentifier();
- if (id.startsWith(AuthenticationSession.REGISTERANDORDNR_PREFIX_))
- targetType = id;
- else
- targetType = AuthenticationSession.REGISTERANDORDNR_PREFIX_+session.getDomainIdentifier();
-
- } else {
- targetType = AuthenticationSession.TARGET_PREFIX_ + oaParam.getTarget();
- }
-
- MISSessionId misSessionID = MISSimpleClient.sendSessionIdRequest(
- connectionParameters.getUrl(),
- idl,
- cert,
- oaFriendlyName,
- redirectURL,
- mandateReferenceValue,
- profiles,
- targetType,
- authBlock,
- sslFactory);
-
- if (misSessionID == null) {
- Logger.error("Fehler bei Anfrage an Vollmachten Service. MIS Session ID ist null.");
- throw new MISSimpleClientException("Fehler bei Anfrage an Vollmachten Service.");
- }
-
- String redirectMISGUI = misSessionID.getRedirectURL();
- session.setMISSessionID(misSessionID.getSessiondId());
-
- try {
- AuthenticationSessionStoreage.storeSession(session);
- } catch (MOADatabaseException e) {
- throw new MOAIDException("Session store error", null);
- }
-
- resp.setStatus(302);
- resp.addHeader("Location", redirectMISGUI);
- Logger.debug("REDIRECT TO: " + redirectURL);
- }
- else {
-
- if (!samlArtifactBase64.equals("Redirect to Input Processor")) {
- /*redirectURL = session.getOAURLRequested();
- if (!session.getBusinessService()) {
- redirectURL = addURLParameter(redirectURL, PARAM_TARGET, URLEncoder.encode(session.getTarget(), "UTF-8"));
-
- }
- redirectURL = addURLParameter(redirectURL, PARAM_SAMLARTIFACT, URLEncoder.encode(samlArtifactBase64, "UTF-8"));
- redirectURL = resp.encodeRedirectURL(redirectURL);*/
-
-
- redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(),
- ModulUtils.buildAuthURL(session.getModul(), session.getAction(), pendingRequestID), samlArtifactBase64);
-
- } else {
- redirectURL = new DataURLBuilder().buildDataURL(session.getAuthURL(), AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, session.getSessionID());
- }
-
- resp.setContentType("text/html");
- resp.setStatus(302);
-
- resp.addHeader("Location", redirectURL);
- Logger.debug("REDIRECT TO: " + redirectURL);
-
- }
-
- }
-
- catch (MOAIDException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (GeneralSecurityException e) {
- handleError(null, e, req, resp, pendingRequestID);
-
- } catch (PKIException e) {
- handleError(null, e, req, resp, pendingRequestID);
-
- } catch (TransformerException e) {
- handleError(null, e, req, resp, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("AuthBlockValidation has an interal Error.", e);
- }
-
-
- finally {
- ConfigurationDBUtils.closeSession();
- }
-
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyCertificateServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyCertificateServlet.java
deleted file mode 100644
index 2aa717a65..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyCertificateServlet.java
+++ /dev/null
@@ -1,235 +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.
- ******************************************************************************/
-/*
- * 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.auth.servlet;
-
-import iaik.x509.X509Certificate;
-
-import java.io.IOException;
-import java.util.Map;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.lang.StringEscapeUtils;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.auth.modules.internal.tasks.VerifyCertificateTask;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
-import at.gv.egovernment.moa.id.util.ServletUtils;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.spss.util.CertificateUtils;
-
-/**
- * Servlet requested for getting the foreign eID
- * provided by the security layer implementation.
- * Utilizes the {@link AuthenticationServer}.
- * @deprecated Use {@link VerifyCertificateTask} instead.
- *
- */
-public class VerifyCertificateServlet extends AuthServlet {
-
- /**
- *
- */
- private static final long serialVersionUID = -4110159749768152538L;
-
-/**
- * Constructor for VerifyCertificateServlet.
- */
- public VerifyCertificateServlet() {
- super();
- }
-
- /**
- * GET requested by security layer implementation to verify
- * that data URL resource is available.
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
- */
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("GET VerifyCertificateServlet");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
- }
-
- /**
- * Gets the signer certificate from the InfoboxReadRequest and
- * responds with a new
- * <code>CreateXMLSignatureRequest</code>.
- * <br>
- * Request parameters:
- * <ul>
- * <li>MOASessionID: ID of associated authentication session</li>
- * <li>XMLResponse: <code>&lt;InfoboxReadResponse&gt;</code></li>
- * </ul>
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
- */
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("POST VerifyCertificateServlet");
-
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
-
- String pendingRequestID = null;
-
- Map<String, String> parameters;
- try
- {
- parameters = getParameters(req);
- } catch (FileUploadException e)
- {
- Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
- throw new IOException(e.getMessage());
- }
- String sessionID = req.getParameter(PARAM_SESSIONID);
-
- // escape parameter strings
- sessionID = StringEscapeUtils.escapeHtml(sessionID);
-
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
-
- AuthenticationSession session = null;
- try {
- // check parameter
- if (!ParamValidatorUtils.isValidSessionID(sessionID))
- throw new WrongParametersException("VerifyCertificate", PARAM_SESSIONID, "auth.12");
-
- session = AuthenticationServer.getSession(sessionID);
-
- //change MOASessionID
- sessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- X509Certificate cert = AuthenticationServer.getInstance().getCertificate(sessionID, parameters);
- if (cert == null) {
- Logger.error("Certificate could not be read.");
- throw new AuthenticationException("auth.14", null);
- }
-
- boolean useMandate = session.getUseMandate();
-
-
- if (useMandate) {
-
- // verify certificate for OrganWalter
- String createXMLSignatureRequestOrRedirect = AuthenticationServer.getInstance().verifyCertificate(session, cert);
-
- try {
- AuthenticationSessionStoreage.storeSession(session);
- } catch (MOADatabaseException e) {
- throw new MOAIDException("session store error", null);
- }
-
- ServletUtils.writeCreateXMLSignatureRequestOrRedirect(resp, session, createXMLSignatureRequestOrRedirect, AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "VerifyCertificate");
-
- }
- else {
-
-
- String countrycode = CertificateUtils.getIssuerCountry(cert);
- if (countrycode != null) {
- if (countrycode.compareToIgnoreCase("AT") == 0) {
- Logger.error("Certificate issuer country code is \"AT\". Login not support in foreign identities mode.");
- throw new AuthenticationException("auth.22", null);
- }
- }
-
- // Foreign Identities Modus
- String createXMLSignatureRequest = AuthenticationServer.getInstance().createXMLSignatureRequestForeignID(session, cert);
- // build dataurl (to the GetForeignIDSerlvet)
- String dataurl =
- new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- REQ_GET_FOREIGN_ID,
- session.getSessionID());
-
- try {
- AuthenticationSessionStoreage.storeSession(session);
- } catch (MOADatabaseException e) {
- throw new MOAIDException("session store error", null);
- }
-
- ServletUtils.writeCreateXMLSignatureRequest(resp, createXMLSignatureRequest, AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "GetForeignID", dataurl);
-
- Logger.debug("Send CreateXMLSignatureRequest to BKU");
- }
- }
- catch (MOAIDException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("CertificateValidation has an interal Error.", e);
- }
-
-
- finally {
- ConfigurationDBUtils.closeSession();
- }
- }
-
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyIdentityLinkServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyIdentityLinkServlet.java
deleted file mode 100644
index b8e57ed43..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/VerifyIdentityLinkServlet.java
+++ /dev/null
@@ -1,278 +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.
- ******************************************************************************/
-/*
- * 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.auth.servlet;
-
-import java.io.IOException;
-import java.util.Map;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang.StringEscapeUtils;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
-import at.gv.egovernment.moa.id.auth.builder.InfoboxReadRequestBuilderCertificate;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.auth.modules.internal.tasks.VerifyIdentityLinkTask;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
-import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
-import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
-import at.gv.egovernment.moa.id.util.ServletUtils;
-import at.gv.egovernment.moa.logging.Logger;
-
-/**
- * Servlet requested for verifying the identity link
- * provided by the security layer implementation.
- * Utilizes the {@link AuthenticationServer}.
- *
- * @author Paul Ivancsics
- * @version $Id$
- * @deprecated Use {@link VerifyIdentityLinkTask} instead.
- */
-public class VerifyIdentityLinkServlet extends AuthServlet {
-
- /**
- *
- */
- private static final long serialVersionUID = -7074476974026049958L;
-
-/**
- * Constructor for VerifyIdentityLinkServlet.
- */
- public VerifyIdentityLinkServlet() {
- super();
- }
-
- /**
- * GET requested by security layer implementation to verify
- * that data URL resource is available.
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
- */
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("GET VerifyIdentityLink");
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
- }
-
- /**
- * Verifies the identity link and responds with a new
- * <code>CreateXMLSignatureRequest</code> or a new <code>
- * InfoboxReadRequest</code> (in case of a foreign eID card).
- * <br>
- * Request parameters:
- * <ul>
- * <li>MOASessionID: ID of associated authentication session</li>
- * <li>XMLResponse: <code>&lt;InfoboxReadResponse&gt;</code></li>
- * </ul>
- * Response:
- * <ul>
- * <li>Content type: <code>"text/xml"</code></li>
- * <li>Content: see return value of {@link AuthenticationServer#verifyIdentityLink}</li>
- * <li>Error status: <code>500</code>
- * </ul>
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
- */
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Logger.debug("POST VerifyIdentityLink");
-
- Logger.warn(getClass().getName() + " is deprecated and should not be used any more.");
-
- Map<String, String> parameters;
- String pendingRequestID = null;
-
- try
- {
- parameters = getParameters(req);
-
- } catch (Exception e)
- {
- Logger.error("Parsing mulitpart/form-data request parameters failed: " + e.getMessage());
- throw new IOException(e.getMessage());
- }
- String sessionID = req.getParameter(PARAM_SESSIONID);
-
- // escape parameter strings
- sessionID = StringEscapeUtils.escapeHtml(sessionID);
-
- pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
-
- resp.setHeader(MOAIDAuthConstants.HEADER_EXPIRES,MOAIDAuthConstants.HEADER_VALUE_EXPIRES);
- resp.setHeader(MOAIDAuthConstants.HEADER_PRAGMA,MOAIDAuthConstants.HEADER_VALUE_PRAGMA);
- resp.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
- resp.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL,MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
-
-
- try {
- // check parameter
- if (!ParamValidatorUtils.isValidSessionID(sessionID))
- throw new WrongParametersException("VerifyIdentityLink", PARAM_SESSIONID, "auth.12");
-
-
- AuthenticationSession session = AuthenticationServer.getSession(sessionID);
-
- //change MOASessionID
- sessionID = AuthenticationSessionStoreage.changeSessionID(session);
-
- String createXMLSignatureRequestOrRedirect = AuthenticationServer.getInstance().verifyIdentityLink(session, parameters);
-
- Logger.debug(createXMLSignatureRequestOrRedirect);
-
-
- if (createXMLSignatureRequestOrRedirect == null) {
- // no identity link found
-
- boolean useMandate = session.getUseMandate();
- if (useMandate) {
- Logger.error("Online-Mandate Mode for foreign citizencs not supported.");
- throw new AuthenticationException("auth.13", null);
- }
-
- try {
-
- Logger.info("Send InfoboxReadRequest to BKU to get signer certificate.");
-
- // create the InfoboxReadRequest to get the certificate
- String infoboxReadRequest = new InfoboxReadRequestBuilderCertificate().build(true);
-
- // build dataurl (to the VerifyCertificateSerlvet)
- String dataurl =
- new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- REQ_VERIFY_CERTIFICATE,
- session.getSessionID());
-
-
- ServletUtils.writeCreateXMLSignatureRequest(resp, infoboxReadRequest, AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "VerifyIdentityLink", dataurl);
-
-
- }
- catch(Exception e) {
- handleError(null, e, req, resp, pendingRequestID);
- }
-
- }
- else {
- boolean useMandate = session.getUseMandate();
-
- if (useMandate) { // Mandate modus
- // read certificate and set dataurl to
- Logger.debug("Send InfoboxReadRequest to BKU to get signer certificate.");
-
-
- String infoboxReadRequest = new InfoboxReadRequestBuilderCertificate().build(true);
-
- // build dataurl (to the GetForeignIDSerlvet)
- String dataurl =
- new DataURLBuilder().buildDataURL(
- session.getAuthURL(),
- REQ_VERIFY_CERTIFICATE,
- session.getSessionID());
-
- //Logger.debug("ContentType set to: application/x-www-form-urlencoded (ServletUtils)");
- //ServletUtils.writeCreateXMLSignatureRequestURLEncoded(resp, session, infoboxReadRequest, AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "VerifyIdentityLink", dataurl);
-
- Logger.debug("ContentType set to: text/xml;charset=UTF-8 (ServletUtils)");
- ServletUtils.writeCreateXMLSignatureRequest(resp, infoboxReadRequest, AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "VerifyIdentityLink", dataurl);
-
- }
- else {
- Logger.info("Normal");
-
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
- .getOnlineApplicationParameter(session.getPublicOAURLPrefix());
- AuthConfigurationProvider authConf = AuthConfigurationProvider
- .getInstance();
-
- createXMLSignatureRequestOrRedirect = AuthenticationServer.getInstance()
- .getCreateXMLSignatureRequestAuthBlockOrRedirect(session,
- authConf, oaParam);
-
- ServletUtils.writeCreateXMLSignatureRequestOrRedirect(resp, session, createXMLSignatureRequestOrRedirect, AuthenticationServer.REQ_PROCESS_VALIDATOR_INPUT, "VerifyIdentityLink");
- }
- }
-
- try {
- AuthenticationSessionStoreage.storeSession(session);
-
- } catch (MOADatabaseException e) {
- Logger.info("No valid MOA session found. Authentification process is abourted.");
- throw new AuthenticationException("auth.20", null);
- }
- }
- catch (ParseException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (MOAIDException ex) {
- handleError(null, ex, req, resp, pendingRequestID);
-
- } catch (Exception e) {
- Logger.error("IdentityLinkValidation has an interal Error.", e);
- }
-
- finally {
- ConfigurationDBUtils.closeSession();
- }
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java
index 547a86bd9..e1ab0025e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java
@@ -65,7 +65,7 @@ import at.gv.egovernment.moa.id.auth.data.SAMLAttribute;
import at.gv.egovernment.moa.id.auth.exception.ValidateException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.TargetToSectorNameMapper;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.Constants;
@@ -292,9 +292,11 @@ public class CreateXMLSignatureResponseValidator {
String text = "";
try {
- OAAuthParameter oaparam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
- if (MiscUtil.isNotEmpty(text = oaparam.getAditionalAuthBlockText()))
+ OAAuthParameter oaparam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(session.getPublicOAURLPrefix());
+ if (MiscUtil.isNotEmpty(oaparam.getAditionalAuthBlockText())) {
Logger.info("Use addional AuthBlock Text from OA=" + oaparam.getPublicURLPrefix());
+ text = oaparam.getAditionalAuthBlockText();
+ }
} catch (ConfigurationException e) {
Logger.warn("Addional AuthBlock Text can not loaded from OA!", e);
}
@@ -418,7 +420,7 @@ public class CreateXMLSignatureResponseValidator {
String oaURL;
try {
- oaURL = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ oaURL = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
} catch (ConfigurationException e1) {
oaURL = new String();
}
@@ -521,8 +523,11 @@ public class CreateXMLSignatureResponseValidator {
String text = "";
try {
- if (MiscUtil.isNotEmpty(text = AuthConfigurationProvider.getInstance().getSSOSpecialText()))
+ if (MiscUtil.isNotEmpty(AuthConfigurationProviderFactory.getInstance().getSSOSpecialText())) {
+ text = AuthConfigurationProviderFactory.getInstance().getSSOSpecialText();
Logger.info("Use addional AuthBlock Text from SSO=" +text);
+
+ }
else
text = new String();
} catch (ConfigurationException e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java
index 284a77126..ac528c89d 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java
@@ -66,7 +66,7 @@ import at.gv.egovernment.moa.id.auth.data.IdentityLink;
import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse;
import at.gv.egovernment.moa.id.auth.exception.ValidateException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
import at.gv.egovernment.moa.logging.Logger;
@@ -141,7 +141,7 @@ public class VerifyXMLSignatureResponseValidator {
}
//check QC
- if (AuthConfigurationProvider.getInstance().isCertifiacteQCActive() &&
+ if (AuthConfigurationProviderFactory.getInstance().isCertifiacteQCActive() &&
!whatToCheck.equals(CHECK_IDENTITY_LINK) &&
!verifyXMLSignatureResponse.isQualifiedCertificate()) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/client/SZRGWClient.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/client/SZRGWClient.java
index 9e4f3fa36..672d2a35e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/client/SZRGWClient.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/client/SZRGWClient.java
@@ -29,7 +29,7 @@ import javax.net.ssl.SSLSocketFactory;
import javax.xml.namespace.QName;
import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.util.SSLUtils;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
@@ -104,7 +104,7 @@ public class SZRGWClient {
private void initial(ConnectionParameter szrgwconnection) throws at.gv.egovernment.moa.id.client.SZRGWClientException{
try {
sslContext = SSLUtils.getSSLSocketFactory(
- AuthConfigurationProvider.getInstance(),
+ AuthConfigurationProviderFactory.getInstance(),
szrgwconnection);
} catch (Exception e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProvider.java
index 24def1e02..5ec0a5bc6 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProvider.java
@@ -1,27 +1,5 @@
-/*******************************************************************************
- * 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
+ * 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.
*
@@ -42,128 +20,47 @@
* The "NOTICE" text file is part of the distribution. Any derivative works
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
-
package at.gv.egovernment.moa.id.config;
-import java.math.BigInteger;
-import java.security.Principal;
-import java.security.cert.X509Certificate;
-import java.util.Map;
-
-import at.gv.egovernment.moa.id.data.IssuerAndSerial;
-
/**
- * Base class for <code>AuthConfigurationProvider</code> and <code>ProxyConfigurationProvider</code>,
- * providing functions common to both of them.
+ * @author tlenz
*
- * @author Paul Ivancsics
- * @version $Id$
*/
-public class ConfigurationProvider {
-
- /**
- * Constructor
- */
- public ConfigurationProvider() {
- super();
- }
-
- /**
- * The name of the system property which contains the file name of the
- * configuration file.
- */
- public static final String CONFIG_PROPERTY_NAME =
- "moa.id.configuration";
-
- /**
- * The name of the system property which contains the file name of the
- * configuration file.
- */
- public static final String PROXY_CONFIG_PROPERTY_NAME =
- "moa.id.proxy.configuration";
-
- /**
- * The name of the generic configuration property giving the certstore directory path.
- */
- public static final String DIRECTORY_CERTSTORE_PARAMETER_PROPERTY =
- "DirectoryCertStoreParameters.RootDir";
-
- /**
- * The name of the generic configuration property switching the ssl revocation checking on/off
- */
- public static final String TRUST_MANAGER_REVOCATION_CHECKING =
- "TrustManager.RevocationChecking";
-
-
- /**
- * A <code>Map</code> which contains generic configuration information. Maps a
- * configuration name (a <code>String</code>) to a configuration value (also a
- * <code>String</code>).
- */
- protected Map<String, String> genericConfiguration;
-
- /** The default chaining mode. */
- protected String defaultChainingMode;
-
- /**
- * A <code>Map</code> which contains the <code>IssuerAndSerial</code> to
- * chaining mode (a <code>String</code>) mapping.
- */
- protected Map<IssuerAndSerial, String> chainingModes;
-
- /**
- * the URL for the trusted CA Certificates
- */
- protected String trustedCACertificates;
-
- /**
- * main configuration file directory name used to configure MOA-ID
- */
- protected String rootConfigFileDir;
-
- protected String certstoreDirectory;
-
- protected boolean trustmanagerrevoationchecking = true;
-
- /**
- * Returns the main configuration file directory used to configure MOA-ID
- *
- * @return the directory
+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 String getRootConfigFileDir() {
- return rootConfigFileDir;
- }
-
- public String getDefaultChainingMode() {
- return defaultChainingMode;
- }
-
-
- /**
- * Returns the trustedCACertificates.
- * @return String
- */
- public String getTrustedCACertificates() {
-
- return trustedCACertificates;
- }
-
-/**
- * @return the certstoreDirectory
- */
-public String getCertstoreDirectory() {
- return certstoreDirectory;
-}
-
-/**
- * @return the trustmanagerrevoationchecking
- */
-public boolean isTrustmanagerrevoationchecking() {
- return trustmanagerrevoationchecking;
-}
-
-
-
-
+ 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/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java
new file mode 100644
index 000000000..60d676868
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java
@@ -0,0 +1,282 @@
+/*******************************************************************************
+ * Copyright 2014 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ ******************************************************************************/
+/*
+ * Copyright 2003 Federal Chancellery Austria
+ * MOA-ID has been developed in a cooperation between BRZ, the Federal
+ * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+
+
+package at.gv.egovernment.moa.id.config;
+
+import java.util.Map;
+import java.util.Properties;
+
+import org.hibernate.cfg.Configuration;
+
+import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
+import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils;
+import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore;
+import at.gv.egovernment.moa.id.commons.db.dao.session.AuthenticatedSessionStore;
+import at.gv.egovernment.moa.id.commons.db.dao.session.ExceptionStore;
+import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
+import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
+import at.gv.egovernment.moa.id.commons.db.dao.session.OldSSOSessionIDStore;
+import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog;
+import at.gv.egovernment.moa.id.data.IssuerAndSerial;
+import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore;
+import at.gv.egovernment.moa.id.protocols.pvp2x.config.MOADefaultBootstrap;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.util.config.EgovUtilPropertiesConfiguration;
+
+
+/**
+ * Base class for <code>AuthConfigurationProvider</code> and <code>ProxyConfigurationProvider</code>,
+ * providing functions common to both of them.
+ *
+ * @author Paul Ivancsics
+ * @version $Id$
+ */
+public abstract class ConfigurationProviderImpl implements ConfigurationProvider{
+
+ /**
+ * Constructor
+ */
+ public ConfigurationProviderImpl() {
+
+ super();
+ }
+
+ private EgovUtilPropertiesConfiguration eGovUtilsConfig = null;
+
+ /**
+ * The name of the system property which contains the file name of the
+ * configuration file.
+ */
+ public static final String CONFIG_PROPERTY_NAME =
+ "moa.id.configuration";
+
+ /**
+ * The name of the system property which contains the file name of the
+ * configuration file.
+ */
+ public static final String PROXY_CONFIG_PROPERTY_NAME =
+ "moa.id.proxy.configuration";
+
+ /**
+ * The name of the generic configuration property giving the certstore directory path.
+ */
+ public static final String DIRECTORY_CERTSTORE_PARAMETER_PROPERTY =
+ "DirectoryCertStoreParameters.RootDir";
+
+ /**
+ * The name of the generic configuration property switching the ssl revocation checking on/off
+ */
+ public static final String TRUST_MANAGER_REVOCATION_CHECKING =
+ "TrustManager.RevocationChecking";
+
+
+ /**
+ * A <code>Map</code> which contains generic configuration information. Maps a
+ * configuration name (a <code>String</code>) to a configuration value (also a
+ * <code>String</code>).
+ */
+ protected Map<String, String> genericConfiguration;
+
+ /** The default chaining mode. */
+ protected String defaultChainingMode = "pkix";
+
+ /**
+ * A <code>Map</code> which contains the <code>IssuerAndSerial</code> to
+ * chaining mode (a <code>String</code>) mapping.
+ */
+ protected Map<IssuerAndSerial, String> chainingModes;
+
+ /**
+ * the URL for the trusted CA Certificates
+ */
+ protected String trustedCACertificates;
+
+ /**
+ * main configuration file directory name used to configure MOA-ID
+ */
+ protected String rootConfigFileDir;
+
+ protected String certstoreDirectory;
+
+ protected boolean trustmanagerrevoationchecking = true;
+
+ protected Properties configProp = null;
+
+ /**
+ * Returns the main configuration file directory used to configure MOA-ID
+ *
+ * @return the directory
+ */
+ public String getRootConfigFileDir() {
+ return rootConfigFileDir;
+ }
+
+
+ public String getDefaultChainingMode() {
+ return defaultChainingMode;
+ }
+
+ /**
+ * Get the DB configuration properties from MOA-ID-Auth configuration file
+ *
+ * @return
+ */
+ public Properties getDBConnectionConfiguration() {
+ return this.configProp;
+ }
+
+ /**
+ * @param properties
+ * @throws ConfigurationException
+ * @throws org.opensaml.xml.ConfigurationException
+ */
+ public void initial(Properties props) throws ConfigurationException, org.opensaml.xml.ConfigurationException {
+ //Initial Hibernate Framework
+ Logger.trace("Initializing Hibernate framework.");
+ try {
+ // read MOAID Session Hibernate properties
+ Properties moaSessionProp = new Properties();
+ for (Object key : props.keySet()) {
+ String propPrefix = "moasession.";
+ if (key.toString().startsWith(propPrefix+"hibernate")) {
+ String propertyName = key.toString().substring(propPrefix.length());
+ moaSessionProp.put(propertyName, props.get(key.toString()));
+ }
+ }
+
+ // read Config Hibernate properties
+ configProp = new Properties();
+ for (Object key : props.keySet()) {
+ String propPrefix = "configuration.";
+ if (key.toString().startsWith(propPrefix+"hibernate")) {
+ String propertyName = key.toString().substring(propPrefix.length());
+ configProp.put(propertyName, props.get(key.toString()));
+ }
+ }
+
+ // read advanced logging properties
+ Properties statisticProps = new Properties();
+ for (Object key : props.keySet()) {
+ String propPrefix = "advancedlogging.";
+ if (key.toString().startsWith(propPrefix+"hibernate")) {
+ String propertyName = key.toString().substring(propPrefix.length());
+ statisticProps.put(propertyName, props.get(key.toString()));
+ }
+ }
+
+ // initialize hibernate
+ synchronized (ConfigurationProviderImpl.class) {
+
+ //Initial config Database
+ // ConfigurationDBUtils.initHibernate(configProp);
+
+ //initial MOAID Session Database
+ Configuration config = new Configuration();
+ config.addAnnotatedClass(AssertionStore.class);
+ config.addAnnotatedClass(AuthenticatedSessionStore.class);
+ config.addAnnotatedClass(OASessionStore.class);
+ config.addAnnotatedClass(OldSSOSessionIDStore.class);
+ config.addAnnotatedClass(ExceptionStore.class);
+ config.addAnnotatedClass(InterfederationSessionStore.class);
+ config.addAnnotatedClass(ProcessInstanceStore.class);
+ config.addProperties(moaSessionProp);
+ MOASessionDBUtils.initHibernate(config, moaSessionProp);
+
+ //initial advanced logging
+ if (Boolean.valueOf(props.getProperty("configuration.advancedlogging.active", "false"))) {
+ Logger.info("Advanced statistic log is activated, starting initialization process ...");
+ Configuration statisticconfig = new Configuration();
+ statisticconfig.addAnnotatedClass(StatisticLog.class);
+ statisticconfig.addProperties(statisticProps);
+ StatisticLogDBUtils.initHibernate(statisticconfig, statisticProps);
+ Logger.info("Advanced statistic log is initialized.");
+ }
+
+ }
+ Logger.trace("Hibernate initialization finished.");
+
+ } catch (ExceptionInInitializerError e) {
+ throw new ConfigurationException("config.17", null, e);
+
+ } finally {
+
+
+ }
+
+
+ //Initialize OpenSAML for STORK
+ Logger.info("Starting initialization of OpenSAML...");
+ MOADefaultBootstrap.bootstrap();
+ //DefaultBootstrap.bootstrap();
+ Logger.debug("OpenSAML successfully initialized");
+
+
+ //read eGovUtils client configuration
+ Properties eGovUtilsConfigProp = new Properties();
+ for (Object key : props.keySet()) {
+ String propPrefix = "service.";
+ if (key.toString().startsWith(propPrefix+"egovutil")) {
+ String propertyName = key.toString().substring(propPrefix.length());
+ eGovUtilsConfigProp.put(propertyName, props.get(key.toString()));
+ }
+ }
+ if (!eGovUtilsConfigProp.isEmpty()) {
+ Logger.info("Start eGovUtils client implementation configuration ...");
+ eGovUtilsConfig =
+ new EgovUtilPropertiesConfiguration(eGovUtilsConfigProp, rootConfigFileDir);
+ }
+
+ }
+
+
+ /**
+ * @return the eGovUtilsConfig
+ */
+ public EgovUtilPropertiesConfiguration geteGovUtilsConfig() {
+ return eGovUtilsConfig;
+ }
+
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationUtils.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationUtils.java
index 1a2136ebd..d36a4318a 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationUtils.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationUtils.java
@@ -27,29 +27,23 @@ import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.Base64Utils;
public class ConfigurationUtils {
- public static List<String> getTransformInfos(List<TransformsInfoType> transformations) {
+ public static List<String> getTransformInfos(String transform) {
List<String> list = new ArrayList<String>();
-
- for (TransformsInfoType e1 : transformations) {
-
- try {
- String transform = new String(e1.getTransformation(), "UTF-8");
- String encoded = new String(Base64Utils.decode(transform, false), "UTF-8");
- list.add(encoded);
-
- } catch (UnsupportedEncodingException e) {
- Logger.warn("Transformation can not be loaded. An encoding error ocurs", e);
-
- } catch (IOException e) {
- Logger.warn("Transformation can not be loaded from database.", e);
- }
- }
+ try {
+ String encoded = new String(Base64Utils.decode(transform, false), "UTF-8");
+ list.add(encoded);
+
+ } catch (UnsupportedEncodingException e) {
+ Logger.warn("Transformation can not be loaded. An encoding error ocurs", e);
+
+ } catch (IOException e) {
+ Logger.warn("Transformation can not be loaded from database.", e);
+ }
return list;
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameter.java
index ccf2c5a57..e38a4f360 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameter.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameter.java
@@ -24,7 +24,7 @@ package at.gv.egovernment.moa.id.config;
import java.util.Properties;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
+import at.gv.egovernment.moa.util.MiscUtil;
public abstract class ConnectionParameter implements ConnectionParameterInterface{
@@ -32,12 +32,12 @@ public abstract class ConnectionParameter implements ConnectionParameterInterfac
protected static final String PROP_IDENTIFIER_KEYSTOREPASSWORD = "clientKeyStorePassword";
protected static final String PROP_IDENTIFIER_ACCEPEDSERVERCERTS = "acceptedServerCertificates";
- protected ConnectionParameterClientAuthType database;
+ protected String url;
protected Properties prop;
protected String basedirectory;
- public ConnectionParameter(ConnectionParameterClientAuthType database, Properties prop, String basedirectory) {
- this.database = database;
+ public ConnectionParameter(String url, Properties prop, String basedirectory) {
+ this.url = url;
this.prop = prop;
this.basedirectory = basedirectory;
}
@@ -62,16 +62,16 @@ public abstract class ConnectionParameter implements ConnectionParameterInterfac
public boolean isHTTPSURL() {
- if (database==null)
+ if (MiscUtil.isEmpty(url))
return false;
else
- return database.getURL().indexOf("https") == 0;
+ return url.indexOf("https") == 0;
}
public String getUrl() {
- if (database == null)
+ if (MiscUtil.isEmpty(url))
return null;
else
- return database.getURL();
+ return url;
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterForeign.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterForeign.java
index a0b787ec5..27d72f515 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterForeign.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterForeign.java
@@ -24,16 +24,15 @@ package at.gv.egovernment.moa.id.config;
import java.util.Properties;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
import at.gv.egovernment.moa.util.MiscUtil;
public class ConnectionParameterForeign extends ConnectionParameter{
private static final String MOASP_PROP_IDENTIFIER_PREFIX = "service.foreignidentities.";
- public ConnectionParameterForeign(ConnectionParameterClientAuthType database,
+ public ConnectionParameterForeign(String url,
Properties prop, String basedirectory) {
- super(database, prop, basedirectory);
+ super(url, prop, basedirectory);
}
public String getAcceptedServerCertificates() {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMOASP.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMOASP.java
index 3ba1ec6c3..a96b8a8ab 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMOASP.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMOASP.java
@@ -24,16 +24,15 @@ package at.gv.egovernment.moa.id.config;
import java.util.Properties;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
import at.gv.egovernment.moa.util.MiscUtil;
public class ConnectionParameterMOASP extends ConnectionParameter{
private static final String MOASP_PROP_IDENTIFIER_PREFIX = "service.moasp.";
- public ConnectionParameterMOASP(ConnectionParameterClientAuthType database,
+ public ConnectionParameterMOASP(String url,
Properties prop, String basedirectory) {
- super(database, prop, basedirectory);
+ super(url, prop, basedirectory);
}
public String getAcceptedServerCertificates() {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMandate.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMandate.java
index f6ca392d1..c25d6826a 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMandate.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConnectionParameterMandate.java
@@ -24,16 +24,15 @@ package at.gv.egovernment.moa.id.config;
import java.util.Properties;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
import at.gv.egovernment.moa.util.MiscUtil;
public class ConnectionParameterMandate extends ConnectionParameter{
private static final String MOASP_PROP_IDENTIFIER_PREFIX = "service.onlinemandates.";
- public ConnectionParameterMandate(ConnectionParameterClientAuthType database,
+ public ConnectionParameterMandate(String url,
Properties prop, String basedirectory) {
- super(database, prop, basedirectory);
+ super(url, prop, basedirectory);
}
public String getAcceptedServerCertificates() {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/OAParameter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/OAParameter.java
deleted file mode 100644
index a2e8bab9b..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/OAParameter.java
+++ /dev/null
@@ -1,172 +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.
- ******************************************************************************/
-/*
- * Copyright 2003 Federal Chancellery Austria MOA-ID has been developed in a cooperation between
- * BRZ, the Federal Chancellery Austria - ICT staff unit, and Graz University of Technology.
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by the European
- * Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in
- * compliance with the Licence. You may obtain a copy of the Licence at: http://www.osor.eu/eupl/
- * Unless required by applicable law or agreed to in writing, software distributed under the Licence
- * is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the Licence for the specific language governing permissions and limitations under
- * the Licence. This product combines work with different licenses. See the "NOTICE" text file for
- * details on the various modules and licenses. The "NOTICE" text file is part of the distribution.
- * Any derivative works that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-package at.gv.egovernment.moa.id.config;
-
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAOAUTH20;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-
-/**
- * Configuration parameters belonging to an online application, to be used within both, the MOA ID
- * Auth and the MOA ID PROXY component.
- *
- * @author Harald Bratko
- */
-public class OAParameter {
-
- public OAParameter() { }
-
- public OAParameter(OnlineApplication oa) {
-
- this.oaType = oa.getType();
-
- if (this.oaType.equals("businessService"))
- this.businessService = true;
- else
- this.businessService = false;
-
- this.publicURLPrefix = oa.getPublicURLPrefix();
-
- this.friendlyName = oa.getFriendlyName();
-
- this.target = oa.getTarget();
-
- this.targetFriendlyName = oa.getTargetFriendlyName();
-
- this.removePBKFromAuthblock = oa.isRemoveBPKFromAuthBlock();
-
- this.oAuth20Config = oa.getAuthComponentOA().getOAOAUTH20();
-
- this.isInderfederationIDP = oa.isIsInterfederationIDP();
-
- this.isSTORKPVPGateway = oa.isIsInterfederationGateway();
-
- }
-
- /**
- * type of the online application (maybe "PublicService" or "BusinessService")
- */
- private String oaType;
-
- /**
- * specifies whether the online application is a business application or not (<code>true</code>
- * if value of {@link #oaType} is "businessService"
- */
- protected boolean businessService;
-
-
- /**
- * public URL prefix of the online application
- */
- protected String publicURLPrefix;
-
- /**
- * specifies a human readable name of the Online Application
- */
- protected String friendlyName;
-
- /**
- * specified a specific target for the Online Application (overwrites the target in der request)
- */
- protected String target;
- /**
- * specifies a friendly name for the target
- */
- protected String targetFriendlyName;
-
- protected boolean removePBKFromAuthblock;
-
- protected Boolean isInderfederationIDP;
-
- protected Boolean isSTORKPVPGateway;
-
- /**
- * Contains the oAuth 2.0 configuration (client id, secret and redirect uri)
- */
- private OAOAUTH20 oAuth20Config;
-
- public String getOaType() {
- return oaType;
- }
-
- public boolean getBusinessService() {
- return businessService;
- }
-
- public String getPublicURLPrefix() {
- return publicURLPrefix;
- }
-
- public String getFriendlyName() {
- return friendlyName;
- }
-
- public String getTarget() {
- return target;
- }
-
- public String getTargetFriendlyName() {
- return targetFriendlyName;
- }
-
- public boolean isRemovePBKFromAuthBlock() {
- return removePBKFromAuthblock;
- }
-
- public OAOAUTH20 getoAuth20Config() {
- return oAuth20Config;
- }
-
- /**
- * @return the isInderfederationIDP
- */
- public boolean isInderfederationIDP() {
- if (isInderfederationIDP == null)
- return false;
-
- return isInderfederationIDP;
- }
-
- public boolean isSTORKPVPGateway() {
- if (isSTORKPVPGateway == null)
- return false;
-
- return isSTORKPVPGateway;
- }
-
-
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigLoader.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigLoader.java
index 828bf99ca..1f43a0d8a 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigLoader.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigLoader.java
@@ -22,54 +22,28 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.config.auth;
-import java.util.Date;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
import at.gv.egovernment.moa.id.protocols.pvp2x.metadata.MOAMetadataProvider;
import at.gv.egovernment.moa.logging.Logger;
public class AuthConfigLoader implements Runnable {
- private static final long INTERVAL = 60; // 60 sec
+ private static final long INTERVAL = 24 * 60 * 60; // 24 hours
public void run() {
while (true) {
try {
- Thread.sleep(INTERVAL * 1000);
-
- Logger.trace("check for new config.");
- MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
-
- if (moaidconfig != null) {
- Date dbdate = moaidconfig.getTimestampItem();
- Date pvprefresh = moaidconfig.getPvp2RefreshItem();
-
- Date date = AuthConfigurationProvider.getTimeStamp();
-
- if (dbdate != null && dbdate.after(date)) {
- AuthConfigurationProvider instance = AuthConfigurationProvider.getInstance();
- instance.reloadDataBaseConfig();
- }
-
- Date pvpdate = MOAMetadataProvider.getTimeStamp();
- if (pvprefresh != null && pvpdate != null && pvprefresh.after(pvpdate)) {
- MOAMetadataProvider.reInitialize();
- }
+ Thread.sleep(INTERVAL * 1000);
+ Logger.trace("Check consistence of PVP2X metadata");
+ MOAMetadataProvider.reInitialize();
- } else {
- Logger.warn("MOA-ID Configuration is actually not found. Reuse old configuration.");
-
- }
-
-
+
} catch (Throwable e) {
- Logger.warn("MOA-ID Configuration is actually not loadable. Reuse old configuration.", e);
+ Logger.warn("MOA-ID Configuration validation is not possible, actually. Reuse old configuration.", e);
} finally {
- ConfigurationDBUtils.closeSession();
+
}
}
@@ -77,8 +51,8 @@ public class AuthConfigLoader implements Runnable {
public static void start() {
// start the session cleanup thread
- Thread configLoader = new Thread(new AuthConfigLoader(), "AuthConfigLoader");
- configLoader.setName("ConfigurationLoader");
+ Thread configLoader = new Thread(new AuthConfigLoader(), "ConfigurationChecker");
+ configLoader.setName("ConfigurationChecker");
configLoader.setDaemon(true);
configLoader.setPriority(Thread.MIN_PRIORITY);
configLoader.start();
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfiguration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfiguration.java
new file mode 100644
index 000000000..c98a7d537
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfiguration.java
@@ -0,0 +1,149 @@
+package at.gv.egovernment.moa.id.config.auth;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.ConfigurationProvider;
+import at.gv.egovernment.moa.id.config.ConnectionParameter;
+import at.gv.egovernment.moa.id.config.auth.data.ProtocolAllowed;
+import at.gv.egovernment.moa.id.config.stork.STORKConfig;
+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);
+
+ public int getTransactionTimeOut();
+ public int getSSOCreatedTimeOut();
+ public int getSSOUpdatedTimeOut();
+
+ public String getAlternativeSourceID() throws ConfigurationException;
+
+ public List<String> getLegacyAllowedProtocols();
+
+ public OAAuthParameter getOnlineApplicationParameter(String oaURL);
+
+ public String getMoaSpAuthBlockTrustProfileID(boolean useTestTrustStore) throws ConfigurationException;
+
+ public List<String> getMoaSpAuthBlockVerifyTransformsInfoIDs() throws ConfigurationException;
+
+ public ConnectionParameter getMoaSpConnectionParameter() throws ConfigurationException;
+
+ public ConnectionParameter getForeignIDConnectionParameter() throws ConfigurationException;
+
+ public ConnectionParameter 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();
+
+ public String getPublicURLPrefix();
+
+ public boolean isPVP2AssertionEncryptionActive();
+
+ public boolean isCertifiacteQCActive();
+
+ public STORKConfig 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/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java
index 6a2f2db44..c25751aa4 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java
@@ -1,1174 +1,1221 @@
-/*******************************************************************************
- * Copyright 2014 Federal Chancellery Austria
- * MOA-ID has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- ******************************************************************************/
-/*
- * Copyright 2003 Federal Chancellery Austria
- * MOA-ID has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
-package at.gv.egovernment.moa.id.config.auth;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Unmarshaller;
-
-import org.hibernate.cfg.Configuration;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
-import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModes;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
-import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentityLinkSigners;
-import at.gv.egovernment.moa.id.commons.db.dao.config.LegacyAllowed;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOASP;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineMandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Organization;
-import at.gv.egovernment.moa.id.commons.db.dao.config.PVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Protocols;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SLRequestTemplates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SecurityLayer;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TimeOuts;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TrustAnchor;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;
-import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore;
-import at.gv.egovernment.moa.id.commons.db.dao.session.AuthenticatedSessionStore;
-import at.gv.egovernment.moa.id.commons.db.dao.session.ExceptionStore;
-import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
-import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
-import at.gv.egovernment.moa.id.commons.db.dao.session.OldSSOSessionIDStore;
-import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.ConfigurationUtils;
-import at.gv.egovernment.moa.id.config.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.ConnectionParameterForeign;
-import at.gv.egovernment.moa.id.config.ConnectionParameterMOASP;
-import at.gv.egovernment.moa.id.config.ConnectionParameterMandate;
-import at.gv.egovernment.moa.id.config.auth.data.ProtocolAllowed;
-import at.gv.egovernment.moa.id.config.legacy.BuildFromLegacyConfig;
-import at.gv.egovernment.moa.id.config.stork.STORKConfig;
-import at.gv.egovernment.moa.id.data.IssuerAndSerial;
-import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore;
-import at.gv.egovernment.moa.id.protocols.pvp2x.config.MOADefaultBootstrap;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.MiscUtil;
-import at.gv.util.config.EgovUtilPropertiesConfiguration;
-
-/**
- * A class providing access to the Auth Part of the MOA-ID configuration data.
- *
- * <p>Configuration data is read from an XML file, whose location is given by
- * the <code>moa.id.configuration</code> system property.</p>
- * <p>This class implements the Singleton pattern. The <code>reload()</code>
- * method can be used to update the configuration data. Therefore, it is not
- * guaranteed that consecutive calls to <code>getInstance()</code> will return
- * the same <code>AuthConfigurationProvider</code> all the time. During the
- * processing of a web service request, the current
- * <code>TransactionContext</code> should be used to obtain the
- * <code>AuthConfigurationProvider</code> local to that request.</p>
- *
- * @author Patrick Peck
- * @author Stefan Knirsch
- *
- * @version $Id$
- */
-public class AuthConfigurationProvider extends ConfigurationProvider {
-
-// /** DEFAULT_ENCODING is "UTF-8" */
-// private static final String DEFAULT_ENCODING="UTF-8";
- /**
- * The name of the generic configuration property giving the authentication session time out.
- */
- public static final String AUTH_SESSION_TIMEOUT_PROPERTY =
- "AuthenticationSession.TimeOut";
- /**
- * The name of the generic configuration property giving the authentication data time out.
- */
- public static final String AUTH_DATA_TIMEOUT_PROPERTY =
- "AuthenticationData.TimeOut";
-
- /**
- * BKUSelectionType HTMLComplete, according to schema type <code>BKUSelectionType</code>
- */
- public static final String BKU_SELECTION_TYPE_HTMLCOMPLETE =
- "HTMLComplete";
-
- /**
- * BKUSelectionType HTMLSelect, according to schema type <code>BKUSelectionType</code>
- */
- public static final String BKU_SELECTION_TYPE_HTMLSELECT =
- "HTMLSelect";
-
- /**
- * The name of the generic configuration property allowing https connection to
- * the user frontend servlets ("StartAuthentication" and "SelectBKU" servlets)
- */
- public static final String FRONTEND_SERVLETS_ENABLE_HTTP_CONNECTION_PROPERTY =
- "FrontendServlets.EnableHTTPConnection";
-
- /**
- * The name of the generic configuration property allowing to set a individual
- * DATA URL used to communicate with the BKU (SecurityLayer)
- */
- public static final String INDIVIDUAL_DATA_URL_PREFIX =
- "FrontendServlets.DataURLPrefix";
-
- /** Singleton instance. <code>null</code>, if none has been created. */
- private static AuthConfigurationProvider instance;
-
- //
- // configuration data
- //
- private static MOAIDConfiguration moaidconfig = null;
-
- private static Properties props = null;
-
- private static STORKConfig storkconfig = null;
-
- private static TimeOuts timeouts = null;
-
- private static PVP2 pvp2general = null;
-
- private static String alternativesourceid = null;
-
- private static List<String> legacyallowedprotocols = new ArrayList<String>();
- private static ProtocolAllowed allowedProtcols = null;
-
- private static VerifyAuthBlock verifyidl = null;
-
- private static ConnectionParameter MoaSpConnectionParameter = null;
- private static ConnectionParameter ForeignIDConnectionParameter = null;
- private static ConnectionParameter OnlineMandatesConnectionParameter = null;
-
- private static String MoaSpIdentityLinkTrustProfileID = null;
-
- private static List<String> TransformsInfos = null;
- private static List<String> IdentityLinkX509SubjectNames = new ArrayList<String>();
-
- private static Map<String, String> SLRequestTemplates = new HashMap<String, String>();
- private static Map<String, String> DefaultBKUURLs = new HashMap<String, String>();
-
- private static SSO ssoconfig = null;
-
- private EgovUtilPropertiesConfiguration eGovUtilsConfig = null;
-
- private static Date date = null;
-
- private String publicURLPreFix = null;
-
- /**
- * Return the single instance of configuration data.
- *
- * @return AuthConfigurationProvider The current configuration data.
- * @throws ConfigurationException
- */
- public static synchronized AuthConfigurationProvider getInstance()
- throws ConfigurationException {
-
- if (instance == null) {
- reload();
- }
- return instance;
- }
-
- public static Date getTimeStamp() {
- return date;
- }
-
- /**
- * Reload the configuration data and set it if successful.
- *
- * @return AuthConfigurationProvider The loaded configuration data.
- * @throws ConfigurationException Failure to load the configuration data.
- */
- public static synchronized AuthConfigurationProvider reload()
- throws ConfigurationException {
- String fileName = System.getProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME);
- if (fileName == null) {
- throw new ConfigurationException("config.01", null);
- }
- Logger.info("Loading MOA-ID-AUTH configuration " + fileName);
-
- instance = new AuthConfigurationProvider(fileName);
- return instance;
- }
-
-
- /**
- * Constructor for AuthConfigurationProvider.
- * @param fileName
- * @throws ConfigurationException
- */
- public AuthConfigurationProvider(String fileName)
- throws ConfigurationException {
-
- load(fileName);
- }
-
- /**
- * Load the configuration data from XML file with the given name and build
- * the internal data structures representing the MOA ID configuration.
- *
- * @param fileName The name of the XML file to load.
- * @throws ConfigurationException The MOA configuration could not be
- * read/built.
- */
- private void load(String fileName) throws ConfigurationException {
-
- try {
- //Initial Hibernate Framework
- Logger.trace("Initializing Hibernate framework.");
-
- //Load MOAID-2.0 properties file
- File propertiesFile = new File(fileName);
- FileInputStream fis = null;
- props = new Properties();
-
- // determine the directory of the root config file
- rootConfigFileDir = new File(fileName).getParent();
-
- try {
- rootConfigFileDir = new File(rootConfigFileDir).toURL().toString();
-
- } catch (MalformedURLException t) {
- throw new ConfigurationException("config.03", null, t);
- }
-
- try {
- fis = new FileInputStream(propertiesFile);
- props.load(fis);
-
- // read MOAID Session Hibernate properties
- Properties moaSessionProp = new Properties();
- for (Object key : props.keySet()) {
- String propPrefix = "moasession.";
- if (key.toString().startsWith(propPrefix+"hibernate")) {
- String propertyName = key.toString().substring(propPrefix.length());
- moaSessionProp.put(propertyName, props.get(key.toString()));
- }
- }
-
- // read Config Hibernate properties
- Properties configProp = new Properties();
- for (Object key : props.keySet()) {
- String propPrefix = "configuration.";
- if (key.toString().startsWith(propPrefix+"hibernate")) {
- String propertyName = key.toString().substring(propPrefix.length());
- configProp.put(propertyName, props.get(key.toString()));
- }
- }
-
- // read advanced logging properties
- Properties statisticProps = new Properties();
- for (Object key : props.keySet()) {
- String propPrefix = "advancedlogging.";
- if (key.toString().startsWith(propPrefix+"hibernate")) {
- String propertyName = key.toString().substring(propPrefix.length());
- statisticProps.put(propertyName, props.get(key.toString()));
- }
- }
-
- // initialize hibernate
- synchronized (AuthConfigurationProvider.class) {
-
- //Initial config Database
- ConfigurationDBUtils.initHibernate(configProp);
-
- //initial MOAID Session Database
- Configuration config = new Configuration();
- config.addAnnotatedClass(AssertionStore.class);
- config.addAnnotatedClass(AuthenticatedSessionStore.class);
- config.addAnnotatedClass(OASessionStore.class);
- config.addAnnotatedClass(OldSSOSessionIDStore.class);
- config.addAnnotatedClass(ExceptionStore.class);
- config.addAnnotatedClass(InterfederationSessionStore.class);
- config.addAnnotatedClass(ProcessInstanceStore.class);
- config.addProperties(moaSessionProp);
- MOASessionDBUtils.initHibernate(config, moaSessionProp);
-
- //initial advanced logging
- if (isAdvancedLoggingActive()) {
- Logger.info("Advanced statistic log is activated, starting initialization process ...");
- Configuration statisticconfig = new Configuration();
- statisticconfig.addAnnotatedClass(StatisticLog.class);
- statisticconfig.addProperties(statisticProps);
- StatisticLogDBUtils.initHibernate(statisticconfig, statisticProps);
- Logger.info("Advanced statistic log is initialized.");
- }
-
- }
- Logger.trace("Hibernate initialization finished.");
-
- } catch (FileNotFoundException e) {
- throw new ConfigurationException("config.03", null, e);
-
- } catch (IOException e) {
- throw new ConfigurationException("config.03", null, e);
-
- } catch (ExceptionInInitializerError e) {
- throw new ConfigurationException("config.17", null, e);
-
- } finally {
- if (fis != null)
- fis.close();
-
- }
-
-
- //Initialize OpenSAML for STORK
- Logger.info("Starting initialization of OpenSAML...");
- MOADefaultBootstrap.bootstrap();
- //DefaultBootstrap.bootstrap();
- Logger.debug("OpenSAML successfully initialized");
-
-
- String legacyconfig = props.getProperty("configuration.xml.legacy");
- String xmlconfig = props.getProperty("configuration.xml");
-// String xmlconfigout = props.getProperty("configuration.xml.out");
-
-
- //configure eGovUtils client implementations
-
- //read eGovUtils client configuration
- Properties eGovUtilsConfigProp = new Properties();
- for (Object key : props.keySet()) {
- String propPrefix = "service.";
- if (key.toString().startsWith(propPrefix+"egovutil")) {
- String propertyName = key.toString().substring(propPrefix.length());
- eGovUtilsConfigProp.put(propertyName, props.get(key.toString()));
- }
- }
- if (!eGovUtilsConfigProp.isEmpty()) {
- Logger.info("Start eGovUtils client implementation configuration ...");
- eGovUtilsConfig =
- new EgovUtilPropertiesConfiguration(eGovUtilsConfigProp, rootConfigFileDir);
- }
-
-
- //check if XML config should be used
- if (MiscUtil.isNotEmpty(legacyconfig) || MiscUtil.isNotEmpty(xmlconfig)) {
- Logger.warn("WARNING! MOA-ID 2.0 is started with XML configuration. This setup overstrike the actual configuration in the Database!");
- moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
- if (moaidconfig != null)
- ConfigurationDBUtils.delete(moaidconfig);
-
- List<OnlineApplication> oas = ConfigurationDBRead.getAllOnlineApplications();
- if (oas != null && oas.size() > 0) {
- for (OnlineApplication oa : oas)
- ConfigurationDBUtils.delete(oa);
- }
- }
-
- //load legacy config if it is configured
- if (MiscUtil.isNotEmpty(legacyconfig)) {
- Logger.warn("WARNING! MOA-ID 2.0 is started with legacy configuration. This setup is not recommended!");
-
- MOAIDConfiguration moaconfig = BuildFromLegacyConfig.build(new File(legacyconfig), rootConfigFileDir, null);
-
- List<OnlineApplication> oas = moaconfig.getOnlineApplication();
- for (OnlineApplication oa : oas)
- ConfigurationDBUtils.save(oa);
-
- moaconfig.setOnlineApplication(null);
- ConfigurationDBUtils.save(moaconfig);
-
- Logger.info("Legacy Configuration load is completed.");
-
-
- }
-
- //load MOA-ID 2.x config from XML
- if (MiscUtil.isNotEmpty(xmlconfig)) {
- Logger.warn("Load configuration from MOA-ID 2.x XML configuration");
-
- try {
- JAXBContext jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config");
- Unmarshaller m = jc.createUnmarshaller();
- File file = new File(xmlconfig);
- MOAIDConfiguration moaconfig = (MOAIDConfiguration) m.unmarshal(file);
- //ConfigurationDBUtils.save(moaconfig);
-
- List<OnlineApplication> importoas = moaconfig.getOnlineApplication();
- for (OnlineApplication importoa : importoas) {
- ConfigurationDBUtils.saveOrUpdate(importoa);
- }
-
- moaconfig.setOnlineApplication(null);
- ConfigurationDBUtils.saveOrUpdate(moaconfig);
-
- } catch (Exception e) {
- Logger.warn("MOA-ID XML configuration can not be loaded from File.", e);
- throw new ConfigurationException("config.02", null);
- }
- Logger.info("XML Configuration load is completed.");
- }
-
- reloadDataBaseConfig();
-
-
- } catch (Throwable t) {
- throw new ConfigurationException("config.02", null, t);
- }
- }
-
- public synchronized void reloadDataBaseConfig() throws ConfigurationException {
-
- Logger.info("Read MOA-ID 2.0 configuration from database.");
- moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
- Logger.info("MOA-ID 2.0 is loaded.");
-
- if (moaidconfig == null) {
- Logger.warn("NO MOA-ID configuration found.");
- throw new ConfigurationException("config.18", null);
- }
-
- //build STORK Config
- AuthComponentGeneral auth = getAuthComponentGeneral();
- ForeignIdentities foreign = auth.getForeignIdentities();
- if (foreign == null ) {
- Logger.warn("Error in MOA-ID Configuration. No STORK configuration found.");
- } else
- storkconfig = new STORKConfig(foreign.getSTORK(), props, rootConfigFileDir);
-
- //load Chaining modes
- ChainingModes cm = moaidconfig.getChainingModes();
- if (cm != null) {
- defaultChainingMode = cm.getSystemDefaultMode().value();
-
- List<TrustAnchor> tas = cm.getTrustAnchor();
-
- chainingModes = new HashMap<IssuerAndSerial, String>();
- for (TrustAnchor ta : tas) {
- IssuerAndSerial is = new IssuerAndSerial(ta.getX509IssuerName(), ta.getX509SerialNumber());
- chainingModes.put(is, ta.getMode().value());
- }
- } else {
- Logger.warn("Error in MOA-ID Configuration. No ChainingMode configuration found.");
- throw new ConfigurationException("config.02", null);
- }
-
- //set Trusted CA certs directory
- trustedCACertificates = rootConfigFileDir + moaidconfig.getTrustedCACertificates();
-
- //set CertStoreDirectory
- setCertStoreDirectory();
-
- //set TrustManagerRevocationChecking
- setTrustManagerRevocationChecking();
-
- //set default timeouts
- timeouts = new TimeOuts();
- timeouts.setAssertion(new BigInteger("300"));
- timeouts.setMOASessionCreated(new BigInteger("2700"));
- timeouts.setMOASessionUpdated(new BigInteger("1200"));
-
- //search timeouts in config
- if (auth.getGeneralConfiguration() != null) {
- if (auth.getGeneralConfiguration().getTimeOuts() != null) {
- if (auth.getGeneralConfiguration().getTimeOuts().getAssertion() != null)
- timeouts.setAssertion(auth.getGeneralConfiguration().getTimeOuts().getAssertion());
-
- if (auth.getGeneralConfiguration().getTimeOuts().getMOASessionCreated() != null)
- timeouts.setMOASessionCreated(auth.getGeneralConfiguration().getTimeOuts().getMOASessionCreated());
-
- if (auth.getGeneralConfiguration().getTimeOuts().getMOASessionUpdated() != null)
- timeouts.setMOASessionUpdated(auth.getGeneralConfiguration().getTimeOuts().getMOASessionUpdated());
-
- } else {
- Logger.info("No TimeOuts defined. Use default values");
- }
- }
-
- // sets the authentication session and authentication data time outs
- AuthenticationServer.getInstance()
- .setSecondsSessionTimeOutCreated(timeouts.getMOASessionCreated().longValue());
-
- AuthenticationServer.getInstance()
- .setSecondsSessionTimeOutUpdated(timeouts.getMOASessionUpdated().longValue());
-
- AuthenticationServer.getInstance()
- .setSecondsAuthDataTimeOut(timeouts.getAssertion().longValue());
-
-
-
- //set PVP2 general config
- Protocols protocols = auth.getProtocols();
- if (protocols != null) {
-
- allowedProtcols = new ProtocolAllowed();
-
- if (protocols.getSAML1() != null) {
- allowedProtcols.setSAML1Active(protocols.getSAML1().isIsActive());
-
- //load alternative sourceID
- if (MiscUtil.isNotEmpty(protocols.getSAML1().getSourceID()))
- alternativesourceid = protocols.getSAML1().getSourceID();
-
- }
-
- if (protocols.getOAuth() != null) {
- allowedProtcols.setOAUTHActive(protocols.getOAuth().isIsActive());
- }
-
- if (protocols.getPVP2() != null) {
- PVP2 el = protocols.getPVP2();
-
- allowedProtcols.setPVP21Active(el.isIsActive());
-
- pvp2general = new PVP2();
- pvp2general.setIssuerName(el.getIssuerName());
- pvp2general.setPublicURLPrefix(el.getPublicURLPrefix());
-
- if (el.getOrganization() != null) {
- Organization org = new Organization();
- pvp2general.setOrganization(org);
- org.setDisplayName(el.getOrganization().getDisplayName());
- org.setName(el.getOrganization().getName());
- org.setURL(el.getOrganization().getURL());
- }
-
- if (el.getContact() != null) {
- List<Contact> cont = new ArrayList<Contact>();
- pvp2general.setContact(cont);
- for (Contact e : el.getContact()) {
- Contact c = new Contact();
- c.setCompany(e.getCompany());
- c.setGivenName(e.getGivenName());
- c.getMail().addAll(e.getMail());
- c.getPhone().addAll(e.getPhone());
- c.setSurName(e.getSurName());
- c.setType(e.getType());
- cont.add(c);
- }
- }
- }
- } else {
- Logger.warn("Error in MOA-ID Configuration. No general Protcol configuration found.");
- }
-
- //set alternativeSourceID
- if (auth.getGeneralConfiguration() != null) {
-
- //TODO: can be removed in a further version, because it is moved to SAML1 config
- if (MiscUtil.isEmpty(alternativesourceid))
- alternativesourceid = auth.getGeneralConfiguration().getAlternativeSourceID();
-
- if (MiscUtil.isNotEmpty(auth.getGeneralConfiguration().getPublicURLPreFix()))
- publicURLPreFix = auth.getGeneralConfiguration().getPublicURLPreFix();
-
- else {
- Logger.error("No Public URL Prefix configured.");
- throw new ConfigurationException("config.05", new Object[]{"Public URL Prefix"});
- }
-
- } else {
- Logger.warn("Error in MOA-ID Configuration. No GeneralConfig defined.");
- throw new ConfigurationException("config.02", null);
- }
-
- //set LegacyAllowedProtocols
- try {
- if (auth.getProtocols() != null) {
- Protocols procols = auth.getProtocols();
- if (procols.getLegacyAllowed() != null) {
- LegacyAllowed legacy = procols.getLegacyAllowed();
- legacyallowedprotocols = new ArrayList<String>(legacy.getProtocolName());
- }
- }
- } catch (Exception e) {
- Logger.info("No protocols found with legacy allowed flag!");
- }
-
- //set VerifyAuthBlockConfig
- MOASP moasp = getMOASPConfig(auth);
-
- VerifyAuthBlock el = moasp.getVerifyAuthBlock();
- if (el != null) {
- verifyidl = new VerifyAuthBlock();
- verifyidl.setTrustProfileID(el.getTrustProfileID());
- verifyidl.setVerifyTransformsInfoProfileID(new ArrayList<String>(el.getVerifyTransformsInfoProfileID()));
- }
- else {
- Logger.warn("Error in MOA-ID Configuration. No Trustprofile for AuthBlock validation.");
- throw new ConfigurationException("config.02", null);
- }
-
- //set MOASP connection parameters
- if (moasp.getConnectionParameter() != null)
- MoaSpConnectionParameter = new ConnectionParameterMOASP(moasp.getConnectionParameter(), props, this.rootConfigFileDir);
- else
- MoaSpConnectionParameter = null;
-
- //set ForeignIDConnectionParameters
- if (foreign != null) {
- ForeignIDConnectionParameter = new ConnectionParameterForeign(foreign.getConnectionParameter(), props, this.rootConfigFileDir);
- } else {
- Logger.warn("Error in MOA-ID Configuration. No Connectionconfiguration to SZRGW Service found");
- }
-
- //set OnlineMandateConnectionParameters
- OnlineMandates ovs = auth.getOnlineMandates();
- if (ovs != null) {
- OnlineMandatesConnectionParameter = new ConnectionParameterMandate(ovs.getConnectionParameter(), props, this.rootConfigFileDir);
-
- } else {
- Logger.warn("Error in MOA-ID Configuration. No Connectionconfiguration to OVS Service found");
- }
-
- //set MOASP IdentityLink Trust-ProfileID
- VerifyIdentityLink verifyidl = moasp.getVerifyIdentityLink();
- if (verifyidl != null)
- MoaSpIdentityLinkTrustProfileID = verifyidl.getTrustProfileID();
- else {
- Logger.warn("Error in MOA-ID Configuration. No Trustprofile for IdentityLink validation.");
- throw new ConfigurationException("config.02", null);
- }
-
- //set SL transformation infos
- SecurityLayer seclayer = auth.getSecurityLayer();
- if (seclayer == null) {
- Logger.warn("Error in MOA-ID Configuration. No generalAuthConfiguration->SecurityLayer found");
- throw new ConfigurationException("config.02", null);
- } else {
- TransformsInfos = ConfigurationUtils.getTransformInfos(seclayer.getTransformsInfo());
-
- if (TransformsInfos == null || TransformsInfos.size() == 0) {
- Logger.error("No Security-Layer Transformation found.");
- throw new ConfigurationException("config.05", new Object[]{"Security-Layer Transformation"});
- }
-
- }
-
- //set IdentityLinkSignerSubjectNames
- IdentityLinkX509SubjectNames = new ArrayList<String>();
- IdentityLinkSigners idlsigners = auth.getIdentityLinkSigners();
- if (idlsigners != null) {
- Logger.debug("Load own IdentityLinkX509SubjectNames");
- IdentityLinkX509SubjectNames.addAll(new ArrayList<String>(idlsigners.getX509SubjectName()));
- }
-
- // now add the default identity link signers
- String[] identityLinkSignersWithoutOID = MOAIDAuthConstants.IDENTITY_LINK_SIGNERS_WITHOUT_OID;
- for (int i=0; i<identityLinkSignersWithoutOID.length; i++) {
- String identityLinkSigner = identityLinkSignersWithoutOID[i];
- if (!IdentityLinkX509SubjectNames.contains(identityLinkSigner)) {
- IdentityLinkX509SubjectNames.add(identityLinkSigner);
- }
- }
-
- //set SLRequestTemplates
- SLRequestTemplates templ = moaidconfig.getSLRequestTemplates();
- if (templ == null) {
- Logger.warn("Error in MOA-ID Configuration. No SLRequestTemplates found");
- throw new ConfigurationException("config.02", null);
- } else {
- SLRequestTemplates.put(IOAAuthParameters.ONLINEBKU, templ.getOnlineBKU());
- SLRequestTemplates.put(IOAAuthParameters.LOCALBKU, templ.getLocalBKU());
- SLRequestTemplates.put(IOAAuthParameters.HANDYBKU, templ.getHandyBKU());
- }
-
- //set Default BKU URLS
- DefaultBKUs bkuuls = moaidconfig.getDefaultBKUs();
- if (bkuuls != null) {
- DefaultBKUURLs.put(IOAAuthParameters.ONLINEBKU, bkuuls.getOnlineBKU());
- DefaultBKUURLs.put(IOAAuthParameters.LOCALBKU, bkuuls.getLocalBKU());
- DefaultBKUURLs.put(IOAAuthParameters.HANDYBKU, bkuuls.getHandyBKU());
- }
-
- //set SSO Config
- if (auth.getSSO()!= null) {
- ssoconfig = new SSO();
- ssoconfig.setFriendlyName(auth.getSSO().getFriendlyName());
- ssoconfig.setPublicURL(auth.getSSO().getPublicURL());
- ssoconfig.setSpecialText(auth.getSSO().getSpecialText());
- ssoconfig.setTarget(auth.getSSO().getTarget());
-
- if (auth.getSSO().getIdentificationNumber() != null) {
- IdentificationNumber value = new IdentificationNumber();
- value.setType(auth.getSSO().getIdentificationNumber().getType());
- value.setValue(auth.getSSO().getIdentificationNumber().getValue());
- ssoconfig.setIdentificationNumber(value);
- }
- } else {
- Logger.warn("Error in MOA-ID Configuration. No Single Sign-On Config found");
- }
-
- //close Database
- ConfigurationDBUtils.closeSession();
-
- date = new Date();
- }
-
-
- private Properties getGeneralProperiesConfig(final String propPrefix) {
- Properties configProp = new Properties();
- for (Object key : props.keySet()) {
- if (key.toString().startsWith(propPrefix)) {
- String propertyName = key.toString().substring(propPrefix.length());
- configProp.put(propertyName, props.get(key.toString()));
- }
- }
- return configProp;
- }
-
- public Properties getGeneralPVP2ProperiesConfig() {
- return this.getGeneralProperiesConfig("protocols.pvp2.");
- }
-
- public Properties getGeneralOAuth20ProperiesConfig() {
- return this.getGeneralProperiesConfig("protocols.oauth20.");
- }
-
- public ProtocolAllowed getAllowedProtocols() {
- return allowedProtcols;
- }
-
- public PVP2 getGeneralPVP2DBConfig() {
- return pvp2general;
- }
-
- public TimeOuts getTimeOuts() throws ConfigurationException {
- return timeouts;
- }
-
- public String getAlternativeSourceID() throws ConfigurationException {
- return alternativesourceid;
- }
-
- public List<String> getLegacyAllowedProtocols() {
- return legacyallowedprotocols;
- }
-
-
- /**
- * Provides configuration information regarding the online application behind
- * the given URL, relevant to the MOA-ID Auth component.
- *
- * @param oaURL URL requested for an online application
- * @return an <code>OAAuthParameter</code>, or <code>null</code>
- * if none is applicable
- */
- public OAAuthParameter getOnlineApplicationParameter(String oaURL) {
-
- OnlineApplication oa = ConfigurationDBRead.getActiveOnlineApplication(oaURL);
-
- if (oa == null) {
- Logger.warn("Online application with identifier " + oaURL + " is not found.");
- return null;
- }
-
- return new OAAuthParameter(oa);
- }
-
-
- /**
- * Return a string with a url-reference to the VerifyAuthBlock trust
- * profile id within the moa-sp part of the authentication component
- *
- * @return String with a url-reference to the VerifyAuthBlock trust profile ID
- * @throws ConfigurationException
- */
- public String getMoaSpAuthBlockTrustProfileID() throws ConfigurationException {
- return verifyidl.getTrustProfileID();
- }
-
- /**
- * Return a string array with references to all verify transform info
- * IDs within the moa-sp part of the authentication component
- * @return A string array containing all urls to the
- * verify transform info IDs
- * @throws ConfigurationException
- */
- public List<String> getMoaSpAuthBlockVerifyTransformsInfoIDs() throws ConfigurationException {
- return verifyidl.getVerifyTransformsInfoProfileID();
- }
-
- /**
- * Return a ConnectionParameter bean containing all information
- * of the authentication component moa-sp element
- * @return ConnectionParameter of the authentication component moa-sp element
- * @throws ConfigurationException
- */
- public ConnectionParameter getMoaSpConnectionParameter() throws ConfigurationException {
- return MoaSpConnectionParameter;
- }
-
- /**
- * Return a ConnectionParameter bean containing all information
- * of the authentication component foreigid element
- * @return ConnectionParameter of the authentication component foreignid element
- * @throws ConfigurationException
- */
- public ConnectionParameter getForeignIDConnectionParameter() throws ConfigurationException {
- return ForeignIDConnectionParameter;
- }
-
- /**
- * Return a ConnectionParameter bean containing all information
- * of the authentication component OnlineMandates element
- * @return ConnectionParameter of the authentication component OnlineMandates element
- * @throws ConfigurationException
- */
- public ConnectionParameter getOnlineMandatesConnectionParameter() throws ConfigurationException {
- return OnlineMandatesConnectionParameter;
- }
-
- /**
- * Return a string with a url-reference to the VerifyIdentityLink trust
- * profile id within the moa-sp part of the authentication component
- * @return String with a url-reference to the VerifyIdentityLink trust profile ID
- * @throws ConfigurationException
- */
- public String getMoaSpIdentityLinkTrustProfileID() throws ConfigurationException {
- return MoaSpIdentityLinkTrustProfileID;
- }
-
- /**
- * Returns the transformsInfos.
- * @return String[]
- * @throws ConfigurationException
- */
- public List<String> getTransformsInfos() throws ConfigurationException {
- return TransformsInfos;
- }
-
- /**
- * Returns the identityLinkX509SubjectNames.
- * @return List
- * @throws ConfigurationException
- */
- public List<String> getIdentityLinkX509SubjectNames() throws ConfigurationException {
- return IdentityLinkX509SubjectNames;
- }
-
- public List<String> getSLRequestTemplates() throws ConfigurationException {
- return new ArrayList<String>(SLRequestTemplates.values());
- }
-
- public String getSLRequestTemplates(String type) throws ConfigurationException {
- String el = SLRequestTemplates.get(type);
- if (MiscUtil.isNotEmpty(el))
- return el;
- else {
- Logger.warn("getSLRequestTemplates: BKU Type does not match: "
- + IOAAuthParameters.ONLINEBKU + " or " + IOAAuthParameters.HANDYBKU + " or " + IOAAuthParameters.LOCALBKU);
- return null;
- }
- }
-
- public List<String> getDefaultBKUURLs() throws ConfigurationException {
- return new ArrayList<String>(DefaultBKUURLs.values());
- }
-
- public String getDefaultBKUURL(String type) throws ConfigurationException {
- String el = DefaultBKUURLs.get(type);
- if (MiscUtil.isNotEmpty(el))
- return el;
- else {
- Logger.warn("getSLRequestTemplates: BKU Type does not match: "
- + IOAAuthParameters.ONLINEBKU + " or " + IOAAuthParameters.HANDYBKU + " or " + IOAAuthParameters.LOCALBKU);
- return null;
- }
- }
-
-// public boolean isSSOBusinessService() throws ConfigurationException {
+///*******************************************************************************
+// * Copyright 2014 Federal Chancellery Austria
+// * MOA-ID has been developed in a cooperation between BRZ, the Federal
+// * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+// *
+// * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+// * the European Commission - subsequent versions of the EUPL (the "Licence");
+// * You may not use this work except in compliance with the Licence.
+// * You may obtain a copy of the Licence at:
+// * http://www.osor.eu/eupl/
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the Licence is distributed on an "AS IS" basis,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the Licence for the specific language governing permissions and
+// * limitations under the Licence.
+// *
+// * This product combines work with different licenses. See the "NOTICE" text
+// * file for details on the various modules and licenses.
+// * The "NOTICE" text file is part of the distribution. Any derivative works
+// * that you distribute must include a readable copy of the "NOTICE" text file.
+// ******************************************************************************/
+///*
+// * Copyright 2003 Federal Chancellery Austria
+// * MOA-ID has been developed in a cooperation between BRZ, the Federal
+// * Chancellery Austria - ICT staff unit, and Graz University of Technology.
+// *
+// * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+// * the European Commission - subsequent versions of the EUPL (the "Licence");
+// * You may not use this work except in compliance with the Licence.
+// * You may obtain a copy of the Licence at:
+// * http://www.osor.eu/eupl/
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the Licence is distributed on an "AS IS" basis,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the Licence for the specific language governing permissions and
+// * limitations under the Licence.
+// *
+// * This product combines work with different licenses. See the "NOTICE" text
+// * file for details on the various modules and licenses.
+// * The "NOTICE" text file is part of the distribution. Any derivative works
+// * that you distribute must include a readable copy of the "NOTICE" text file.
+// */
+//
+//
+//package at.gv.egovernment.moa.id.config.auth;
+//
+//import java.io.File;
+//import java.io.FileInputStream;
+//import java.io.FileNotFoundException;
+//import java.io.IOException;
+//import java.math.BigInteger;
+//import java.net.MalformedURLException;
+//import java.util.ArrayList;
+//import java.util.Arrays;
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Properties;
+//
+//import javax.xml.bind.JAXBContext;
+//import javax.xml.bind.Unmarshaller;
+//
+//import org.hibernate.cfg.Configuration;
+//
+//import at.gv.egovernment.moa.id.auth.AuthenticationServer;
+//import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
+//import at.gv.egovernment.moa.id.auth.modules.internal.tasks.GetMISSessionIDTask;
+//import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+//import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
+//
+//import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
+//import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModes;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.IdentityLinkSigners;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.LegacyAllowed;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MOASP;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineMandates;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Organization;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.PVP2;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Protocols;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SLRequestTemplates;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SSO;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SecurityLayer;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TimeOuts;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TrustAnchor;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;
+//import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore;
+//import at.gv.egovernment.moa.id.commons.db.dao.session.AuthenticatedSessionStore;
+//import at.gv.egovernment.moa.id.commons.db.dao.session.ExceptionStore;
+//import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
+//import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
+//import at.gv.egovernment.moa.id.commons.db.dao.session.OldSSOSessionIDStore;
+//import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog;
+//import at.gv.egovernment.moa.id.config.ConfigurationException;
+//import at.gv.egovernment.moa.id.config.ConfigurationProvider;
+//import at.gv.egovernment.moa.id.config.ConfigurationProviderImpl;
+//import at.gv.egovernment.moa.id.config.ConfigurationUtils;
+//import at.gv.egovernment.moa.id.config.ConnectionParameter;
+//import at.gv.egovernment.moa.id.config.ConnectionParameterForeign;
+//import at.gv.egovernment.moa.id.config.ConnectionParameterMOASP;
+//import at.gv.egovernment.moa.id.config.ConnectionParameterMandate;
+//import at.gv.egovernment.moa.id.config.auth.data.ProtocolAllowed;
+//import at.gv.egovernment.moa.id.config.legacy.BuildFromLegacyConfig;
+//import at.gv.egovernment.moa.id.config.stork.STORKConfig;
+//import at.gv.egovernment.moa.id.data.IssuerAndSerial;
+//import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore;
+//import at.gv.egovernment.moa.id.protocols.pvp2x.config.MOADefaultBootstrap;
+//import at.gv.egovernment.moa.logging.Logger;
+//import at.gv.egovernment.moa.util.MiscUtil;
+//import at.gv.util.config.EgovUtilPropertiesConfiguration;
+//
+//import com.fasterxml.jackson.annotation.JsonIgnore;
+//import com.fasterxml.jackson.annotation.JsonProperty;
+//
+///**
+// * A class providing access to the Auth Part of the MOA-ID configuration data.
+// *
+// * <p>Configuration data is read from an XML file, whose location is given by
+// * the <code>moa.id.configuration</code> system property.</p>
+// * <p>This class implements the Singleton pattern. The <code>reload()</code>
+// * method can be used to update the configuration data. Therefore, it is not
+// * guaranteed that consecutive calls to <code>getInstance()</code> will return
+// * the same <code>AuthConfigurationProvider</code> all the time. During the
+// * processing of a web service request, the current
+// * <code>TransactionContext</code> should be used to obtain the
+// * <code>AuthConfigurationProvider</code> local to that request.</p>
+// *
+// * @author Patrick Peck
+// * @author Stefan Knirsch
+// *
+// * @version $Id$
+// *
+// *@deprecated Use {@link AuthConfigProviderFactory} instead
+// */
+//public class AuthConfigurationProvider extends ConfigurationProviderImpl implements AuthConfiguration {
+//
+//// /** DEFAULT_ENCODING is "UTF-8" */
+//// private static final String DEFAULT_ENCODING="UTF-8";
+// /**
+// * The name of the generic configuration property giving the authentication session time out.
+// */
+// public static final String AUTH_SESSION_TIMEOUT_PROPERTY =
+// "AuthenticationSession.TimeOut";
+// /**
+// * The name of the generic configuration property giving the authentication data time out.
+// */
+// public static final String AUTH_DATA_TIMEOUT_PROPERTY =
+// "AuthenticationData.TimeOut";
+//
+// /**
+// * BKUSelectionType HTMLComplete, according to schema type <code>BKUSelectionType</code>
+// */
+// public static final String BKU_SELECTION_TYPE_HTMLCOMPLETE =
+// "HTMLComplete";
+//
+// /**
+// * BKUSelectionType HTMLSelect, according to schema type <code>BKUSelectionType</code>
+// */
+// public static final String BKU_SELECTION_TYPE_HTMLSELECT =
+// "HTMLSelect";
+//
+// /**
+// * The name of the generic configuration property allowing https connection to
+// * the user frontend servlets ("StartAuthentication" and "SelectBKU" servlets)
+// */
+// public static final String FRONTEND_SERVLETS_ENABLE_HTTP_CONNECTION_PROPERTY =
+// "FrontendServlets.EnableHTTPConnection";
+//
+// /**
+// * The name of the generic configuration property allowing to set a individual
+// * DATA URL used to communicate with the BKU (SecurityLayer)
+// */
+// public static final String INDIVIDUAL_DATA_URL_PREFIX =
+// "FrontendServlets.DataURLPrefix";
+//
+// /** Singleton instance. <code>null</code>, if none has been created. */
+// private static AuthConfigurationProvider instance;
+//
+// //
+// // configuration data
+// //
+// private static MOAIDConfiguration moaidconfig = null;
+//
+// private static Properties props = null;
+//
+// private static STORKConfig storkconfig = null;
+//
+// private static TimeOuts timeouts = null;
+//
+// private static PVP2 pvp2general = null;
+//
+// private static String alternativesourceid = null;
+//
+// private static List<String> legacyallowedprotocols = new ArrayList<String>();
+// private static ProtocolAllowed allowedProtcols = null;
+//
+// private static VerifyAuthBlock verifyidl = null;
+//
+// private static ConnectionParameter MoaSpConnectionParameter = null;
+// private static ConnectionParameter ForeignIDConnectionParameter = null;
+// private static ConnectionParameter OnlineMandatesConnectionParameter = null;
+//
+// private static String MoaSpIdentityLinkTrustProfileID = null;
+//
+// private static List<String> TransformsInfos = null;
+// private static List<String> IdentityLinkX509SubjectNames = new ArrayList<String>();
+//
+// private static Map<String, String> SLRequestTemplates = new HashMap<String, String>();
+// private static Map<String, String> DefaultBKUURLs = new HashMap<String, String>();
+//
+// private static SSO ssoconfig = null;
+//
+// private EgovUtilPropertiesConfiguration eGovUtilsConfig = null;
+//
+// private static Date date = null;
+//
+// private String publicURLPreFix = null;
+//
+// /**
+// * Return the single instance of configuration data.
+// *
+// * @return AuthConfigurationProvider The current configuration data.
+// * @throws ConfigurationException
+// */
+// public static synchronized AuthConfigurationProvider getInstance()
+// throws ConfigurationException {
+//
+// if (instance == null) {
+// reload();
+// }
+// return instance;
+// }
+//
+// public static Date getTimeStamp() {
+// return date;
+// }
+//
+// /**
+// * Reload the configuration data and set it if successful.
+// *
+// * @return AuthConfigurationProvider The loaded configuration data.
+// * @throws ConfigurationException Failure to load the configuration data.
+// */
+// public static synchronized AuthConfigurationProvider reload()
+// throws ConfigurationException {
+// String fileName = System.getProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME);
+// if (fileName == null) {
+// throw new ConfigurationException("config.01", null);
+// }
+// Logger.info("Loading MOA-ID-AUTH configuration " + fileName);
+//
+// instance = new AuthConfigurationProvider(fileName);
+// return instance;
+// }
+//
+//
+// /**
+// * Constructor for AuthConfigurationProvider.
+// * @param fileName
+// * @throws ConfigurationException
+// */
+// public AuthConfigurationProvider(String fileName)
+// throws ConfigurationException {
+//
+// load(fileName);
+// }
+//
+// /**
+// * Protected constructor. Used by unit tests.
+// */
+// protected AuthConfigurationProvider() {
+// }
+//
+// /**
+// * Load the configuration data from XML file with the given name and build
+// * the internal data structures representing the MOA ID configuration.
+// *
+// * @param fileName The name of the XML file to load.
+// * @throws ConfigurationException The MOA configuration could not be
+// * read/built.
+// */
+// private void load(String fileName) throws ConfigurationException {
+//
+// try {
+// //Initial Hibernate Framework
+// Logger.trace("Initializing Hibernate framework.");
+//
+// //Load MOAID-2.0 properties file
+// File propertiesFile = new File(fileName);
+// FileInputStream fis = null;
+// props = new Properties();
+//
+// // determine the directory of the root config file
+// rootConfigFileDir = new File(fileName).getParent();
+//
+// try {
+// rootConfigFileDir = new File(rootConfigFileDir).toURL().toString();
+//
+// } catch (MalformedURLException t) {
+// throw new ConfigurationException("config.03", null, t);
+// }
+//
+// try {
+// fis = new FileInputStream(propertiesFile);
+// props.load(fis);
+//
+// // read MOAID Session Hibernate properties
+// Properties moaSessionProp = new Properties();
+// for (Object key : props.keySet()) {
+// String propPrefix = "moasession.";
+// if (key.toString().startsWith(propPrefix+"hibernate")) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// moaSessionProp.put(propertyName, props.get(key.toString()));
+// }
+// }
+//
+// // read Config Hibernate properties
+// Properties configProp = new Properties();
+// for (Object key : props.keySet()) {
+// String propPrefix = "configuration.";
+// if (key.toString().startsWith(propPrefix+"hibernate")) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// configProp.put(propertyName, props.get(key.toString()));
+// }
+// }
+//
+// // read advanced logging properties
+// Properties statisticProps = new Properties();
+// for (Object key : props.keySet()) {
+// String propPrefix = "advancedlogging.";
+// if (key.toString().startsWith(propPrefix+"hibernate")) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// statisticProps.put(propertyName, props.get(key.toString()));
+// }
+// }
+//
+// // initialize hibernate
+// synchronized (AuthConfigurationProvider.class) {
+//
+// //Initial config Database
+// // ConfigurationDBUtils.initHibernate(configProp);
+//
+// //initial MOAID Session Database
+// Configuration config = new Configuration();
+// config.addAnnotatedClass(AssertionStore.class);
+// config.addAnnotatedClass(AuthenticatedSessionStore.class);
+// config.addAnnotatedClass(OASessionStore.class);
+// config.addAnnotatedClass(OldSSOSessionIDStore.class);
+// config.addAnnotatedClass(ExceptionStore.class);
+// config.addAnnotatedClass(InterfederationSessionStore.class);
+// config.addAnnotatedClass(ProcessInstanceStore.class);
+// config.addProperties(moaSessionProp);
+// MOASessionDBUtils.initHibernate(config, moaSessionProp);
+//
+// //initial advanced logging
+// if (isAdvancedLoggingActive()) {
+// Logger.info("Advanced statistic log is activated, starting initialization process ...");
+// Configuration statisticconfig = new Configuration();
+// statisticconfig.addAnnotatedClass(StatisticLog.class);
+// statisticconfig.addProperties(statisticProps);
+// StatisticLogDBUtils.initHibernate(statisticconfig, statisticProps);
+// Logger.info("Advanced statistic log is initialized.");
+// }
+//
+// }
+// Logger.trace("Hibernate initialization finished.");
+//
+// } catch (FileNotFoundException e) {
+// throw new ConfigurationException("config.03", null, e);
+//
+// } catch (IOException e) {
+// throw new ConfigurationException("config.03", null, e);
+//
+// } catch (ExceptionInInitializerError e) {
+// throw new ConfigurationException("config.17", null, e);
+//
+// } finally {
+// if (fis != null)
+// fis.close();
+//
+// }
+//
+//
+// //Initialize OpenSAML for STORK
+// Logger.info("Starting initialization of OpenSAML...");
+// MOADefaultBootstrap.bootstrap();
+// //DefaultBootstrap.bootstrap();
+// Logger.debug("OpenSAML successfully initialized");
+//
+//
+// String legacyconfig = props.getProperty("configuration.xml.legacy");
+// String xmlconfig = props.getProperty("configuration.xml");
+//// String xmlconfigout = props.getProperty("configuration.xml.out");
+//
+//
+// //configure eGovUtils client implementations
+//
+// //read eGovUtils client configuration
+// Properties eGovUtilsConfigProp = new Properties();
+// for (Object key : props.keySet()) {
+// String propPrefix = "service.";
+// if (key.toString().startsWith(propPrefix+"egovutil")) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// eGovUtilsConfigProp.put(propertyName, props.get(key.toString()));
+// }
+// }
+// if (!eGovUtilsConfigProp.isEmpty()) {
+// Logger.info("Start eGovUtils client implementation configuration ...");
+// eGovUtilsConfig =
+// new EgovUtilPropertiesConfiguration(eGovUtilsConfigProp, rootConfigFileDir);
+// }
+//
+//
+// //TODO: removed in MOA-ID 3.x
+//// //check if XML config should be used
+//// if (MiscUtil.isNotEmpty(legacyconfig) || MiscUtil.isNotEmpty(xmlconfig)) {
+//// Logger.warn("WARNING! MOA-ID 2.0 is started with XML configuration. This setup overstrike the actual configuration in the Database!");
+//// //moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
+//// moaidconfig = NewConfigurationDBRead.getMOAIDConfiguration();
+//// if (moaidconfig.getAuthComponentGeneral()!= null || moaidconfig.getChainingModes() != null || moaidconfig.getTrustedCACertificates() != null || moaidconfig.getDefaultBKUs() != null
+//// || moaidconfig.getSLRequestTemplates() != null || moaidconfig.getTimestampItem() != null || moaidconfig.getPvp2RefreshItem() != null) {
+////
+//// // ConfigurationDBUtils.delete(moaidconfig);
+//// for(String key : MOAIDConfigurationConstants.getMOAIDConfigurationKeys()){
+//// NewConfigurationDBWrite.delete(key);
+//// }
+//// }
+////
+////
+//// //List<OnlineApplication> oas = ConfigurationDBRead.getAllOnlineApplications();
+//// List<OnlineApplication> oas = NewConfigurationDBRead.getAllOnlineApplications();
+//// if (oas != null && oas.size() > 0) {
+//// // for (OnlineApplication oa : oas)
+//// // ConfigurationDBUtils.delete(oa);
+//// NewConfigurationDBWrite.delete(MOAIDConfigurationConstants.ONLINE_APPLICATIONS_KEY);
+//// }
+//// }
+////
+//// //load legacy config if it is configured
+//// if (MiscUtil.isNotEmpty(legacyconfig)) {
+//// Logger.warn("WARNING! MOA-ID 2.0 is started with legacy configuration. This setup is not recommended!");
+////
+//// MOAIDConfiguration moaconfig = BuildFromLegacyConfig.build(new File(legacyconfig), rootConfigFileDir, null);
+////
+//// List<OnlineApplication> oas = moaconfig.getOnlineApplication();
+//// // for (OnlineApplication oa : oas)
+//// // ConfigurationDBUtils.save(oa);
+//// NewConfigurationDBWrite.saveOnlineApplications(oas);
+////
+//// moaconfig.setOnlineApplication(null);
+//// // ConfigurationDBUtils.save(moaconfig);
+//// NewConfigurationDBWrite.save(moaconfig);
+////
+//// Logger.info("Legacy Configuration load is completed.");
+////
+////
+//// }
+////
+//// //load MOA-ID 2.x config from XML
+//// if (MiscUtil.isNotEmpty(xmlconfig)) {
+//// Logger.warn("Load configuration from MOA-ID 2.x XML configuration");
+////
+//// try {
+//// JAXBContext jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config");
+//// Unmarshaller m = jc.createUnmarshaller();
+//// File file = new File(xmlconfig);
+//// MOAIDConfiguration moaconfig = (MOAIDConfiguration) m.unmarshal(file);
+//// //ConfigurationDBUtils.save(moaconfig);
+////
+//// List<OnlineApplication> importoas = moaconfig.getOnlineApplication();
+//// // for (OnlineApplication importoa : importoas) {
+//// // ConfigurationDBUtils.saveOrUpdate(importoa);
+//// // }
+////
+//// NewConfigurationDBWrite.saveOnlineApplications(importoas);
+////
+//// moaconfig.setOnlineApplication(null);
+//// //ConfigurationDBUtils.saveOrUpdate(moaconfig);
+//// NewConfigurationDBWrite.save(moaconfig);
+////
+//// } catch (Exception e) {
+//// Logger.warn("MOA-ID XML configuration can not be loaded from File.", e);
+//// throw new ConfigurationException("config.02", null);
+//// }
+//// Logger.info("XML Configuration load is completed.");
+//// }
+//
+// reloadDataBaseConfig();
+//
+//
+// } catch (Throwable t) {
+// throw new ConfigurationException("config.02", null, t);
+// }
+// }
+//
+// protected MOAIDConfiguration loadDataBaseConfig() {
+// return ConfigurationDBRead.getMOAIDConfiguration();
+// }
+//
+// public synchronized void reloadDataBaseConfig() throws ConfigurationException {
+//
+// Logger.info("Read MOA-ID 2.0 configuration from database.");
+// moaidconfig = loadDataBaseConfig();
+// Logger.info("MOA-ID 2.0 is loaded.");
+//
+// if (moaidconfig == null) {
+// Logger.warn("NO MOA-ID configuration found.");
+// throw new ConfigurationException("config.18", null);
+// }
+//
+// //build STORK Config
+// AuthComponentGeneral auth = getAuthComponentGeneral();
+// ForeignIdentities foreign = auth.getForeignIdentities();
+// if (foreign == null ) {
+// Logger.warn("Error in MOA-ID Configuration. No STORK configuration found.");
+// } else
+// storkconfig = new STORKConfig(foreign.getSTORK(), props, rootConfigFileDir);
+//
+// //load Chaining modes
+// ChainingModes cm = moaidconfig.getChainingModes();
+// if (cm != null) {
+// defaultChainingMode = cm.getSystemDefaultMode().value();
+//
+// List<TrustAnchor> tas = cm.getTrustAnchor();
+//
+// chainingModes = new HashMap<IssuerAndSerial, String>();
+// for (TrustAnchor ta : tas) {
+// IssuerAndSerial is = new IssuerAndSerial(ta.getX509IssuerName(), ta.getX509SerialNumber());
+// chainingModes.put(is, ta.getMode().value());
+// }
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No ChainingMode configuration found.");
+// throw new ConfigurationException("config.02", null);
+// }
+//
+// //set Trusted CA certs directory
+// trustedCACertificates = rootConfigFileDir + moaidconfig.getTrustedCACertificates();
+//
+// //set CertStoreDirectory
+// setCertStoreDirectory();
+//
+// //set TrustManagerRevocationChecking
+// setTrustManagerRevocationChecking();
+//
+// //set default timeouts
+// timeouts = new TimeOuts();
+// timeouts.setAssertion(new BigInteger("300"));
+// timeouts.setMOASessionCreated(new BigInteger("2700"));
+// timeouts.setMOASessionUpdated(new BigInteger("1200"));
+//
+// //search timeouts in config
+// if (auth.getGeneralConfiguration() != null) {
+// if (auth.getGeneralConfiguration().getTimeOuts() != null) {
+// if (auth.getGeneralConfiguration().getTimeOuts().getAssertion() != null)
+// timeouts.setAssertion(auth.getGeneralConfiguration().getTimeOuts().getAssertion());
+//
+// if (auth.getGeneralConfiguration().getTimeOuts().getMOASessionCreated() != null)
+// timeouts.setMOASessionCreated(auth.getGeneralConfiguration().getTimeOuts().getMOASessionCreated());
+//
+// if (auth.getGeneralConfiguration().getTimeOuts().getMOASessionUpdated() != null)
+// timeouts.setMOASessionUpdated(auth.getGeneralConfiguration().getTimeOuts().getMOASessionUpdated());
+//
+// } else {
+// Logger.info("No TimeOuts defined. Use default values");
+// }
+// }
+//
+// // sets the authentication session and authentication data time outs
+// AuthenticationServer.getInstance()
+// .setSecondsSessionTimeOutCreated(timeouts.getMOASessionCreated().longValue());
+//
+// AuthenticationServer.getInstance()
+// .setSecondsSessionTimeOutUpdated(timeouts.getMOASessionUpdated().longValue());
+//
+// AuthenticationServer.getInstance()
+// .setSecondsAuthDataTimeOut(timeouts.getAssertion().longValue());
+//
+//
+//
+// //set PVP2 general config
+// Protocols protocols = auth.getProtocols();
+// if (protocols != null) {
+//
+// allowedProtcols = new ProtocolAllowed();
+//
+// if (protocols.getSAML1() != null) {
+// allowedProtcols.setSAML1Active(protocols.getSAML1().isIsActive());
+//
+// //load alternative sourceID
+// if (MiscUtil.isNotEmpty(protocols.getSAML1().getSourceID()))
+// alternativesourceid = protocols.getSAML1().getSourceID();
+//
+// }
+//
+// if (protocols.getOAuth() != null) {
+// allowedProtcols.setOAUTHActive(protocols.getOAuth().isIsActive());
+// }
+//
+// if (protocols.getPVP2() != null) {
+// PVP2 el = protocols.getPVP2();
+//
+// allowedProtcols.setPVP21Active(el.isIsActive());
+//
+// pvp2general = new PVP2();
+// pvp2general.setIssuerName(el.getIssuerName());
+// pvp2general.setPublicURLPrefix(el.getPublicURLPrefix());
+//
+// if (el.getOrganization() != null) {
+// Organization org = new Organization();
+// pvp2general.setOrganization(org);
+// org.setDisplayName(el.getOrganization().getDisplayName());
+// org.setName(el.getOrganization().getName());
+// org.setURL(el.getOrganization().getURL());
+// }
+//
+// if (el.getContact() != null) {
+// List<Contact> cont = new ArrayList<Contact>();
+// pvp2general.setContact(cont);
+// for (Contact e : el.getContact()) {
+// Contact c = new Contact();
+// c.setCompany(e.getCompany());
+// c.setGivenName(e.getGivenName());
+// c.getMail().addAll(e.getMail());
+// c.getPhone().addAll(e.getPhone());
+// c.setSurName(e.getSurName());
+// c.setType(e.getType());
+// cont.add(c);
+// }
+// }
+// }
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No general Protcol configuration found.");
+// }
+//
+// //set alternativeSourceID
+// if (auth.getGeneralConfiguration() != null) {
+//
+// //TODO: can be removed in a further version, because it is moved to SAML1 config
+// if (MiscUtil.isEmpty(alternativesourceid))
+// alternativesourceid = auth.getGeneralConfiguration().getAlternativeSourceID();
+//
+// if (MiscUtil.isNotEmpty(auth.getGeneralConfiguration().getPublicURLPreFix()))
+// publicURLPreFix = auth.getGeneralConfiguration().getPublicURLPreFix();
+//
+// else {
+// Logger.error("No Public URL Prefix configured.");
+// throw new ConfigurationException("config.05", new Object[]{"Public URL Prefix"});
+// }
+//
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No GeneralConfig defined.");
+// throw new ConfigurationException("config.02", null);
+// }
+//
+// //set LegacyAllowedProtocols
+// try {
+// if (auth.getProtocols() != null) {
+// Protocols procols = auth.getProtocols();
+// if (procols.getLegacyAllowed() != null) {
+// LegacyAllowed legacy = procols.getLegacyAllowed();
+// legacyallowedprotocols = new ArrayList<String>(legacy.getProtocolName());
+// }
+// }
+// } catch (Exception e) {
+// Logger.info("No protocols found with legacy allowed flag!");
+// }
+//
+// //set VerifyAuthBlockConfig
+// MOASP moasp = getMOASPConfig(auth);
+//
+// VerifyAuthBlock el = moasp.getVerifyAuthBlock();
+// if (el != null) {
+// verifyidl = new VerifyAuthBlock();
+// verifyidl.setTrustProfileID(el.getTrustProfileID());
+// verifyidl.setVerifyTransformsInfoProfileID(new ArrayList<String>(el.getVerifyTransformsInfoProfileID()));
+// }
+// else {
+// Logger.warn("Error in MOA-ID Configuration. No Trustprofile for AuthBlock validation.");
+// throw new ConfigurationException("config.02", null);
+// }
+//
+// //set MOASP connection parameters
+// if (moasp.getConnectionParameter() != null)
+// MoaSpConnectionParameter = new ConnectionParameterMOASP(moasp.getConnectionParameter(), props, this.rootConfigFileDir);
+// else
+// MoaSpConnectionParameter = null;
+//
+// //set ForeignIDConnectionParameters
+// if (foreign != null) {
+// ForeignIDConnectionParameter = new ConnectionParameterForeign(foreign.getConnectionParameter(), props, this.rootConfigFileDir);
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No Connectionconfiguration to SZRGW Service found");
+// }
+//
+// //set OnlineMandateConnectionParameters
+// OnlineMandates ovs = auth.getOnlineMandates();
+// if (ovs != null) {
+// OnlineMandatesConnectionParameter = new ConnectionParameterMandate(ovs.getConnectionParameter(), props, this.rootConfigFileDir);
+//
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No Connectionconfiguration to OVS Service found");
+// }
+//
+// //set MOASP IdentityLink Trust-ProfileID
+// VerifyIdentityLink verifyidl = moasp.getVerifyIdentityLink();
+// if (verifyidl != null)
+// MoaSpIdentityLinkTrustProfileID = verifyidl.getTrustProfileID();
+// else {
+// Logger.warn("Error in MOA-ID Configuration. No Trustprofile for IdentityLink validation.");
+// throw new ConfigurationException("config.02", null);
+// }
+//
+// //set SL transformation infos
+// SecurityLayer seclayer = auth.getSecurityLayer();
+// if (seclayer == null) {
+// Logger.warn("Error in MOA-ID Configuration. No generalAuthConfiguration->SecurityLayer found");
+// throw new ConfigurationException("config.02", null);
+// } else {
+// TransformsInfos = ConfigurationUtils.getTransformInfos(seclayer.getTransformsInfo());
+//
+// if (TransformsInfos == null || TransformsInfos.size() == 0) {
+// Logger.error("No Security-Layer Transformation found.");
+// throw new ConfigurationException("config.05", new Object[]{"Security-Layer Transformation"});
+// }
+//
+// }
+//
+// //set IdentityLinkSignerSubjectNames
+// IdentityLinkX509SubjectNames = new ArrayList<String>();
+// IdentityLinkSigners idlsigners = auth.getIdentityLinkSigners();
+// if (idlsigners != null) {
+// Logger.debug("Load own IdentityLinkX509SubjectNames");
+// IdentityLinkX509SubjectNames.addAll(new ArrayList<String>(idlsigners.getX509SubjectName()));
+// }
+//
+// // now add the default identity link signers
+// String[] identityLinkSignersWithoutOID = MOAIDAuthConstants.IDENTITY_LINK_SIGNERS_WITHOUT_OID;
+// for (int i=0; i<identityLinkSignersWithoutOID.length; i++) {
+// String identityLinkSigner = identityLinkSignersWithoutOID[i];
+// if (!IdentityLinkX509SubjectNames.contains(identityLinkSigner)) {
+// IdentityLinkX509SubjectNames.add(identityLinkSigner);
+// }
+// }
+//
+// //set SLRequestTemplates
+// SLRequestTemplates templ = moaidconfig.getSLRequestTemplates();
+// if (templ == null) {
+// Logger.warn("Error in MOA-ID Configuration. No SLRequestTemplates found");
+// throw new ConfigurationException("config.02", null);
+// } else {
+// SLRequestTemplates.put(IOAAuthParameters.ONLINEBKU, templ.getOnlineBKU());
+// SLRequestTemplates.put(IOAAuthParameters.LOCALBKU, templ.getLocalBKU());
+// SLRequestTemplates.put(IOAAuthParameters.HANDYBKU, templ.getHandyBKU());
+// }
+//
+// //set Default BKU URLS
+// DefaultBKUs bkuuls = moaidconfig.getDefaultBKUs();
+// if (bkuuls != null) {
+// DefaultBKUURLs.put(IOAAuthParameters.ONLINEBKU, bkuuls.getOnlineBKU());
+// DefaultBKUURLs.put(IOAAuthParameters.LOCALBKU, bkuuls.getLocalBKU());
+// DefaultBKUURLs.put(IOAAuthParameters.HANDYBKU, bkuuls.getHandyBKU());
+// }
+//
+// //set SSO Config
+// if (auth.getSSO()!= null) {
+// ssoconfig = new SSO();
+// ssoconfig.setFriendlyName(auth.getSSO().getFriendlyName());
+// ssoconfig.setPublicURL(auth.getSSO().getPublicURL());
+// ssoconfig.setSpecialText(auth.getSSO().getSpecialText());
+// ssoconfig.setTarget(auth.getSSO().getTarget());
+//
+// if (auth.getSSO().getIdentificationNumber() != null) {
+// IdentificationNumber value = new IdentificationNumber();
+// value.setType(auth.getSSO().getIdentificationNumber().getType());
+// value.setValue(auth.getSSO().getIdentificationNumber().getValue());
+// ssoconfig.setIdentificationNumber(value);
+// }
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No Single Sign-On Config found");
+// }
+//
+// //close Database
+// //
+//
+// date = new Date();
+// }
+//
+//
+// private Properties getGeneralProperiesConfig(final String propPrefix) {
+// Properties configProp = new Properties();
+// for (Object key : props.keySet()) {
+// if (key.toString().startsWith(propPrefix)) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// configProp.put(propertyName, props.get(key.toString()));
+// }
+// }
+// return configProp;
+// }
+//
+// public Properties getGeneralPVP2ProperiesConfig() {
+// return this.getGeneralProperiesConfig("protocols.pvp2.");
+// }
+//
+// public Properties getGeneralOAuth20ProperiesConfig() {
+// return this.getGeneralProperiesConfig("protocols.oauth20.");
+// }
+//
+// public ProtocolAllowed getAllowedProtocols() {
+// return allowedProtcols;
+// }
+//
+// public PVP2 getGeneralPVP2DBConfig() {
+// return pvp2general;
+// }
+//
+// public TimeOuts getTimeOuts() throws ConfigurationException {
+// return timeouts;
+// }
+//
+// public String getAlternativeSourceID() throws ConfigurationException {
+// return alternativesourceid;
+// }
+//
+// public List<String> getLegacyAllowedProtocols() {
+// return legacyallowedprotocols;
+// }
+//
+//
+// /**
+// * Provides configuration information regarding the online application behind
+// * the given URL, relevant to the MOA-ID Auth component.
+// *
+// * @param oaURL URL requested for an online application
+// * @return an <code>OAAuthParameter</code>, or <code>null</code>
+// * if none is applicable
+// */
+// public OAAuthParameter getOnlineApplicationParameter(String oaURL) {
+//
+// OnlineApplication oa = ConfigurationDBRead.getActiveOnlineApplication(oaURL);
//
-// if (ssoconfig != null && ssoconfig.getIdentificationNumber() != null)
-// return true;
-// else
-// return false;
+// if (oa == null) {
+// Logger.warn("Online application with identifier " + oaURL + " is not found.");
+// return null;
+// }
+//
+// return new OAAuthParameter(oa);
+// }
+//
+//
+// /**
+// * Return a string with a url-reference to the VerifyAuthBlock trust
+// * profile id within the moa-sp part of the authentication component
+// *
+// * @return String with a url-reference to the VerifyAuthBlock trust profile ID
+// * @throws ConfigurationException
+// */
+// public String getMoaSpAuthBlockTrustProfileID() throws ConfigurationException {
+// return verifyidl.getTrustProfileID();
+// }
+//
+// /**
+// * Return a string array with references to all verify transform info
+// * IDs within the moa-sp part of the authentication component
+// * @return A string array containing all urls to the
+// * verify transform info IDs
+// * @throws ConfigurationException
+// */
+// public List<String> getMoaSpAuthBlockVerifyTransformsInfoIDs() throws ConfigurationException {
+// return verifyidl.getVerifyTransformsInfoProfileID();
+// }
+//
+// /**
+// * Return a ConnectionParameter bean containing all information
+// * of the authentication component moa-sp element
+// * @return ConnectionParameter of the authentication component moa-sp element
+// * @throws ConfigurationException
+// */
+// public ConnectionParameter getMoaSpConnectionParameter() throws ConfigurationException {
+// return MoaSpConnectionParameter;
+// }
+//
+// /**
+// * Return a ConnectionParameter bean containing all information
+// * of the authentication component foreigid element
+// * @return ConnectionParameter of the authentication component foreignid element
+// * @throws ConfigurationException
+// */
+// public ConnectionParameter getForeignIDConnectionParameter() throws ConfigurationException {
+// return ForeignIDConnectionParameter;
+// }
+//
+// /**
+// * Return a ConnectionParameter bean containing all information
+// * of the authentication component OnlineMandates element
+// * @return ConnectionParameter of the authentication component OnlineMandates element
+// * @throws ConfigurationException
+// */
+// public ConnectionParameter getOnlineMandatesConnectionParameter() throws ConfigurationException {
+// return OnlineMandatesConnectionParameter;
+// }
+//
+// /**
+// * Return a string with a url-reference to the VerifyIdentityLink trust
+// * profile id within the moa-sp part of the authentication component
+// * @return String with a url-reference to the VerifyIdentityLink trust profile ID
+// * @throws ConfigurationException
+// */
+// public String getMoaSpIdentityLinkTrustProfileID() throws ConfigurationException {
+// return MoaSpIdentityLinkTrustProfileID;
+// }
+//
+// /**
+// * Returns the transformsInfos.
+// * @return String[]
+// * @throws ConfigurationException
+// */
+// public List<String> getTransformsInfos() throws ConfigurationException {
+// return TransformsInfos;
+// }
+//
+// /**
+// * Returns the identityLinkX509SubjectNames.
+// * @return List
+// * @throws ConfigurationException
+// */
+// public List<String> getIdentityLinkX509SubjectNames() throws ConfigurationException {
+// return IdentityLinkX509SubjectNames;
+// }
+//
+// public List<String> getSLRequestTemplates() throws ConfigurationException {
+// return new ArrayList<String>(SLRequestTemplates.values());
+// }
+//
+// public String getSLRequestTemplates(String type) throws ConfigurationException {
+// String el = SLRequestTemplates.get(type);
+// if (MiscUtil.isNotEmpty(el))
+// return el;
+// else {
+// Logger.warn("getSLRequestTemplates: BKU Type does not match: "
+// + IOAAuthParameters.ONLINEBKU + " or " + IOAAuthParameters.HANDYBKU + " or " + IOAAuthParameters.LOCALBKU);
+// return null;
+// }
+// }
+//
+// public List<String> getDefaultBKUURLs() throws ConfigurationException {
+// return new ArrayList<String>(DefaultBKUURLs.values());
+// }
+//
+// public String getDefaultBKUURL(String type) throws ConfigurationException {
+// String el = DefaultBKUURLs.get(type);
+// if (MiscUtil.isNotEmpty(el))
+// return el;
+// else {
+// Logger.warn("getSLRequestTemplates: BKU Type does not match: "
+// + IOAAuthParameters.ONLINEBKU + " or " + IOAAuthParameters.HANDYBKU + " or " + IOAAuthParameters.LOCALBKU);
+// return null;
+// }
// }
-
- public String getSSOTagetIdentifier() throws ConfigurationException {
- if (ssoconfig != null)
- return ssoconfig.getTarget();
- else
- return null;
- }
-
-// public String getSSOTarget() throws ConfigurationException {
-// if (ssoconfig!= null)
+//
+//// public boolean isSSOBusinessService() throws ConfigurationException {
+////
+//// if (ssoconfig != null && ssoconfig.getIdentificationNumber() != null)
+//// return true;
+//// else
+//// return false;
+//// }
+//
+// public String getSSOTagetIdentifier() throws ConfigurationException {
+// if (ssoconfig != null)
// return ssoconfig.getTarget();
+// else
+// return null;
+// }
+//
+//// public String getSSOTarget() throws ConfigurationException {
+//// if (ssoconfig!= null)
+//// return ssoconfig.getTarget();
+////
+//// return null;
+//// }
+//
+// public String getSSOFriendlyName() {
+// if (ssoconfig!= null) {
+// if (MiscUtil.isNotEmpty(ssoconfig.getFriendlyName()))
+// return ssoconfig.getFriendlyName();
+// }
+//
+// return "Default MOA-ID friendly name for SSO";
+// }
+//
+// public String getSSOSpecialText() {
+// if (ssoconfig!= null) {
+// String text = ssoconfig.getSpecialText();
+// if (MiscUtil.isEmpty(text))
+// text = new String();
+//
+// return text;
+// }
+// return new String();
+// }
+//
+// public String getMOASessionEncryptionKey() {
+//
+// String prop = props.getProperty("configuration.moasession.key");
+// if (MiscUtil.isEmpty(prop))
+// return null;
+// else
+// return prop;
+// }
+//
+// /**
+// * @return
+// */
+// public String getMOAConfigurationEncryptionKey() {
+// String prop = props.getProperty("configuration.moaconfig.key");
+// if (MiscUtil.isEmpty(prop))
+// return null;
+// else
+// return prop;
+// }
+//
+// public boolean isIdentityLinkResigning() {
+// String prop = props.getProperty("configuration.resignidentitylink.active", "false");
+// return Boolean.valueOf(prop);
+// }
+//
+// public String getIdentityLinkResigningKey() {
+// String prop = props.getProperty("configuration.resignidentitylink.keygroup");
+// if (MiscUtil.isNotEmpty(prop))
+// return prop;
+// else
+// return null;
+// }
+//
+// /**
+// * Checks if is fakeIdL is activated.
+// *
+// * @return true, if fake IdLs are available for stork
+// */
+// public boolean isStorkFakeIdLActive() {
+// String prop = props.getProperty("stork.fakeIdL.active", "false");
+// return Boolean.valueOf(prop);
+// }
+//
+// /**
+// * Gets the countries which will receive a fake IdL
+// *
+// * @return the countries
+// */
+// public List<String> getStorkFakeIdLCountries() {
+// String prop = props.getProperty("stork.fakeIdL.countries", "");
+// return Arrays.asList(prop.replaceAll(" ", "").split(","));
+// }
+//
+// /**
+// * Gets the resigning key (group) for the stork fake IdL.
+// *
+// * @return the resigning key
+// */
+// public String getStorkFakeIdLResigningKey() {
+// String prop = props.getProperty("stork.fakeIdL.keygroup");
+// if (MiscUtil.isNotEmpty(prop))
+// return prop;
+// else
+// return null;
+// }
+//
+// /**
+// * Gets the countries for which it is configured to require no signature
+// *
+// * @return the stork no signature countries
+// */
+// public List<String> getStorkNoSignatureCountries() {
+// String prop = props.getProperty("stork.fakeIdL.noSignatureCountries", "");
+// return Arrays.asList(prop.replaceAll(" ", "").split(","));
+// }
+//
+// @JsonProperty("isMonitoringActive")
+// public boolean isMonitoringActive() {
+// String prop = props.getProperty("configuration.monitoring.active", "false");
+// return Boolean.valueOf(prop);
+// }
+//
+// public String getMonitoringTestIdentityLinkURL() {
+// String prop = props.getProperty("configuration.monitoring.test.identitylink.url");
+// if (MiscUtil.isNotEmpty(prop))
+// return prop;
+// else
+// return null;
+// }
+//
+// public String getMonitoringMessageSuccess() {
+// String prop = props.getProperty("configuration.monitoring.message.success");
+// if (MiscUtil.isNotEmpty(prop))
+// return prop;
+// else
+// return null;
+// }
+//
+// public boolean isAdvancedLoggingActive() {
+// String prop = props.getProperty("configuration.advancedlogging.active", "false");
+// return Boolean.valueOf(prop);
+// }
+//
+// public String getPublicURLPrefix() {
+// return publicURLPreFix;
+// }
+//
+// public boolean isPVP2AssertionEncryptionActive() {
+// String prop = props.getProperty("protocols.pvp2.assertion.encryption.active", "true");
+// return Boolean.valueOf(prop);
+// }
+//
+// public boolean isCertifiacteQCActive() {
+// String prop = props.getProperty("configuration.validation.certificate.QC.ignore", "false");
+// return !Boolean.valueOf(prop);
+// }
+//
+//
+// //Load document service url from moa properties
+// public String getDocumentServiceUrl() {
+// String prop = props.getProperty("stork.documentservice.url", "false");
+// return prop;
+// }
+//
+//
+// public boolean isPVPSchemaValidationActive() {
+// String prop = props.getProperty("protocols.pvp2.schemavalidation", "true");
+// return Boolean.valueOf(prop);
+// }
+//
+// /**
+// * Returns the STORK Configuration
+// * @return STORK Configuration
+// * @throws ConfigurationException
+// */
+// public STORKConfig getStorkConfig() throws ConfigurationException {
+//
+// return storkconfig;
+// }
+//
+// /**
+// * @return the eGovUtilsConfig
+// */
+//@JsonIgnore
+//public EgovUtilPropertiesConfiguration geteGovUtilsConfig() {
+// return eGovUtilsConfig;
+//}
+//
+//private void setCertStoreDirectory() throws ConfigurationException {
+// AuthComponentGeneral auth = getAuthComponentGeneral();
+//
+// if (auth.getGeneralConfiguration() != null)
+// certstoreDirectory = rootConfigFileDir + auth.getGeneralConfiguration().getCertStoreDirectory();
+// else {
+// Logger.warn("Error in MOA-ID Configuration. No CertStoreDirectory defined.");
+// throw new ConfigurationException("config.02", null);
+// }
+// }
+//
+// private void setTrustManagerRevocationChecking() throws ConfigurationException {
+// AuthComponentGeneral auth = getAuthComponentGeneral();
+//
+// if (auth.getGeneralConfiguration() != null &&
+// auth.getGeneralConfiguration().isTrustManagerRevocationChecking() != null)
+// trustmanagerrevoationchecking = auth.getGeneralConfiguration().isTrustManagerRevocationChecking();
+// else {
+// Logger.warn("No TrustMangerRevoationChecking defined. Use default value = TRUE");
+// throw new ConfigurationException("config.02", null);
+// }
+// }
+//
+// private static AuthComponentGeneral getAuthComponentGeneral() throws ConfigurationException {
+// AuthComponentGeneral authgeneral = moaidconfig.getAuthComponentGeneral();
+// if (authgeneral == null) {
+// Logger.warn("Error in MOA-ID Configuration. No generalAuthConfiguration found");
+// throw new ConfigurationException("config.02", null);
+// }
+// return authgeneral;
+// }
+//
+// private static MOASP getMOASPConfig(AuthComponentGeneral authgeneral) throws ConfigurationException {
+// MOASP moasp = authgeneral.getMOASP();
//
-// return null;
+// if (moasp == null) {
+// Logger.warn("Error in MOA-ID Configuration. No MOASP configuration found");
+// throw new ConfigurationException("config.02", null);
+// }
+// return moasp;
// }
-
- public String getSSOFriendlyName() {
- if (ssoconfig!= null) {
- if (MiscUtil.isNotEmpty(ssoconfig.getFriendlyName()))
- return ssoconfig.getFriendlyName();
- }
-
- return "Default MOA-ID friendly name for SSO";
- }
-
- public String getSSOSpecialText() {
- if (ssoconfig!= null) {
- String text = ssoconfig.getSpecialText();
- if (MiscUtil.isEmpty(text))
- text = new String();
-
- return text;
- }
- return new String();
- }
-
- public String getMOASessionEncryptionKey() {
-
- String prop = props.getProperty("configuration.moasession.key");
- if (MiscUtil.isEmpty(prop))
- return null;
- else
- return prop;
- }
-
- /**
- * @return
- */
- public String getMOAConfigurationEncryptionKey() {
- String prop = props.getProperty("configuration.moaconfig.key");
- if (MiscUtil.isEmpty(prop))
- return null;
- else
- return prop;
- }
-
- public boolean isIdentityLinkResigning() {
- String prop = props.getProperty("configuration.resignidentitylink.active", "false");
- return Boolean.valueOf(prop);
- }
-
- public String getIdentityLinkResigningKey() {
- String prop = props.getProperty("configuration.resignidentitylink.keygroup");
- if (MiscUtil.isNotEmpty(prop))
- return prop;
- else
- return null;
- }
-
- /**
- * Checks if is fakeIdL is activated.
- *
- * @return true, if fake IdLs are available for stork
- */
- public boolean isStorkFakeIdLActive() {
- String prop = props.getProperty("stork.fakeIdL.active", "false");
- return Boolean.valueOf(prop);
- }
-
- /**
- * Gets the countries which will receive a fake IdL
- *
- * @return the countries
- */
- public List<String> getStorkFakeIdLCountries() {
- String prop = props.getProperty("stork.fakeIdL.countries", "");
- return Arrays.asList(prop.replaceAll(" ", "").split(","));
- }
-
- /**
- * Gets the resigning key (group) for the stork fake IdL.
- *
- * @return the resigning key
- */
- public String getStorkFakeIdLResigningKey() {
- String prop = props.getProperty("stork.fakeIdL.keygroup");
- if (MiscUtil.isNotEmpty(prop))
- return prop;
- else
- return null;
- }
-
- /**
- * Gets the countries for which it is configured to require no signature
- *
- * @return the stork no signature countries
- */
- public List<String> getStorkNoSignatureCountries() {
- String prop = props.getProperty("stork.fakeIdL.noSignatureCountries", "");
- return Arrays.asList(prop.replaceAll(" ", "").split(","));
- }
-
- public boolean isMonitoringActive() {
- String prop = props.getProperty("configuration.monitoring.active", "false");
- return Boolean.valueOf(prop);
- }
-
- public String getMonitoringTestIdentityLinkURL() {
- String prop = props.getProperty("configuration.monitoring.test.identitylink.url");
- if (MiscUtil.isNotEmpty(prop))
- return prop;
- else
- return null;
- }
-
- public String getMonitoringMessageSuccess() {
- String prop = props.getProperty("configuration.monitoring.message.success");
- if (MiscUtil.isNotEmpty(prop))
- return prop;
- else
- return null;
- }
-
- // allow http to be used in call, used in systems proxied on the same instance
- public boolean isHTTPAuthAllowed() {
- String prop = props.getProperty("configuration.localhttpallowed.active", "false");
- return Boolean.valueOf(prop);
- }
-
-
- public boolean isAdvancedLoggingActive() {
- String prop = props.getProperty("configuration.advancedlogging.active", "false");
- return Boolean.valueOf(prop);
- }
-
- public String getPublicURLPrefix() {
- return publicURLPreFix;
- }
-
- public boolean isPVP2AssertionEncryptionActive() {
- String prop = props.getProperty("protocols.pvp2.assertion.encryption.active", "true");
- return Boolean.valueOf(prop);
- }
-
- public boolean isCertifiacteQCActive() {
- String prop = props.getProperty("configuration.validation.certificate.QC.ignore", "false");
- return !Boolean.valueOf(prop);
- }
-
-
- //Load document service url from moa properties
- public String getDocumentServiceUrl() {
- String prop = props.getProperty("stork.documentservice.url", "false");
- return prop;
- }
-
-
- public boolean isPVPSchemaValidationActive() {
- String prop = props.getProperty("protocols.pvp2.schemavalidation", "true");
- return Boolean.valueOf(prop);
- }
-
- /**
- * Returns the STORK Configuration
- * @return STORK Configuration
- * @throws ConfigurationException
- */
- public STORKConfig getStorkConfig() throws ConfigurationException {
-
- return storkconfig;
- }
-
- /**
- * @return the eGovUtilsConfig
- */
-public EgovUtilPropertiesConfiguration geteGovUtilsConfig() {
- return eGovUtilsConfig;
-}
-
-private void setCertStoreDirectory() throws ConfigurationException {
- AuthComponentGeneral auth = getAuthComponentGeneral();
-
- if (auth.getGeneralConfiguration() != null)
- certstoreDirectory = rootConfigFileDir + auth.getGeneralConfiguration().getCertStoreDirectory();
- else {
- Logger.warn("Error in MOA-ID Configuration. No CertStoreDirectory defined.");
- throw new ConfigurationException("config.02", null);
- }
- }
-
- private void setTrustManagerRevocationChecking() throws ConfigurationException {
- AuthComponentGeneral auth = getAuthComponentGeneral();
-
- if (auth.getGeneralConfiguration() != null &&
- auth.getGeneralConfiguration().isTrustManagerRevocationChecking() != null)
- trustmanagerrevoationchecking = auth.getGeneralConfiguration().isTrustManagerRevocationChecking();
- else {
- Logger.warn("No TrustMangerRevoationChecking defined. Use default value = TRUE");
- throw new ConfigurationException("config.02", null);
- }
- }
-
- private static AuthComponentGeneral getAuthComponentGeneral() throws ConfigurationException {
- AuthComponentGeneral authgeneral = moaidconfig.getAuthComponentGeneral();
- if (authgeneral == null) {
- Logger.warn("Error in MOA-ID Configuration. No generalAuthConfiguration found");
- throw new ConfigurationException("config.02", null);
- }
- return authgeneral;
- }
-
- private static MOASP getMOASPConfig(AuthComponentGeneral authgeneral) throws ConfigurationException {
- MOASP moasp = authgeneral.getMOASP();
-
- if (moasp == null) {
- Logger.warn("Error in MOA-ID Configuration. No MOASP configuration found");
- throw new ConfigurationException("config.02", null);
- }
- return moasp;
- }
-
-}
+//
+///* (non-Javadoc)
+// * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getConfigurationWithPrefix(java.lang.String)
+// */
+//@Override
+//public Properties getConfigurationWithPrefix(String Prefix) {
+// // TODO Auto-generated method stub
+// return null;
+//}
+//
+///* (non-Javadoc)
+// * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getConfigurationWithKey(java.lang.String)
+// */
+//@Override
+//public String getConfigurationWithKey(String key) {
+// // TODO Auto-generated method stub
+// return null;
+//}
+//
+//}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java
new file mode 100644
index 000000000..38135b028
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java
@@ -0,0 +1,74 @@
+/*
+ * 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.config.auth;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.ConfigurationProvider;
+import at.gv.egovernment.moa.logging.Logger;
+
+/**
+ * @author tlenz
+ *
+ */
+public class AuthConfigurationProviderFactory {
+
+ /** Singleton instance. <code>null</code>, if none has been created. */
+ private static AuthConfiguration instance = null;;
+
+
+ public static synchronized AuthConfiguration getInstance()
+ throws ConfigurationException {
+
+ if (instance == null) {
+ reload();
+ }
+ return instance;
+ }
+
+ /**
+ * @return
+ * @throws ConfigurationException
+ */
+ public static AuthConfiguration reload() throws ConfigurationException {
+ String fileName = System.getProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME);
+ if (fileName == null) {
+ throw new ConfigurationException("config.01", null);
+ }
+ Logger.info("Loading MOA-ID-AUTH configuration " + fileName);
+
+ try {
+ URI fileURI = new URI(fileName);
+ instance = new PropertyBasedAuthConfigurationProvider(fileURI);
+
+ } catch (URISyntaxException e){
+ Logger.error("MOA-ID-Auth configuration file does not starts with file:/ as prefix.");
+ throw new ConfigurationException("config24", new Object[]{MOAIDAuthConstants.FILE_URI_PREFIX, fileName});
+
+ }
+ return instance;
+ }
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/ConfigurationToJSONConverter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/ConfigurationToJSONConverter.java
new file mode 100644
index 000000000..e1c1ac49e
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/ConfigurationToJSONConverter.java
@@ -0,0 +1,155 @@
+//package at.gv.egovernment.moa.id.config.auth;
+//
+//import java.beans.IntrospectionException;
+//import java.beans.Introspector;
+//import java.beans.PropertyDescriptor;
+//import java.lang.reflect.InvocationTargetException;
+//import java.lang.reflect.Method;
+//import java.util.Arrays;
+//import java.util.List;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.context.support.ClassPathXmlApplicationContext;
+//
+//import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
+//import at.gv.egovernment.moa.id.config.ConfigurationException;
+//import at.gv.egovernment.moa.id.config.ConfigurationProvider;
+//
+//import com.fasterxml.jackson.annotation.JsonIgnore;
+//import com.fasterxml.jackson.annotation.JsonProperty;
+//
+//public class ConfigurationToJSONConverter {
+//
+// @Autowired
+// NewAuthConfigurationProvider configProvider;
+//
+// @Autowired
+// MOAIDConfiguration configDataBase;
+//
+// public static void main(String[] args) {
+//
+// try {
+// ConfigurationToJSONConverter converter = new ConfigurationToJSONConverter(args[0]);
+// converter.writeConfigToJSONDB();
+// System.out.println("=====================================");
+// System.out.println("=====================================");
+// converter.readConfigFromDB();
+// System.out.println("=====================================");
+// System.out.println("=====================================");
+//
+// // otherwise the database connection is not initialized
+// JaxBAuthConfigurationProvider.getInstance();
+// List<String> methodNames = Arrays.asList("getAllOnlineApplications", "getAllUsers", "getMOAIDConfiguration");
+// converter.extractDataViaConfigurationDBRead(methodNames);
+// converter.readExtractedConfigurationDBReadData(methodNames);
+//
+// } catch (ConfigurationException e) {
+// e.printStackTrace();
+// System.out.println("Problems reading the configuration file in: " + System.getProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME));
+// System.exit(1);
+// }
+//
+// }
+//
+// public ConfigurationToJSONConverter(String pathToDBConfigPropertiesFile) throws ConfigurationException {
+//
+// System.getProperties().setProperty("location", "file:" + pathToDBConfigPropertiesFile);
+// ApplicationContext context = new ClassPathXmlApplicationContext("configuration.beans.xml");
+// AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory();
+// acbFactory.autowireBean(this);
+//
+// }
+//
+// public void extractDataViaConfigurationDBRead(List<String> methodNames) {
+// System.out.println("Start extracting");
+// // read objects from db and write to key-value
+// for (String name : methodNames) {
+// try {
+// Method method = ConfigurationDBRead.class.getMethod(name);
+// Object tmp = method.invoke(null, new Object[] {});
+// JsonProperty annotation = method.getAnnotation(JsonProperty.class);
+// if (annotation != null) {
+// configDataBase.set(annotation.value(), tmp);
+// } else {
+// System.out.println("Annotate Method with name: " + name);
+// }
+// } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
+// | InvocationTargetException e) {
+// System.out.println("Problems while extracting ConfigurationDBRead data.");
+// }
+// }
+// }
+//
+// public void readExtractedConfigurationDBReadData(List<String> methodNames) {
+// for (String name : methodNames) {
+// Object tmp = configDataBase.get(name);
+// System.out.println(">>> OBJECT: " + tmp);
+// }
+// }
+//
+// public void writeConfigToJSONDB() {
+//
+// try {
+// // find all getter methods
+// for (PropertyDescriptor pd : Introspector.getBeanInfo(NewAuthConfigurationProvider.class).getPropertyDescriptors()) {
+// // check if correct methods, and not annotated with @JsonIgnore
+// if ((pd.getReadMethod() != null)
+// && (!"class".equals(pd.getName()))
+// && (pd.getReadMethod().getAnnotation(JsonIgnore.class) == null)) {
+//
+// JsonProperty name = pd.getReadMethod().getAnnotation(JsonProperty.class);
+// // get result of get method
+// Object tmp;
+// try {
+// tmp = pd.getReadMethod().invoke(configProvider);
+// // convert result to JSON
+// if (name != null) {
+// configDataBase.set(name.value(), tmp);
+// } else {
+// System.out.println("CHECK if '" + pd.getDisplayName() + "' is NOT ANNOTATED");
+// }
+// } catch (IllegalAccessException | InvocationTargetException e) {
+// System.out.println("Problems while writing the configuration to the database.");
+// }
+// }
+// }
+//
+// // no static method handling needed
+//
+// } catch (IllegalArgumentException e) {
+// System.out.println("Problems while using reflection to get all getter methods.");
+// } catch (IntrospectionException e) {
+// System.out.println("Problems while using reflection to get all getter methods.");
+// }
+//
+// }
+//
+// public void readConfigFromDB() {
+// try {
+// // find all getter methods
+// for (PropertyDescriptor pd : Introspector.getBeanInfo(NewAuthConfigurationProvider.class)
+// .getPropertyDescriptors()) {
+// // check if correct methods, and not annotated with @JsonIgnore
+// if ((pd.getReadMethod() != null)
+// && (!"class".equals(pd.getName()))
+// && (pd.getReadMethod().getAnnotation(JsonIgnore.class) == null)) {
+// JsonProperty name = pd.getReadMethod().getAnnotation(JsonProperty.class);
+// // get result of get method
+// if (name != null) {
+// System.out.println(">>> OBJECT: " + configDataBase.get(name.value()));
+// } else {
+// System.out.println("CHECK if '" + pd.getDisplayName() + "' is NOT ANNOTATED");
+// }
+// }
+// }
+// } catch (IllegalArgumentException e) {
+// System.out.println("Problems while using reflection to get all getter methods.");
+// } catch (IntrospectionException e) {
+// System.out.println("Problems while using reflection to get all getter methods.");
+// }
+// }
+//
+//}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/IOAAuthParameters.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/IOAAuthParameters.java
index c336eb316..b68f42086 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/IOAAuthParameters.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/IOAAuthParameters.java
@@ -23,16 +23,14 @@
package at.gv.egovernment.moa.id.config.auth;
import java.security.PrivateKey;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
-import at.gv.egovernment.moa.id.config.auth.data.BPKDecryptionParameters;
+import at.gv.egovernment.moa.id.config.auth.data.SAML1ConfigurationParameters;
+import at.gv.egovernment.moa.id.config.stork.CPEPS;
+import at.gv.egovernment.moa.id.config.stork.StorkAttribute;
+import at.gv.egovernment.moa.id.config.stork.StorkAttributeProviderPlugin;
/**
* @author tlenz
@@ -45,13 +43,33 @@ public interface IOAAuthParameters {
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();
public String getTarget();
+ public String getTargetFriendlyName();
+
public boolean isInderfederationIDP();
public boolean isSTORKPVPGateway();
@@ -66,34 +84,46 @@ public interface IOAAuthParameters {
*/
public String getKeyBoxIdentifier();
+ public SAML1ConfigurationParameters getSAML1Parameter();
+
/**
- * @return the transformsInfos
+ * 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> getTransformsInfos();
-
- public OASAML1 getSAML1Parameter();
-
- public OAPVP2 getPVP2Parameter();
+ public List<String> getTemplateURL();
+
/**
- * @return the templateURL
+ * Return the additional AuthBlock text for this online application
+ *
+ * @return authblock text {String} or null if no text is configured
*/
- public List<TemplateType> getTemplateURL();
-
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();
- public String getSingleLogOutURL();
-
/**
- * @return the mandateProfiles
+ * 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();
@@ -117,20 +147,25 @@ public interface IOAAuthParameters {
public Integer getQaaLevel();
- /**
- * @return the requestedAttributes
- */
- public List<OAStorkAttribute> getRequestedAttributes();
-
public boolean isRequireConsentForStorkAttributes();
- public List<AttributeProviderPlugin> getStorkAPs();
+ /**
+ * 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();
- public List<CPEPS> getPepsList();
+ /**
+ * Return a {Collection} of configured STORK CPEPS
+ *
+ * @return {Collection<CPEPS>} maybe empty but never null
+ */
+ public Collection<CPEPS> getPepsList();
public String getIDPAttributQueryServiceURL();
@@ -153,6 +188,9 @@ public interface IOAAuthParameters {
List<String> getTestCredentialOIDs();
+ boolean isUseIDLTestTrustStore();
+ boolean isUseAuthBlockTestTestStore();
+
PrivateKey getBPKDecBpkDecryptionKey();
/**
@@ -164,5 +202,14 @@ public interface IOAAuthParameters {
* @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/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java
index 933dddb31..fdd125156 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java
@@ -47,136 +47,205 @@
package at.gv.egovernment.moa.id.config.auth;
import java.io.IOException;
+import java.io.Serializable;
import java.security.PrivateKey;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.lang.SerializationUtils;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BKUSelectionCustomizationType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.InterfederationGatewayType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.InterfederationIDPType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Mandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MandatesProfileNameItem;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TestCredentials;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
-import at.gv.egovernment.moa.id.config.ConfigurationUtils;
-import at.gv.egovernment.moa.id.config.OAParameter;
+import at.gv.egovernment.moa.id.commons.MOAIDConstants;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.id.commons.validation.TargetValidator;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.auth.data.BPKDecryptionParameters;
+import at.gv.egovernment.moa.id.config.auth.data.SAML1ConfigurationParameters;
+import at.gv.egovernment.moa.id.config.stork.CPEPS;
+import at.gv.egovernment.moa.id.config.stork.STORKConfig;
+import at.gv.egovernment.moa.id.config.stork.StorkAttribute;
+import at.gv.egovernment.moa.id.config.stork.StorkAttributeProviderPlugin;
import at.gv.egovernment.moa.id.data.EncryptedData;
import at.gv.egovernment.moa.id.util.ConfigurationEncrytionUtil;
import at.gv.egovernment.moa.id.util.FormBuildUtils;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.MiscUtil;
+
+
/**
* Configuration parameters belonging to an online application,
* to use with the MOA ID Auth component.
*
- * @author Stefan Knirsch
- * @version $Id$
- */
-/**
- *
- *
- * @author Harald Bratko
+ * @author Thomas Lenz
*/
-public class OAAuthParameter extends OAParameter implements IOAAuthParameters {
-
- private AuthComponentOA oa_auth;
- private String keyBoxIdentifier;
- private InterfederationIDPType inderfederatedIDP = null;
- private InterfederationGatewayType interfederatedGateway = null;
+public class OAAuthParameter implements IOAAuthParameters, Serializable{
- public OAAuthParameter(OnlineApplication oa) {
- super(oa);
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6522544229837934376L;
+
+ final public static String DEFAULT_KEYBOXIDENTIFIER = "SecureSignatureKeypair";
- this.oa_auth = oa.getAuthComponentOA();
-
- this.keyBoxIdentifier = oa.getKeyBoxIdentifier().value();
+ private Map<String, String> oaConfiguration;
- this.inderfederatedIDP = oa.getInterfederationIDP();
- this.interfederatedGateway = oa.getInterfederationGateway();
+ public OAAuthParameter(final Map<String, String> oa) {
+ this.oaConfiguration = oa;
}
+ public Map<String, String> getFullConfiguration() {
+ return Collections.unmodifiableMap(this.oaConfiguration);
+ }
+
+ public String getConfigurationValue(String key) {
+ return this.oaConfiguration.get(key);
+ }
+
+
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getIdentityLinkDomainIdentifier()
*/
@Override
public String getIdentityLinkDomainIdentifier() {
+ String type = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE);
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE);
+ if (MiscUtil.isNotEmpty(type) && MiscUtil.isNotEmpty(value)) {
+ if (MOAIDConstants.IDENIFICATIONTYPE_STORK.equals(type)) {
+ return MOAIDConstants.PREFIX_STORK + "AT" + "+" + value;
+
+ } else {
+ return MOAIDConstants.PREFIX_WPBK + type + "+" + value;
+
+ }
+ }
- IdentificationNumber idnumber = oa_auth.getIdentificationNumber();
- if (idnumber != null)
- return idnumber.getValue();
-
return null;
}
/* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getKeyBoxIdentifier()
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getIdentityLinkDomainIdentifierType()
*/
@Override
-public String getKeyBoxIdentifier() {
+public String getIdentityLinkDomainIdentifierType() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE);
+ if (MiscUtil.isNotEmpty(value))
+ return MOAIDConfigurationConstants.BUSINESSSERVICENAMES.get(value);
- return keyBoxIdentifier;
+ else
+ return null;
+}
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTarget()
+ */
+@Override
+public String getTarget() {
+ if (Boolean.parseBoolean(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_OWN)))
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET);
+
+ else {
+ if (Boolean.parseBoolean(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_SUB))) {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET)
+ + "-"
+ + oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB);
+
+ } else {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET);
+ }
+ }
}
/* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTransformsInfos()
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTargetFriendlyName()
*/
@Override
-public List<String> getTransformsInfos() {
+public String getTargetFriendlyName() {
+ if (Boolean.parseBoolean(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_OWN)))
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_NAME);
+
+ else
+ return TargetValidator.getTargetFriendlyName(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET));
+
+}
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getKeyBoxIdentifier()
+ */
+@Override
+public String getKeyBoxIdentifier() {
+ String keyBoxId = oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_BKU_KEYBOXIDENTIFIER);
+ if (MiscUtil.isNotEmpty(keyBoxId))
+ return keyBoxId;
+ else
+ return DEFAULT_KEYBOXIDENTIFIER;
- List<TransformsInfoType> transformations = oa_auth.getTransformsInfo();
- return ConfigurationUtils.getTransformInfos(transformations);
}
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getSAML1Parameter()
*/
@Override
- public OASAML1 getSAML1Parameter() {
- return oa_auth.getOASAML1();
- }
-
- /* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getPVP2Parameter()
- */
- @Override
- public OAPVP2 getPVP2Parameter() {
- return oa_auth.getOAPVP2();
+ public SAML1ConfigurationParameters getSAML1Parameter() {
+ SAML1ConfigurationParameters returnValue = new SAML1ConfigurationParameters();
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_ENABLED))
+ returnValue.setActive(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_ENABLED)));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_AUTHBLOCK))
+ returnValue.setProvideAuthBlock(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_AUTHBLOCK)));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_IDL))
+ returnValue.setProvideIdl(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_IDL)));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID))
+ returnValue.setProvideBaseId(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID)));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_CERTIFICATE))
+ returnValue.setProvideCertificate(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_CERTIFICATE)));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_MANDATE))
+ returnValue.setProvideMandate(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_MANDATE)));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_RETURNERROR))
+ returnValue.setProvideAllErrors(
+ Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_RETURNERROR)));
+
+ return returnValue;
}
-
+
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTemplateURL()
*/
@Override
- public List<TemplateType> getTemplateURL() {
- TemplatesType templates = oa_auth.getTemplates();
-
- if (templates != null) {
- if (templates.getTemplate() != null) {
- return templates.getTemplate();
- }
- }
- return null;
+ public List<String> getTemplateURL() {
+ List<String> list = new ArrayList<String>();
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE))
+ list.add(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE))
+ list.add(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE))
+ list.add(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE));
+
+ return list;
}
/* (non-Javadoc)
@@ -184,12 +253,8 @@ public List<String> getTransformsInfos() {
*/
@Override
public String getAditionalAuthBlockText() {
- TemplatesType templates = oa_auth.getTemplates();
-
- if (templates != null) {
- return templates.getAditionalAuthBlockText();
- }
- return null;
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCKTEXT);
+
}
/* (non-Javadoc)
@@ -197,16 +262,17 @@ public List<String> getTransformsInfos() {
*/
@Override
public String getBKUURL(String bkutype) {
- BKUURLS bkuurls = oa_auth.getBKUURLS();
- if (bkuurls != null) {
- if (bkutype.equals(ONLINEBKU))
- return bkuurls.getOnlineBKU();
- else if (bkutype.equals(HANDYBKU))
- return bkuurls.getHandyBKU();
- else if (bkutype.equals(LOCALBKU))
- return bkuurls.getLocalBKU();
+ if (bkutype.equals(ONLINEBKU)) {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE);
+
+ } else if (bkutype.equals(HANDYBKU)) {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY);
+
+ } else if (bkutype.equals(LOCALBKU)) {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL);
}
+
Logger.warn("BKU Type does not match: "
+ ONLINEBKU + " or " + HANDYBKU + " or " + LOCALBKU);
return null;
@@ -216,19 +282,18 @@ public List<String> getTransformsInfos() {
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getBKUURL()
*/
@Override
- public List<String> getBKUURL() {
- BKUURLS bkuurls = oa_auth.getBKUURLS();
-
+ public List<String> getBKUURL() {
List<String> list = new ArrayList<String>();
- if (bkuurls == null) {
- Logger.warn("BKU Type does not match: "
- + ONLINEBKU + " or " + HANDYBKU + " or " + LOCALBKU);
- } else {
- list.add(bkuurls.getOnlineBKU());
- list.add(bkuurls.getHandyBKU());
- list.add(bkuurls.getLocalBKU());
- }
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE))
+ list.add(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY))
+ list.add(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY));
+
+ if (oaConfiguration.containsKey(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL))
+ list.add(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL));
+
return list;
}
@@ -238,11 +303,14 @@ public List<String> getTransformsInfos() {
*/
@Override
public boolean useSSO() {
- OASSO sso = oa_auth.getOASSO();
- if (sso != null)
- return sso.isUseSSO();
- else
+ try {
+ return Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_ENABLED));
+
+ } catch (Exception e) {
+ Logger.warn("Use SSO configuration parameter is not parseable.", e);
return false;
+ }
+
}
/* (non-Javadoc)
@@ -250,86 +318,48 @@ public List<String> getTransformsInfos() {
*/
@Override
public boolean useSSOQuestion() {
- OASSO sso = oa_auth.getOASSO();
- if (sso != null)
- return sso.isAuthDataFrame();
- else
+ try {
+ return Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_USERREQUEST));
+
+ } catch (Exception e) {
+ Logger.warn("SSO user question configuration parameter is not parseable.", e);
return true;
-
+ }
}
- /* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getSingleLogOutURL()
- */
- @Override
- public String getSingleLogOutURL() {
- OASSO sso = oa_auth.getOASSO();
- if (sso != null)
- return sso.getSingleLogOutURL();
- else
- return null;
- }
-
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getMandateProfiles()
*/
@Override
public List<String> getMandateProfiles() {
+ String profileConfig = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES);
+
+ if (MiscUtil.isNotEmpty(profileConfig)) {
+ List<String> list = new ArrayList<String>();
+ String profilesArray[] = profileConfig.split(",");
+ for(int i = 0; i < profilesArray.length; i++) {
+ list.add(profilesArray[i].trim());
+
+ }
+ return list;
+
+ }
- Mandates mandates = oa_auth.getMandates();
-
- List<String> list = new ArrayList<String>();
-
- if (mandates != null) {
- String oldProfilList = mandates.getProfiles();
-
- List<MandatesProfileNameItem> profileList = mandates.getProfileNameItems();
- for (MandatesProfileNameItem el : profileList) {
- list.add(el.getItem());
-
- }
-
- //only for RC1
- if (MiscUtil.isNotEmpty(oldProfilList)) {
- String profilesArray[] = oldProfilList.split(",");
- for(int i = 0; i < profilesArray.length; i++) {
- list.add(profilesArray[i].trim());
- }
- }
-
- return list;
-
- } else
- return null;
-}
-
-/* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getIdentityLinkDomainIdentifierType()
- */
-@Override
-public String getIdentityLinkDomainIdentifierType() {
- IdentificationNumber idnumber = oa_auth.getIdentificationNumber();
- if (idnumber != null)
- return idnumber.getType();
-
return null;
}
-
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isShowMandateCheckBox()
*/
@Override
public boolean isShowMandateCheckBox() {
- TemplatesType templates = oa_auth.getTemplates();
- if (templates != null) {
- BKUSelectionCustomizationType bkuselection = templates.getBKUSelectionCustomization();
- if (bkuselection != null) {
- if (bkuselection.isMandateLoginButton() != null)
- return bkuselection.isMandateLoginButton();
- }
+ try {
+ return Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_USE));
+
+ } catch (Exception e) {
+ Logger.warn("Enable mandates configuration parameter is not parseable.", e);
+ return true;
}
- return true;
}
/* (non-Javadoc)
@@ -337,15 +367,13 @@ public boolean isShowMandateCheckBox() {
*/
@Override
public boolean isOnlyMandateAllowed() {
- TemplatesType templates = oa_auth.getTemplates();
- if (templates != null) {
- BKUSelectionCustomizationType bkuselection = templates.getBKUSelectionCustomization();
- if (bkuselection != null) {
- if (bkuselection.isOnlyMandateLoginAllowed() != null)
- return bkuselection.isOnlyMandateLoginAllowed();
- }
+ try {
+ return Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_ONLY));
+
+ } catch (Exception e) {
+ Logger.warn("Use ONLY mandates configuration parameter is not parseable.", e);
+ return false;
}
- return false;
}
/* (non-Javadoc)
@@ -354,9 +382,10 @@ public boolean isOnlyMandateAllowed() {
@Override
public boolean isShowStorkLogin() {
try {
- return oa_auth.getOASTORK().isStorkLogonEnabled();
-
- } catch (NullPointerException e) {
+ return Boolean.valueOf(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ENABLED));
+
+ } catch (Exception e) {
+ Logger.warn("Enable STORK login configuration parameter is not parseable.", e);
return false;
}
}
@@ -365,54 +394,46 @@ public boolean isOnlyMandateAllowed() {
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getFormCustomizaten()
*/
@Override
-public Map<String, String> getFormCustomizaten() {
- TemplatesType templates = oa_auth.getTemplates();
-
+public Map<String, String> getFormCustomizaten() {
Map<String, String> map = new HashMap<String, String>();
map.putAll(FormBuildUtils.getDefaultMap());
- if (templates != null) {
- BKUSelectionCustomizationType bkuselection = templates.getBKUSelectionCustomization();
- if (bkuselection != null) {
- if (MiscUtil.isNotEmpty(bkuselection.getBackGroundColor()))
- map.put(FormBuildUtils.MAIN_BACKGROUNDCOLOR, bkuselection.getBackGroundColor());
-
- if (MiscUtil.isNotEmpty(bkuselection.getButtonBackGroundColor()))
- map.put(FormBuildUtils.BUTTON_BACKGROUNDCOLOR, bkuselection.getButtonBackGroundColor());
-
- if (MiscUtil.isNotEmpty(bkuselection.getButtonBackGroundColorFocus()))
- map.put(FormBuildUtils.BUTTON_BACKGROUNDCOLOR_FOCUS, bkuselection.getButtonBackGroundColorFocus());
-
- if (MiscUtil.isNotEmpty(bkuselection.getButtonFontColor()))
- map.put(FormBuildUtils.BUTTON_COLOR, bkuselection.getButtonFontColor());
-
- if (MiscUtil.isNotEmpty(bkuselection.getFontType()))
- map.put(FormBuildUtils.FONTFAMILY, bkuselection.getFontType());
-
- if (MiscUtil.isNotEmpty(bkuselection.getFrontColor()))
- map.put(FormBuildUtils.MAIN_COLOR, bkuselection.getFrontColor());
-
- if (MiscUtil.isNotEmpty(bkuselection.getHeaderBackGroundColor()))
- map.put(FormBuildUtils.HEADER_BACKGROUNDCOLOR, bkuselection.getHeaderBackGroundColor());
-
- if (MiscUtil.isNotEmpty(bkuselection.getHeaderFrontColor()))
- map.put(FormBuildUtils.HEADER_COLOR, bkuselection.getHeaderFrontColor());
-
- if (MiscUtil.isNotEmpty(bkuselection.getHeaderText()))
- map.put(FormBuildUtils.HEADER_TEXT, bkuselection.getHeaderText());
-
- if (MiscUtil.isNotEmpty(bkuselection.getAppletRedirectTarget()))
- map.put(FormBuildUtils.REDIRECTTARGET, bkuselection.getAppletRedirectTarget());
-
- if (MiscUtil.isNotEmpty(bkuselection.getAppletHeight()))
- map.put(FormBuildUtils.APPLET_HEIGHT, bkuselection.getAppletHeight());
-
- if (MiscUtil.isNotEmpty(bkuselection.getAppletWidth()))
- map.put(FormBuildUtils.APPLET_WIDTH, bkuselection.getAppletWidth());
-
- }
- }
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR)))
+ map.put(FormBuildUtils.MAIN_BACKGROUNDCOLOR, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR)))
+ map.put(FormBuildUtils.BUTTON_BACKGROUNDCOLOR, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS)))
+ map.put(FormBuildUtils.BUTTON_BACKGROUNDCOLOR_FOCUS, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR)))
+ map.put(FormBuildUtils.BUTTON_COLOR, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE)))
+ map.put(FormBuildUtils.FONTFAMILY, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR)))
+ map.put(FormBuildUtils.MAIN_COLOR, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR));
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR)))
+ map.put(FormBuildUtils.HEADER_BACKGROUNDCOLOR, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR)))
+ map.put(FormBuildUtils.HEADER_COLOR, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT)))
+ map.put(FormBuildUtils.HEADER_TEXT, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET)))
+ map.put(FormBuildUtils.REDIRECTTARGET, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT)))
+ map.put(FormBuildUtils.APPLET_HEIGHT, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT));
+
+ if (MiscUtil.isNotEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH)))
+ map.put(FormBuildUtils.APPLET_WIDTH, oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH));
+
return map;
}
@@ -421,21 +442,75 @@ public Map<String, String> getFormCustomizaten() {
*/
@Override
public Integer getQaaLevel() {
- if (oa_auth.getOASTORK() != null &&
- oa_auth.getOASTORK().getQaa() != null &&
- oa_auth.getOASTORK().getQaa() >= 1 &&
- oa_auth.getOASTORK().getQaa() <= 4)
- return oa_auth.getOASTORK().getQaa();
- else
+ try {
+ Integer storkQAALevel = Integer.parseInt(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL));
+
+ if (storkQAALevel >= 1 &&
+ storkQAALevel <= 4)
+ return storkQAALevel;
+
+ else {
+ Logger.info("STORK minimal QAA level is not in a valid range. Use minimal QAA 4");
return 4;
+
+ }
+
+ } catch (NumberFormatException e) {
+ Logger.warn("STORK minimal QAA level is not a number.", e);
+ return 4;
+
+ }
}
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getRequestedAttributes()
*/
@Override
-public List<OAStorkAttribute> getRequestedAttributes() {
- return oa_auth.getOASTORK().getOAAttributes();
+public Collection<StorkAttribute> getRequestedSTORKAttributes() {
+ Map<String, Integer> attrMap = new HashMap<String, Integer>();
+ Map<String, StorkAttribute> resultMap = new HashMap<String, StorkAttribute>();
+
+ Set<String> configKeys = oaConfiguration.keySet();
+ for (String el : configKeys) {
+ if (el.startsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST);
+ if (!attrMap.containsKey(index)) {
+ String isRequested = oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED);
+
+ if (MiscUtil.isNotEmpty(isRequested) && Boolean.parseBoolean(isRequested)) {
+ StorkAttribute attr = new StorkAttribute(
+ oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME),
+ Boolean.valueOf(oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY)));
+ attrMap.put(index, 0);
+ resultMap.put(attr.getName(), attr);
+ }
+ }
+ }
+ }
+
+ //add mandatory attributes from general config
+ try {
+ for (StorkAttribute el : AuthConfigurationProviderFactory.getInstance().getStorkConfig().getStorkAttributes()) {
+ if (el.getMandatory())
+ resultMap.put(el.getName(), el);
+
+ }
+
+ } catch (Exception e) {
+ Logger.warn("Mandatory STORK attributes can not added.", e);
+
+ }
+
+ return resultMap.values();
}
/* (non-Javadoc)
@@ -446,12 +521,17 @@ public boolean isRequireConsentForStorkAttributes() {
try{
if (isSTORKPVPGateway())
return false;
+
+ if (MiscUtil.isEmpty(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_REQUIRECONSENT))) {
+ Logger.info("isRequireConsentForStorkAttributes() is empty, returning default value 'true'");
+ return true;
+
+ }
- return oa_auth.getOASTORK().isRequireConsent();
+ return Boolean.parseBoolean(oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_REQUIRECONSENT));
}catch(Exception e)
{
- e.printStackTrace();
- Logger.warn("isRequireConsentForStorkAttributes() failed, returning default value 'true'");
+ Logger.warn("isRequireConsentForStorkAttributes() failed, returning default value 'true'", e);
return true;
}
}
@@ -460,14 +540,32 @@ public boolean isRequireConsentForStorkAttributes() {
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getStorkAPs()
*/
@Override
-public List<AttributeProviderPlugin> getStorkAPs() {
- if (oa_auth.getOASTORK() != null &&
- oa_auth.getOASTORK().getAttributeProviders() != null)
- return oa_auth.getOASTORK().getAttributeProviders();
-
- else
- return new ArrayList<AttributeProviderPlugin>();
-
+public Collection<StorkAttributeProviderPlugin> getStorkAPs() {
+ Map<String, StorkAttributeProviderPlugin> pluginMap = new HashMap<String, StorkAttributeProviderPlugin>();
+ Set<String> configKeys = oaConfiguration.keySet();
+ for (String el : configKeys) {
+ if (el.startsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST);
+ if (!pluginMap.containsKey(index)) {
+ StorkAttributeProviderPlugin attr = new StorkAttributeProviderPlugin(
+ oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME),
+ oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_URL),
+ oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_ATTRIBUTES));
+ pluginMap.put(index, attr);
+ }
+ }
+ }
+
+ return pluginMap.values();
}
/* (non-Javadoc)
@@ -475,11 +573,16 @@ public List<AttributeProviderPlugin> getStorkAPs() {
*/
@Override
public byte[] getBKUSelectionTemplate() {
-
- TemplatesType templates = oa_auth.getTemplates();
- if (templates != null && templates.getBKUSelectionTemplate() != null) {
- return templates.getBKUSelectionTemplate().getTransformation();
-
+ try {
+ String bkuSelectionTemplateBase64 = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA);
+ if (MiscUtil.isNotEmpty(bkuSelectionTemplateBase64)) {
+ return Base64Utils.decode(bkuSelectionTemplateBase64, false);
+
+ }
+
+ } catch (Exception e) {
+ Logger.warn("OA specific BKU selection template is not decodeable", e);
+
}
return null;
@@ -490,11 +593,16 @@ public byte[] getBKUSelectionTemplate() {
*/
@Override
public byte[] getSendAssertionTemplate() {
-
- TemplatesType templates = oa_auth.getTemplates();
- if (templates != null && templates.getSendAssertionTemplate() != null) {
- return templates.getSendAssertionTemplate().getTransformation();
-
+ try {
+ String bkuSelectionTemplateBase64 = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA);
+ if (MiscUtil.isNotEmpty(bkuSelectionTemplateBase64)) {
+ return Base64Utils.decode(bkuSelectionTemplateBase64, false);
+
+ }
+
+ } catch (Exception e) {
+ Logger.warn("OA specific BKU selection template is not decodeable", e);
+
}
return null;
@@ -504,8 +612,41 @@ public byte[] getSendAssertionTemplate() {
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getPepsList()
*/
@Override
-public List<CPEPS> getPepsList() {
- return new ArrayList<CPEPS>(oa_auth.getOASTORK().getCPEPS());
+public Collection<CPEPS> getPepsList() {
+ Map<String, CPEPS> cPEPSMap = new HashMap<String, CPEPS>();
+ try {
+ STORKConfig availableSTORKConfig = AuthConfigurationProviderFactory.getInstance().getStorkConfig();
+ if (availableSTORKConfig != null) {
+ Set<String> configKeys = oaConfiguration.keySet();
+
+ for (String el : configKeys) {
+ if (el.startsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST);
+ if (!cPEPSMap.containsKey(index)) {
+ if (Boolean.parseBoolean(oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED))) {
+ CPEPS availableCPEPS = availableSTORKConfig.getCPEPS(
+ oaConfiguration.get(
+ MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE));
+
+ if (availableCPEPS != null)
+ cPEPSMap.put(index, availableCPEPS);
+ }
+ }
+ }
+ }
+ }
+
+ } catch (ConfigurationException e) {
+ Logger.error("MOA-ID configuration is not accessable.", e);
+
+ }
+
+ return cPEPSMap.values();
}
/* (non-Javadoc)
@@ -513,52 +654,53 @@ public List<CPEPS> getPepsList() {
*/
@Override
public String getIDPAttributQueryServiceURL() {
- if (inderfederatedIDP != null)
- return inderfederatedIDP.getAttributeQueryURL();
-
- else
- return null;
-
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_ATTRIBUTQUERY_URL);
+
}
@Override
public boolean isInboundSSOInterfederationAllowed() {
- if (inderfederatedIDP != null)
- return inderfederatedIDP.isInboundSSO();
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_INBOUND);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
else
return false;
}
@Override
public boolean isOutboundSSOInterfederationAllowed() {
- if (inderfederatedIDP != null)
- return inderfederatedIDP.isOutboundSSO();
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_OUTBOUND);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
else
return false;
}
@Override
public boolean isPassivRequestUsedForInterfederation() {
- if (inderfederatedIDP != null)
- return inderfederatedIDP.isPerformPassivRequest().booleanValue();
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_PASSIVEREQUEST);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
else
- return false;
+ return false;
}
@Override
public boolean isPerformLocalAuthenticationOnInterfederationError() {
- if (inderfederatedIDP != null)
- return inderfederatedIDP.isPerformLocalAuthenticationOnError().booleanValue();
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_LOCALAUTHONERROR);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
else
return false;
}
@Override
public boolean isInterfederationSSOStorageAllowed() {
- if (inderfederatedIDP != null)
- return inderfederatedIDP.isStoreSSOSession().booleanValue();
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_STORE);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
else
- return false;
+ return false;
}
public boolean isIDPPublicService() {
@@ -568,11 +710,7 @@ public boolean isIDPPublicService() {
public String getSTORKPVPForwardEntity() {
- if (interfederatedGateway != null) {
- return interfederatedGateway.getForwardIDPIdentifier();
-
- } else
- return null;
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER);
}
@@ -581,11 +719,11 @@ public String getSTORKPVPForwardEntity() {
*/
@Override
public boolean isTestCredentialEnabled() {
- TestCredentials testing = oa_auth.getTestCredentials();
- if (testing != null && testing.isEnableTestCredentials())
- return true;
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_ENABLED);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
else
- return false;
+ return false;
}
@@ -594,10 +732,17 @@ public boolean isTestCredentialEnabled() {
*/
@Override
public List<String> getTestCredentialOIDs() {
- TestCredentials testing = oa_auth.getTestCredentials();
- if (testing != null && testing.getCredentialOID().size() > 0)
- return testing.getCredentialOID();
- else
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_OIDs);
+ if (MiscUtil.isNotEmpty(value)) {
+ List<String> list = new ArrayList<String>();
+ String profilesArray[] = value.split(",");
+ for(int i = 0; i < profilesArray.length; i++) {
+ list.add(profilesArray[i].trim());
+
+ }
+ return list;
+
+ } else
return null;
}
@@ -610,8 +755,11 @@ public PrivateKey getBPKDecBpkDecryptionKey() {
try {
EncryptedData encdata = new EncryptedData(
- oa_auth.getEncBPKInformation().getBPKDecryption().getKeyInformation(),
- oa_auth.getEncBPKInformation().getBPKDecryption().getIv());
+ Base64Utils.decode(
+ oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_BLOB), false),
+ Base64Utils.decode(
+ oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_IV), false));
+
byte[] serializedData = ConfigurationEncrytionUtil.getInstance().decrypt(encdata);
BPKDecryptionParameters data =
(BPKDecryptionParameters) SerializationUtils.deserialize(serializedData);
@@ -619,15 +767,151 @@ public PrivateKey getBPKDecBpkDecryptionKey() {
return data.getPrivateKey();
} catch (BuildException e) {
- // TODO Auto-generated catch block
Logger.error("Can not decrypt key information for bPK decryption", e);
} catch (NullPointerException e) {
Logger.error("No keyInformation found for bPK decryption");
- }
+ } catch (IOException e) {
+ Logger.error("Can not decode key information for bPK decryption.", e);
+ }
+
return null;
}
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getPublicURLPrefix()
+ */
+@Override
+public String getPublicURLPrefix() {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+}
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getBusinessService()
+ */
+@Override
+public boolean getBusinessService() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
+ else
+ return true;
+}
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isInderfederationIDP()
+ */
+@Override
+public boolean isInderfederationIDP() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES);
+ return MOAIDConfigurationConstants.PREFIX_IIDP.equals(value);
+
+}
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isSTORKPVPGateway()
+ */
+@Override
+public boolean isSTORKPVPGateway() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES);
+ return MOAIDConfigurationConstants.PREFIX_GATEWAY.equals(value);
+}
+
+
+
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getFriendlyName()
+ */
+@Override
+public String getFriendlyName() {
+ return oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME);
+}
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getOaType()
+ */
+@Override
+public String getOaType() {
+ if (getBusinessService())
+ return "businessService";
+ else
+ return "publicService";
+}
+
+
+/**
+ *
+ * @return true/false if bPK or wbPK should not be visible in AuthBlock
+ */
+public boolean isRemovePBKFromAuthBlock() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCK_REMOVEBPK);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
+ else
+ return false;
+}
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getReversionsLoggingEventCodes()
+ */
+@Override
+public List<Integer> getReversionsLoggingEventCodes() {
+ String isEnabled = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED);
+ if (MiscUtil.isNotEmpty(isEnabled) && Boolean.parseBoolean(isEnabled)) {
+ String eventCodes = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES);
+ if (MiscUtil.isNotEmpty(eventCodes)) {
+ String[] codes = eventCodes.split(",");
+ List<Integer> result = new ArrayList<Integer>();
+ for (String el : codes) {
+ try {
+ result.add(Integer.valueOf(el.trim()));
+
+ } catch (NumberFormatException e) {
+ Logger.warn("EventCode can not parsed to Integer.", e);
+
+ }
+ }
+ if (!result.isEmpty())
+ return result;
+
+ }
+ }
+ return null;
+}
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isUseIDLTestTrustStore()
+ */
+@Override
+public boolean isUseIDLTestTrustStore() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTIDLTRUSTSTORE);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
+ else
+ return false;
+}
+
+
+/* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isUseAuthBlockTestTestStore()
+ */
+@Override
+public boolean isUseAuthBlockTestTestStore() {
+ String value = oaConfiguration.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTAUTHBLOCKTRUSTSTORE);
+ if (MiscUtil.isNotEmpty(value))
+ return Boolean.parseBoolean(value);
+ else
+ return false;
+}
+
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java
new file mode 100644
index 000000000..702cd3ce3
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java
@@ -0,0 +1,1113 @@
+package at.gv.egovernment.moa.id.config.auth;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.ConfigurationProviderImpl;
+import at.gv.egovernment.moa.id.config.ConfigurationUtils;
+import at.gv.egovernment.moa.id.config.ConnectionParameter;
+import at.gv.egovernment.moa.id.config.ConnectionParameterForeign;
+import at.gv.egovernment.moa.id.config.ConnectionParameterMOASP;
+import at.gv.egovernment.moa.id.config.ConnectionParameterMandate;
+import at.gv.egovernment.moa.id.config.auth.data.ProtocolAllowed;
+import at.gv.egovernment.moa.id.config.stork.STORKConfig;
+import at.gv.egovernment.moa.id.protocols.pvp2x.PVP2XProtocol;
+import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * A class providing access to the Auth Part of the MOA-ID configuration data.
+ */
+public class PropertyBasedAuthConfigurationProvider extends ConfigurationProviderImpl implements AuthConfiguration {
+
+
+ private static final boolean TRUST_MANAGER_REVOCATION_CHECKING_DEFAULT = true;
+
+ private MOAIDConfiguration configuration;
+ private final Properties properties = new Properties();
+ private ApplicationContext context = null;
+
+ public PropertyBasedAuthConfigurationProvider() {
+
+ }
+
+ /**
+ * The constructor with path to a properties file as argument.
+ *
+ * @param fileName the path to the properties file
+ * @throws ConfigurationException if an error occurs during loading the properties file.
+ */
+ public PropertyBasedAuthConfigurationProvider(URI fileName) throws ConfigurationException {
+ File propertiesFile = new File(fileName);
+ rootConfigFileDir = propertiesFile.getParent();
+ try {
+ rootConfigFileDir = new File(rootConfigFileDir).toURI().toURL().toString();
+
+ } catch (MalformedURLException t) {
+ throw new ConfigurationException("config.03", null, t);
+
+ }
+
+ FileInputStream in = null;
+ try {
+ in = new FileInputStream(propertiesFile);
+ properties.load(in);
+ super.initial(properties);
+
+// JPAPropertiesWithJavaConfig.setLocalProperties(configProp);
+// System.getProperties().setProperty("location", "file:" + fileName);
+ context = new ClassPathXmlApplicationContext(
+ new String[] { "moaid.configuration.beans.xml",
+ "configuration.beans.xml"
+ });
+ AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory();
+ acbFactory.autowireBean(this);
+
+ } catch (FileNotFoundException e) {
+ throw new ConfigurationException("config.03", null, e);
+
+ } catch (IOException e) {
+ throw new ConfigurationException("config.03", null, e);
+
+ } catch (org.opensaml.xml.ConfigurationException e) {
+ Logger.error("OpenSAML initilalization FAILED. ", e);
+ throw new ConfigurationException("config.23", null, e);
+
+ } catch (Exception e) {
+ Logger.error("General error during start-up process.", e);
+ throw new ConfigurationException("init.02", null, e);
+
+
+ } finally {
+ if (in != null)
+ try {
+ in.close();
+
+ } catch (IOException e) {
+ Logger.warn("Close MOA-ID-Auth configuration file FAILED.", e);
+
+ }
+ }
+ }
+
+ /**
+ * Set the {@link Configuration} for this class.
+ * @param configuration the configuration
+ */
+ @Autowired
+ public void setConfiguration(MOAIDConfiguration configuration) {
+ this.configuration = configuration;
+ }
+
+ /**
+ * Get the properties.
+ * @return the properties
+ */
+ private Properties getProperties() {
+ return properties;
+ }
+
+ /**
+ * Method that avoids iterating over a {@link Collection} of type {@code T} which is actual {@code null}.
+ * @param item the collection
+ * @return the given {@link Collection} {@code item} if it is not {@code null}, or an empty {@link List} otherwise.
+ */
+ @SuppressWarnings("unchecked")
+ public static <T extends Iterable<?>> T nullGuard(T item) {
+ if (item == null) {
+ return (T) Collections.emptyList();
+ } else {
+ return item;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getPropertiesWithPrefix(java.lang.String)
+ */
+ @Override
+ public Map<String, String> getConfigurationWithPrefix(String Prefix) {
+ try {
+ return configuration.getPropertySubset(Prefix);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Loading property with Prefix " + Prefix + " FAILED.", e);
+ return new HashMap<String, String>();
+
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getPropertiesWithPrefix(java.lang.String)
+ */
+ @Override
+ public Map<String, String> getConfigurationWithWildCard(String key) {
+ try {
+ return configuration.searchPropertiesWithWildcard(key);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Loading property with searchKey " + key + " FAILED.", e);
+ return new HashMap<String, String>();
+
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getPropertyWithKey(java.lang.String)
+ */
+ @Override
+ public String getConfigurationWithKey(String key) {
+ try {
+ return configuration.getStringValue(key).trim();
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the general pvp2 properties config. NOTE: may be empty but never {@code null}.
+ * @return the general pvp2 properties config.
+ */
+ public Properties getGeneralPVP2ProperiesConfig() {
+ return this.getGeneralProperiesConfig("protocols.pvp2.");
+ }
+
+ /**
+ * Returns the general oauth20 properties config. NOTE: may be empty but never {@code null}.
+ * @return the general oauth20 properties config.
+ */
+ public Properties getGeneralOAuth20ProperiesConfig() {
+ return this.getGeneralProperiesConfig("protocols.oauth20.");
+ }
+
+ /**
+ * Returns the allowed protocols. NOTE: may return {@code null}.
+ *
+ * @return the allowed protocols or {@code null}.
+ */
+ public ProtocolAllowed getAllowedProtocols() {
+ try {
+ ProtocolAllowed allowedProtcols = new ProtocolAllowed();
+
+ allowedProtcols.setOAUTHActive(
+ configuration.getBooleanValue(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_ENABLED, true));
+ allowedProtcols.setSAML1Active(
+ configuration.getBooleanValue(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_ENABLED, false));
+ allowedProtcols.setPVP21Active(
+ configuration.getBooleanValue(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_ENABLED, true));
+
+ return allowedProtcols;
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.error("Can not load protocol enabled information from configuration.", e);
+ return null;
+ }
+
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getTransactionTimeOut()
+ */
+ @Override
+ public int getTransactionTimeOut() {
+ try {
+ return configuration.getIntegerValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION, 300);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("No transaction timeout defined. Use default values", e);
+ return 300;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getSSOCreatedTimeOut()
+ */
+ @Override
+ public int getSSOCreatedTimeOut() {
+ try {
+ return configuration.getIntegerValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE, 2700);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("No SSO created timeout defined. Use default values", e);
+ return 2700;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getSSOUpdatedTimeOut()
+ */
+ @Override
+ public int getSSOUpdatedTimeOut() {
+ try {
+ return configuration.getIntegerValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE, 1200);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("No SSO updated timeout defined. Use default values", e);
+ return 1200;
+ }
+ }
+
+ /**
+ * Returns an alternative source ID. NOTE: may return {@code null}.
+ *
+ * @return an alternative source ID or {@code null}.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}
+ */
+ public String getAlternativeSourceID() throws ConfigurationException {
+ try {
+ return configuration.getStringValue(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("SAML1 SourceID can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+ /**
+ * Returns a list of legacy allowed protocols. NOTE: may return an empty list but never {@code null}.
+ *
+ * @return the list of protocols.
+ */
+ public List<String> getLegacyAllowedProtocols() {
+
+ List<String> legacy = new ArrayList<String>();
+ try {
+ if (configuration.getBooleanValue(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY, false))
+ legacy.add(SAML1Protocol.PATH);
+
+ if (configuration.getBooleanValue(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY, false))
+ legacy.add(PVP2XProtocol.PATH);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Load legacy protocol configuration property FAILED.", e);
+
+ }
+ return legacy;
+ }
+
+ /**
+ * Provides configuration information regarding the online application behind the given URL, relevant to the MOA-ID Auth component.
+ *
+ * @param oaURL URL requested for an online application
+ * @return an <code>OAAuthParameter</code>, or <code>null</code> if none is applicable
+ */
+ public OAAuthParameter getOnlineApplicationParameter(String oaURL) {
+ Map<String, String> oa = getActiveOnlineApplication(oaURL);
+ if (oa == null) {
+ Logger.warn("Online application with identifier " + oaURL + " is not found.");
+ return null;
+ }
+
+ return new OAAuthParameter(oa);
+ }
+
+ /**
+ * Returns a string with a url-reference to the VerifyAuthBlock trust profile id within the moa-sp part of the authentication component.
+ *
+ * @return a string with a url-reference to the VerifyAuthBlock trust profile ID.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral} or in case of missing {@link MOASP}.
+ */
+ public String getMoaSpAuthBlockTrustProfileID(boolean useTestTrustStore) throws ConfigurationException {
+ if (useTestTrustStore)
+ return getMoaSpAuthBlockTestTrustProfileID();
+ else
+ return getMoaSpAuthBlockTrustProfileID();
+ }
+
+ private String getMoaSpAuthBlockTrustProfileID() throws ConfigurationException {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("AuthBlock validation trustprofile can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getMoaSpAuthBlockTestTrustProfileID()
+ */
+ private String getMoaSpAuthBlockTestTrustProfileID()
+ throws ConfigurationException {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_TEST);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Test-AuthBlock validation trustprofile can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getMoaSpIdentityLinkTestTrustProfileID()
+ */
+ private String getMoaSpIdentityLinkTestTrustProfileID()
+ throws ConfigurationException {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_TEST);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Test-IdentityLink validation trustprofile can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+
+ /**
+ * Returns a list of strings with references to all verify transform info IDs within the moa-sp part of the authentication component.
+ *
+ * @return a list of strings containing all urls to the verify transform info IDs.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral} or in case of missing {@link MOASP}.
+ */
+ public List<String> getMoaSpAuthBlockVerifyTransformsInfoIDs() throws ConfigurationException {
+ try {
+ return Arrays.asList(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM));
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("AuthBlock transformation can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+ /**
+ * Returns a ConnectionParameter bean containing all information of the authentication component moa-sp element.
+ *
+ * @return ConnectionParameter of the authentication component moa-sp element.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}.
+ */
+ public ConnectionParameter getMoaSpConnectionParameter() throws ConfigurationException {
+ ConnectionParameter result = null;
+ String moaspURL;
+ try {
+ moaspURL = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_URL);
+ if (moaspURL != null) {
+ result =
+ new ConnectionParameterMOASP(moaspURL, this.getProperties(), this.getRootConfigFileDir());
+
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Loading MOA-SP Service URL from configuration FAILED.", e);
+
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the {@link ConnectionParameter} for the ForeignID. NOTE: may return {@code null}.
+ *
+ * @return the connection parameter.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}.
+ */
+ public ConnectionParameter getForeignIDConnectionParameter() throws ConfigurationException {
+ ConnectionParameter result = null;
+ String serviceURL;
+ try {
+ serviceURL = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL);
+ if (serviceURL != null) {
+ result =
+ new ConnectionParameterForeign(serviceURL, this.getProperties(), this.getRootConfigFileDir());
+
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Loading SZRGW Service URL from configuration FAILED.", e);
+
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the {@link ConnectionParameter} for the OnlineMandates. NOTE: may return {@code null}.
+ *
+ * @return the connection parameter.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}
+ */
+ public ConnectionParameter getOnlineMandatesConnectionParameter() throws ConfigurationException {
+ ConnectionParameter result = null;
+ String serviceURL;
+ try {
+ serviceURL = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL);
+ if (serviceURL != null) {
+ result =
+ new ConnectionParameterMandate(serviceURL, this.getProperties(), this.getRootConfigFileDir());
+
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Loading SZRGW Service URL from configuration FAILED.", e);
+
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns a string with a url-reference to the VerifyIdentityLink trust profile id within the moa-sp part of the authentication component
+ *
+ * @return String with a url-reference to the VerifyIdentityLink trust profile ID
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral} or in case of missing {@link VerifyIdentityLink}.
+ */
+ private String getMoaSpIdentityLinkTrustProfileID() throws ConfigurationException {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("IdentityLink validation trustprofile can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+ /**
+ * Returns a non-empty list of transform infos. NOTE: list is never {@code empty} or {@code null}.
+ *
+ * @return a list of transform infos.
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral} or in case of missing {@link SecurityLayer}.
+ */
+ public List<String> getTransformsInfos() throws ConfigurationException {
+ try {
+ String securityLayer = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64);
+ if (securityLayer != null) {
+ List<String> result = ConfigurationUtils.getTransformInfos(securityLayer);
+
+ if (result == null || result.isEmpty()) {
+ Logger.error("No Security-Layer Transformation found.");
+ throw new ConfigurationException("config.05", new Object[] { "Security-Layer Transformation" });
+ }
+ return result;
+
+ } else {
+ Logger.warn("Error in MOA-ID Configuration. No generalAuthConfiguration->SecurityLayer found");
+ throw new ConfigurationException("config.02", null);
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.error("No Security-Layer Transformation found.");
+ throw new ConfigurationException("config.05", new Object[] { "Security-Layer Transformation" });
+
+ }
+ }
+
+ /**
+ * Returns a list of IdentityLinkX509SubjectNames. NOTE: may return an empty list but never {@code null}.
+ *
+ * @return the list of IdentityLinkX509SubjectNames.
+ *
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}
+ */
+ public List<String> getIdentityLinkX509SubjectNames() throws ConfigurationException {
+
+ ArrayList<String> identityLinkX509SubjectNames = new ArrayList<String>();
+
+ String[] identityLinkSignersWithoutOID = MOAIDAuthConstants.IDENTITY_LINK_SIGNERS_WITHOUT_OID;
+ for (int i = 0; i < identityLinkSignersWithoutOID.length; i++) {
+ String identityLinkSigner = identityLinkSignersWithoutOID[i];
+ if (!identityLinkX509SubjectNames.contains(identityLinkSigner)) {
+ identityLinkX509SubjectNames.add(identityLinkSigner);
+ }
+ }
+
+ return identityLinkX509SubjectNames;
+ }
+
+ /**
+ * Returns a list of default SLRequestTemplates. NOTE: may return an empty list but never {@code null}.
+ *
+ * @return list of default SLRequestTemplates.
+ * @throws ConfigurationException is never thrown
+ */
+ public List<String> getSLRequestTemplates() throws ConfigurationException {
+ List<String> templatesList = new ArrayList<String>();
+
+ try {
+ templatesList.add(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL));
+ templatesList.add(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE));
+ templatesList.add(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY));
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("SecurtiyLayer request templates are not loadable from configuration.", e);
+
+ }
+ return templatesList;
+ }
+
+ /**
+ * Returns the type's default SLRequestTemplate. NOTE: may return {@code null}.
+ *
+ * @param type the type of BKU.
+ * @return the default SLRequestTemplate for the given type.
+ *
+ * @throws ConfigurationException is never thrown
+ */
+ public String getSLRequestTemplates(String type) throws ConfigurationException {
+ String slRequestTemplate = null;
+
+ try {
+ switch (type) {
+ case IOAAuthParameters.ONLINEBKU:
+ slRequestTemplate = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE);
+ break;
+ case IOAAuthParameters.LOCALBKU:
+ slRequestTemplate = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL);
+ break;
+ case IOAAuthParameters.HANDYBKU:
+ slRequestTemplate = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY);
+ break;
+ default:
+ Logger.warn("getSLRequestTemplates: BKU Type does not match: " + IOAAuthParameters.ONLINEBKU + " or " + IOAAuthParameters.HANDYBKU + " or "
+ + IOAAuthParameters.LOCALBKU);
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("SecurtiyLayer request templates are not loadable from configuration.", e);
+
+ }
+ return slRequestTemplate;
+ }
+
+ /**
+ * Returns a list of default BKUURLs. NOTE: may return an empty list but never {@code null}.
+ *
+ * @return list of default BKUURLs.
+ * @throws ConfigurationException is never thrown
+ */
+ public List<String> getDefaultBKUURLs() throws ConfigurationException {
+ List<String> bkuurlsList = new ArrayList<String>();
+ try {
+ bkuurlsList.add(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE));
+ bkuurlsList.add(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL));
+ bkuurlsList.add(configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY));
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("BKU URLs are not loadable from configuration.", e);
+
+ }
+ return bkuurlsList;
+ }
+
+ /**
+ * Returns the type's default BKUURL. NOTE: may return {@code null}.
+ *
+ * @param type the type of BKU.
+ * @return the default BKUURL for the given type.
+ *
+ * @throws ConfigurationException is never thrown
+ */
+ public String getDefaultBKUURL(String type) throws ConfigurationException {
+ String defaultBKUUrl = null;
+ try {
+ switch (type) {
+ case IOAAuthParameters.ONLINEBKU:
+ defaultBKUUrl = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE);
+ break;
+ case IOAAuthParameters.LOCALBKU:
+ defaultBKUUrl = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL);
+ break;
+ case IOAAuthParameters.HANDYBKU:
+ defaultBKUUrl = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY);
+ break;
+ default:
+ Logger.warn("getDefaultBKUURL: BKU Type does not match: " + IOAAuthParameters.ONLINEBKU + " or " + IOAAuthParameters.HANDYBKU + " or "
+ + IOAAuthParameters.LOCALBKU);
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("BKU URLs are not loadable from configuration.", e);
+
+ }
+ return defaultBKUUrl;
+ }
+
+ /**
+ * Returns the SSOTagetIdentifier. NOTE: returns {@code null} if no SSOTargetIdentifier is set.
+ *
+ * @return the SSOTagetIdentifier or {@code null}
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}
+ */
+ public String getSSOTagetIdentifier() throws ConfigurationException {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Single Sign-On Target can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+ /**
+ * Returns the SSOFriendlyName. NOTE: never returns {@code null}, if no SSOFriendlyName is set, a default String is returned.
+ *
+ * @return the SSOFriendlyName or a default String
+ */
+ public String getSSOFriendlyName() {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET, "Default MOA-ID friendly name for SSO");
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Single Sign-On FriendlyName can not be read from configuration.", e);
+ return "Default MOA-ID friendly name for SSO";
+ }
+ }
+
+ /**
+ * Returns the SSOSpecialText. NOTE: never returns {@code null}, if no SSOSpecialText is set, an empty String is returned.
+ *
+ * @return the SSOSpecialText or an empty String
+ */
+ public String getSSOSpecialText() {
+ try {
+ String text = configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT);
+ return MiscUtil.isEmpty(text) ? new String() : text;
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Single Sign-On AuthBlockText can not be read from configuration.", e);
+ return new String();
+ }
+ }
+
+ /**
+ * Returns the MOASessionEncryptionKey NOTE: returns {@code null} if no MOASessionEncryptionKey is set.
+ *
+ * @return the MOASessionEncryptionKey or {@code null}
+ */
+ public String getMOASessionEncryptionKey() {
+ String prop = properties.getProperty("configuration.moasession.key");
+ return MiscUtil.isNotEmpty(prop) ? prop : null;
+ }
+
+ /**
+ * Returns the MOAConfigurationEncryptionKey NOTE: returns {@code null} if no MOAConfigurationEncryptionKey is set.
+ *
+ * @return the MOAConfigurationEncryptionKey or {@code null}
+ */
+ public String getMOAConfigurationEncryptionKey() {
+ String prop = properties.getProperty("configuration.moaconfig.key");
+ return MiscUtil.isNotEmpty(prop) ? prop : null;
+ }
+
+ /**
+ * @return {@code true} if IdentityLinkResigning is set, {@code false} otherwise.
+ */
+ public boolean isIdentityLinkResigning() {
+ String prop = properties.getProperty("configuration.resignidentitylink.active", "false");
+ return Boolean.valueOf(prop);
+ }
+
+ /**
+ * Returns the IdentityLinkResigningKey. NOTE: returns {@code null} if no IdentityLinkResigningKey is set.
+ *
+ * @return the IdentityLinkResigningKey or {@code null}
+ */
+ public String getIdentityLinkResigningKey() {
+ String prop = properties.getProperty("configuration.resignidentitylink.keygroup");
+ return MiscUtil.isNotEmpty(prop) ? prop : null;
+ }
+
+ /**
+ * @return {@code true} if MonitoringActive is set, {@code false} otherwise.
+ */
+ public boolean isMonitoringActive() {
+ String prop = properties.getProperty("configuration.monitoring.active", "false");
+ return Boolean.valueOf(prop);
+ }
+
+ /**
+ * Returns the MonitoringTestIdentityLinkURL. NOTE: returns {@code null} if no MonitoringTestIdentityLinkURL is set.
+ *
+ * @return the MonitoringTestIdentityLinkURL or {@code null}
+ */
+ public String getMonitoringTestIdentityLinkURL() {
+ String prop = properties.getProperty("configuration.monitoring.test.identitylink.url");
+ return MiscUtil.isNotEmpty(prop) ? prop : null;
+ }
+
+ /**
+ * Returns the MonitoringMessageSuccess. NOTE: returns {@code null} if no MonitoringMessageSuccess is set.
+ *
+ * @return the MonitoringMessageSuccess or {@code null}
+ */
+ public String getMonitoringMessageSuccess() {
+ String prop = properties.getProperty("configuration.monitoring.message.success");
+ return MiscUtil.isNotEmpty(prop) ? prop : null;
+ }
+
+ /**
+ * @return {@code true} if AdvancedLoggingActive is set, {@code false} otherwise.
+ */
+ public boolean isAdvancedLoggingActive() {
+ String prop = properties.getProperty("configuration.advancedlogging.active", "false");
+ return Boolean.valueOf(prop);
+ }
+
+ /**
+ * Returns the PublicURLPrefix. NOTE: returns {@code null} if no PublicURLPrefix is set.
+ *
+ * @return the PublicURLPrefix or {@code null}
+ */
+ public String getPublicURLPrefix() {
+ try {
+ return configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("MOA-ID PublicURLPrefix can not be read from configuration.", e);
+ return null;
+ }
+ }
+
+ /**
+ * @return {@code true} if PVP2AssertionEncryptionActive is set, {@code false} otherwise.
+ */
+ public boolean isPVP2AssertionEncryptionActive() {
+ String prop = this.getProperties().getProperty("protocols.pvp2.assertion.encryption.active", "true");
+ return Boolean.valueOf(prop);
+ }
+
+ /**
+ * @return {@code true} if CertifiacteQCActive is set, {@code false} otherwise.
+ */
+ public boolean isCertifiacteQCActive() {
+ String prop = this.getProperties().getProperty("configuration.validation.certificate.QC.ignore", "false");
+ return !Boolean.valueOf(prop);
+ }
+
+ /**
+ * Returns a STORK Configuration, NOTE: may return {@code null}.
+ *
+ * @return a new STORK Configuration or {@code null}
+ * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}
+ */
+ public STORKConfig getStorkConfig() throws ConfigurationException {
+ STORKConfig result = null;
+ try {
+ Map<String, String> storkProps = configuration.getPropertySubset(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK + ".");
+ if (storkProps == null) {
+ Logger.warn("Error in MOA-ID Configuration. No STORK configuration found.");
+
+ } else {
+ result = new STORKConfig(this.getProperties(), this.getRootConfigFileDir());
+
+ }
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("MOA-ID PublicURLPrefix can not be read from configuration.", e);
+
+ }
+
+ return result;
+ }
+
+// /**
+// * Small helper method.
+// *
+// * @return the {@link AuthComponentGeneral} from the database
+// * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral}
+// */
+// private AuthComponentGeneral getAuthComponentGeneral() throws ConfigurationException {
+//
+// AuthComponentGeneral authComponentGeneral = configuration.get(MOAIDConfigurationConstants.AUTH_COMPONENT_GENERAL_KEY, AuthComponentGeneral.class);
+// if (authComponentGeneral == null) {
+// Logger.warn("Error in MOA-ID Configuration. No generalAuthConfiguration found");
+// throw new ConfigurationException("config.02", null);
+// }
+// return authComponentGeneral;
+// }
+
+// /**
+// * Returns the {@link VerifyAuthBlock}.
+// *
+// * @return the {@link VerifyAuthBlock}.
+// * @throws ConfigurationException is thrown in case of missing {@link AuthComponentGeneral} or in case of missing {@link MOASP}.
+// */
+// private VerifyAuthBlock getVerifyAuthBlock() throws ConfigurationException {
+//
+// AuthComponentGeneral authComponentGeneral = getAuthComponentGeneral();
+// MOASP moasp = authComponentGeneral.getMOASP();
+// if (moasp != null) {
+// VerifyAuthBlock vab = moasp.getVerifyAuthBlock();
+// if (vab != null) {
+// VerifyAuthBlock verifyIdl = new VerifyAuthBlock();
+// verifyIdl.setTrustProfileID(vab.getTrustProfileID());
+// verifyIdl.setVerifyTransformsInfoProfileID(new ArrayList<String>(vab.getVerifyTransformsInfoProfileID()));
+// return verifyIdl;
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No Trustprofile for AuthBlock validation.");
+// throw new ConfigurationException("config.02", null);
+// }
+// } else {
+// Logger.warn("Error in MOA-ID Configuration. No MOASP configuration found");
+// throw new ConfigurationException("config.02", null);
+// }
+// }
+
+ /**
+ * Small helper method. NOTE: may return empty properties, but never {@code null}.
+ * @param propPrefix the prefix of the desired property.
+ * @return the {@link Properties}
+ */
+ private Properties getGeneralProperiesConfig(final String propPrefix) {
+
+ Properties configProp = new Properties();
+ for (Object key : this.getProperties().keySet()) {
+ if (key.toString().startsWith(propPrefix)) {
+ String propertyName = key.toString().substring(propPrefix.length());
+ configProp.put(propertyName, this.getProperties().get(key.toString()));
+ }
+ }
+ return configProp;
+ }
+
+ /**
+ * Returns whether the trust-manager revocation checking is enabled or not.
+ *
+ * @return {@code true} if enable, {@code false} if disabled
+ */
+ @Override
+ public boolean isTrustmanagerrevoationchecking() {
+
+ try {
+ return configuration.getBooleanValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_REVOCATIONCHECKING,
+ TRUST_MANAGER_REVOCATION_CHECKING_DEFAULT);
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ return TRUST_MANAGER_REVOCATION_CHECKING_DEFAULT;
+ }
+ }
+
+ /**
+ * Returns the path to the certificate-store directory or {@code null} if there is no certificate-store directory defined.
+ *
+ * @return the path to the certstore directory or {@code null}
+ */
+ @Override
+ public String getCertstoreDirectory() {
+ try {
+ String path = rootConfigFileDir + configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL);
+ if (MiscUtil.isNotEmpty(path))
+ return path;
+
+ else {
+ Logger.warn("Error in MOA-ID Configuration. No CertStoreDirectory defined.");
+ return null;
+
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Error in MOA-ID Configuration. No CertStoreDirectory defined.", e);
+ return null;
+ }
+ }
+
+ @Override
+ public String getTrustedCACertificates() {
+ try {
+ String path = rootConfigFileDir + configuration.getStringValue(
+ MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL);
+ if (MiscUtil.isNotEmpty(path))
+ return path;
+
+ else {
+ Logger.warn("Error in MOA-ID Configuration. No TrustStoreDirectory defined.");
+ return null;
+
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.warn("Error in MOA-ID Configuration. No TrustStoreDirectory defined.", e);
+ return null;
+ }
+ }
+
+ /**
+ * Returns the active {@link OnlineApplication} with the given ID or {@code null} if either no matching online application is found or if the {@code id}
+ * matches more than one entry.
+ *
+ * @param id the id of the requested online application
+ * @return the requested online application or {@code null}
+ */
+ public Map<String, String> getActiveOnlineApplication(String id) {
+ Logger.trace("Get active OnlineApplication with ID " + id + " from database.");
+ try {
+ Map<String, String> oaConfig = configuration.getOnlineApplication(id);
+ if (oaConfig != null) {
+ String isActiveString = oaConfig.get(MOAIDConfigurationConstants.SERVICE_ISACTIVE);
+ if (isActiveString != null && Boolean.valueOf(isActiveString))
+ return oaConfig;
+
+ }
+
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.error("Error during OnlineApplication load operationen (oaId=."
+ + id + ")" , e);
+
+ }
+ return null;
+
+ }
+
+ //Load document service url from moa properties
+ public String getDocumentServiceUrl() {
+ String prop = properties.getProperty("stork.documentservice.url", "false");
+ return prop;
+ }
+
+
+ public boolean isPVPSchemaValidationActive() {
+ String prop = properties.getProperty("protocols.pvp2.schemavalidation", "true");
+ return Boolean.valueOf(prop);
+ }
+
+ /**
+ * Checks if is fakeIdL is activated.
+ *
+ * @return true, if fake IdLs are available for stork
+ */
+ public boolean isStorkFakeIdLActive() {
+ String prop = properties.getProperty("stork.fakeIdL.active", "false");
+ return Boolean.valueOf(prop);
+ }
+
+ /**
+ * Gets the countries which will receive a fake IdL
+ *
+ * @return the countries
+ */
+ public List<String> getStorkFakeIdLCountries() {
+ String prop = properties.getProperty("stork.fakeIdL.countries", "");
+ return Arrays.asList(prop.replaceAll(" ", "").split(","));
+ }
+
+ /**
+ * Gets the resigning key (group) for the stork fake IdL.
+ *
+ * @return the resigning key
+ */
+ public String getStorkFakeIdLResigningKey() {
+ String prop = properties.getProperty("stork.fakeIdL.keygroup");
+ if (MiscUtil.isNotEmpty(prop))
+ return prop;
+ else
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getStorkNoSignatureCountries()
+ */
+ @Override
+ public List<String> getStorkNoSignatureCountries() {
+ String prop = properties.getProperty("stork.fakeIdL.noSignatureCountries", "");
+ return Arrays.asList(prop.replaceAll(" ", "").split(","));
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#isHTTPAuthAllowed()
+ */
+ @Override
+ @Deprecated
+ public boolean isHTTPAuthAllowed() {
+ String prop = properties.getProperty("configuration.localhttpallowed.active", "false");
+ return Boolean.valueOf(prop);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getDefaultRevisionsLogEventCodes()
+ */
+ @Override
+ public List<Integer> getDefaultRevisionsLogEventCodes() {
+ try {
+ String eventcodes = configuration.getStringValue(MOAIDConfigurationConstants.GENERAL_REVERSION_LOGS_EVENTCODES);
+ if (MiscUtil.isNotEmpty(eventcodes)) {
+ String[] codes = eventcodes.split(",");
+ List<Integer> result = new ArrayList<Integer>();
+ for (String el : codes) {
+ try {
+ result.add(Integer.parseInt(el));
+
+ } catch (NumberFormatException e) {
+ Logger.warn("EventCode: " + el + " is not a valid Integer.");
+
+ }
+ }
+
+ if (!result.isEmpty())
+ return result;
+
+ }
+
+ } catch (at.gv.egiz.components.configuration.api.ConfigurationException e) {
+ Logger.error("Error during revisions-code load operationen." , e);
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.AuthConfiguration#getMoaSpIdentityLinkTrustProfileID(boolean)
+ */
+ @Override
+ public String getMoaSpIdentityLinkTrustProfileID(boolean useTestTrustStore)
+ throws ConfigurationException {
+ if (useTestTrustStore)
+ return getMoaSpIdentityLinkTestTrustProfileID();
+ else
+ return getMoaSpIdentityLinkTrustProfileID();
+ }
+}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java
index e576522bf..386e04f45 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java
@@ -22,28 +22,38 @@
*/
package at.gv.egovernment.moa.id.config.auth.data;
+import java.io.Serializable;
import java.security.PrivateKey;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
-import at.gv.egovernment.moa.id.config.OAParameter;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
+import at.gv.egovernment.moa.id.config.stork.StorkAttribute;
+import at.gv.egovernment.moa.id.config.stork.StorkAttributeProviderPlugin;
/**
* @author tlenz
*
*/
-public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParameters {
+public class DynamicOAAuthParameters implements IOAAuthParameters, Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1648437815185614566L;
+
+ private String publicURLPrefix;
private String businessTarget;
+ private boolean businessService;
+
+ private boolean isInderfederationIDP;
+
private String IDPQueryURL;
+
+ private String target;
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTarget()
@@ -79,28 +89,10 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
}
/* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTransformsInfos()
- */
- @Override
- public List<String> getTransformsInfos() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getSAML1Parameter()
*/
@Override
- public OASAML1 getSAML1Parameter() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getPVP2Parameter()
- */
- @Override
- public OAPVP2 getPVP2Parameter() {
+ public SAML1ConfigurationParameters getSAML1Parameter() {
// TODO Auto-generated method stub
return null;
}
@@ -109,7 +101,7 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTemplateURL()
*/
@Override
- public List<TemplateType> getTemplateURL() {
+ public List<String> getTemplateURL() {
// TODO Auto-generated method stub
return null;
}
@@ -160,15 +152,6 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
}
/* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getSingleLogOutURL()
- */
- @Override
- public String getSingleLogOutURL() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getMandateProfiles()
*/
@Override
@@ -232,15 +215,6 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
}
/* (non-Javadoc)
- * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getRequestedAttributes()
- */
- @Override
- public List<OAStorkAttribute> getRequestedAttributes() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isRequireConsentForStorkAttributes()
*/
@Override
@@ -253,7 +227,7 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getStorkAPs()
*/
@Override
- public List<AttributeProviderPlugin> getStorkAPs() {
+ public Collection<StorkAttributeProviderPlugin> getStorkAPs() {
// TODO Auto-generated method stub
return null;
}
@@ -280,7 +254,7 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
* @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getPepsList()
*/
@Override
- public List<CPEPS> getPepsList() {
+ public Collection<at.gv.egovernment.moa.id.config.stork.CPEPS> getPepsList() {
// TODO Auto-generated method stub
return null;
}
@@ -398,4 +372,118 @@ public class DynamicOAAuthParameters extends OAParameter implements IOAAuthParam
// TODO Auto-generated method stub
return false;
}
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getFullConfiguration()
+ */
+ @Override
+ public Map<String, String> getFullConfiguration() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getConfigurationValue(java.lang.String)
+ */
+ @Override
+ public String getConfigurationValue(String key) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getFriendlyName()
+ */
+ @Override
+ public String getFriendlyName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getPublicURLPrefix()
+ */
+ @Override
+ public String getPublicURLPrefix() {
+ return this.publicURLPrefix;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getOaType()
+ */
+ @Override
+ public String getOaType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getBusinessService()
+ */
+ @Override
+ public boolean getBusinessService() {
+ return this.businessService;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getTargetFriendlyName()
+ */
+ @Override
+ public String getTargetFriendlyName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isInderfederationIDP()
+ */
+ @Override
+ public boolean isInderfederationIDP() {
+ return this.isInderfederationIDP;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isSTORKPVPGateway()
+ */
+ @Override
+ public boolean isSTORKPVPGateway() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getRequestedSTORKAttributes()
+ */
+ @Override
+ public Collection<StorkAttribute> getRequestedSTORKAttributes() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#getReversionsLoggingEventCodes()
+ */
+ @Override
+ public List<Integer> getReversionsLoggingEventCodes() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isUseIDLTestTrustStore()
+ */
+ @Override
+ public boolean isUseIDLTestTrustStore() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.config.auth.IOAAuthParameters#isUseAuthBlockTestTestStore()
+ */
+ @Override
+ public boolean isUseAuthBlockTestTestStore() {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/SAML1ConfigurationParameters.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/SAML1ConfigurationParameters.java
new file mode 100644
index 000000000..8ff64f188
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/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.config.auth.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/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/legacy/BuildFromLegacyConfig.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/legacy/BuildFromLegacyConfig.java
index 3d4b53f7c..887a7e40f 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/legacy/BuildFromLegacyConfig.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/legacy/BuildFromLegacyConfig.java
@@ -1,562 +1,570 @@
-/*******************************************************************************
- * 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.config.legacy;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.net.URI;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
-import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModes;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
-import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
-import at.gv.egovernment.moa.id.commons.db.dao.config.GeneralConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.IdentityLinkSigners;
-import at.gv.egovernment.moa.id.commons.db.dao.config.LegacyAllowed;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAKeyBoxSelector;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOASP;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Mandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MandatesProfileNameItem;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAuth;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineMandates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Organization;
-import at.gv.egovernment.moa.id.commons.db.dao.config.PVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Protocols;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SAML1;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SLRequestTemplates;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SSO;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SecurityLayer;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TimeOuts;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TrustAnchor;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;
-import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-
-import at.gv.egovernment.moa.id.data.IssuerAndSerial;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.Base64Utils;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.FileUtils;
-import at.gv.egovernment.moa.util.MiscUtil;
-
-public class BuildFromLegacyConfig {
-
- private static final String GENERIC_CONFIG_PARAM_SOURCEID = "AuthenticationServer.SourceID";
-
- private static final String SEARCHBKUTEMPLATE_LOCAL = "https://127.0.0.1:3496/";
- private static final String SEARCHBKUTEMPLATE_HANDY = "https://www.handy-signatur.at";
- private static final String SEARCHBKUTEMPLATE_ONLINE = "bkuonline/http-security-layer-request";
-
- public static MOAIDConfiguration build(File fileName, String rootConfigFileDir, MOAIDConfiguration oldconfig) throws ConfigurationException {
- InputStream stream = null;
- Element configElem;
- ConfigurationBuilder builder;
-
- Logger.info("Load Legacy-Configuration from file=" + fileName);
-
- try {
- // load the main config file
- stream = new BufferedInputStream(new FileInputStream(fileName));
- configElem = DOMUtils.parseXmlValidating(stream);
-
- } catch (Throwable t) {
- throw new ConfigurationException("config.03", null, t);
- }
-
- finally {
- try {
- if (stream != null) {
- stream.close();
- }
- } catch (IOException e) {
-
- }
- }
-
- try {
- String oldbkuonline = "";
- String oldbkulocal = "";
- String oldbkuhandy = "";
-
- // build the internal datastructures
- builder = new ConfigurationBuilder(configElem, rootConfigFileDir);
-
-
- MOAIDConfiguration moaIDConfig = new MOAIDConfiguration();
-
- AuthComponentGeneral generalAuth = new AuthComponentGeneral();
- moaIDConfig.setAuthComponentGeneral(generalAuth);
-
-
- //not supported by MOA-ID 2.0
- //ConnectionParameter bKUConnectionParameter = builder.buildAuthBKUConnectionParameter();
- //bKUSelectable = (bKUConnectionParameter!=null);
- //bKUSelectionType = builder.buildAuthBKUSelectionType();
-
-
- //Load generic Config
- Map<String, String> genericConfiguration = builder.buildGenericConfiguration();
- GeneralConfiguration authGeneral = new GeneralConfiguration();
-
- if (genericConfiguration.containsKey(ConfigurationProvider.TRUST_MANAGER_REVOCATION_CHECKING))
- authGeneral.setTrustManagerRevocationChecking(
- Boolean.valueOf((String)genericConfiguration.get(ConfigurationProvider.TRUST_MANAGER_REVOCATION_CHECKING)));
- else
- authGeneral.setTrustManagerRevocationChecking(true);
-
- if (genericConfiguration.containsKey(ConfigurationProvider.DIRECTORY_CERTSTORE_PARAMETER_PROPERTY))
- authGeneral.setCertStoreDirectory(
- (String)genericConfiguration.get(ConfigurationProvider.DIRECTORY_CERTSTORE_PARAMETER_PROPERTY));
- else
- authGeneral.setTrustManagerRevocationChecking(true);
-
-
- //Load Assertion and Session timeouts
- TimeOuts timeOuts = new TimeOuts();
- if (genericConfiguration.containsKey(AuthConfigurationProvider.AUTH_DATA_TIMEOUT_PROPERTY))
- timeOuts.setAssertion(BigInteger.valueOf(Long.valueOf((String)genericConfiguration.get(AuthConfigurationProvider.AUTH_DATA_TIMEOUT_PROPERTY))));
- else
- timeOuts.setAssertion(BigInteger.valueOf(2*60)); //default 2min
-
- if (genericConfiguration.containsKey(AuthConfigurationProvider.AUTH_SESSION_TIMEOUT_PROPERTY))
- timeOuts.setAssertion(BigInteger.valueOf(Long.valueOf((String)genericConfiguration.get(AuthConfigurationProvider.AUTH_SESSION_TIMEOUT_PROPERTY))));
- else
- timeOuts.setAssertion(BigInteger.valueOf(30*60)); //default 30min
-
- timeOuts.setMOASessionUpdated(BigInteger.valueOf(15*60)); //default 15min
- authGeneral.setTimeOuts(timeOuts);
- generalAuth.setGeneralConfiguration(authGeneral);
-
- Protocols auth_protocols = new Protocols();
- generalAuth.setProtocols(auth_protocols);
-
- LegacyAllowed prot_legacy = new LegacyAllowed();
- auth_protocols.setLegacyAllowed(prot_legacy);
- final List<String> PROTOCOLS_LEGACY_ALLOWED = Arrays.asList("id_saml1","id_pvp2x");
- prot_legacy.setProtocolName(PROTOCOLS_LEGACY_ALLOWED);
-
- //set SAML1 config
- SAML1 saml1 = new SAML1();
- saml1.setIsActive(true);
- if (genericConfiguration.containsKey(GENERIC_CONFIG_PARAM_SOURCEID))
- saml1.setSourceID((String)genericConfiguration.get(GENERIC_CONFIG_PARAM_SOURCEID));
- auth_protocols.setSAML1(saml1);
-
- //set OAuth config
- OAuth oauth = new OAuth();
- oauth.setIsActive(true);
- auth_protocols.setOAuth(oauth);
-
- //set PVP2.1 config
- PVP2 prot_pvp2 = new PVP2();
- auth_protocols.setPVP2(prot_pvp2);
- prot_pvp2.setPublicURLPrefix("https://....");
- prot_pvp2.setIssuerName("MOA-ID 2.x IDP");
-
- Organization pvp2_org = new Organization();
- prot_pvp2.setOrganization(pvp2_org);
- pvp2_org.setDisplayName("OrganisationDisplayName");
- pvp2_org.setName("OrganisatioName");
- pvp2_org.setURL("http://testorganisation.at");
-
- List<Contact> pvp2_contacts = new ArrayList<Contact>();
- prot_pvp2.setContact(pvp2_contacts);
-
- Contact pvp2_contact = new Contact();
- pvp2_contact.setCompany("OrganisationDisplayName");
- pvp2_contact.setGivenName("Max");
-
-
- List<String> mails = new ArrayList<String>();
- pvp2_contact.setMail(mails);
- mails.add("max@muster.mann");
-
- List<String> phones = new ArrayList<String>();
- pvp2_contact.setPhone(phones);
- phones.add("01 5555 5555");
-
- pvp2_contact.setSurName("Mustermann");
- pvp2_contact.setType("technical");
- pvp2_contacts.add(pvp2_contact);
-
- //SSO
- SSO auth_sso = new SSO();
- generalAuth.setSSO(auth_sso);
- auth_sso.setTarget("");
- auth_sso.setFriendlyName("");
-
-
- //set SecurityLayer Transformations
- String[] transformsInfoFileNames = builder.buildTransformsInfoFileNames(builder.getConfigElem(), ConfigurationBuilder.AUTH_SECLAYER_TRANSFORMS_INFO_FILENAME_XPATH);
- String[] transformsInfos = builder.loadTransformsInfos(transformsInfoFileNames);
-
- List<TransformsInfoType> auth_transformInfos = new ArrayList<TransformsInfoType>();
- if (transformsInfos != null && transformsInfos.length > 0) {
- for (int i=0; i<transformsInfos.length; i++) {
-
- TransformsInfoType transforminfotype = new TransformsInfoType();
-
- if (transformsInfoFileNames[i] != null &&
- transformsInfos[i] != null) {
- String fileURL = FileUtils.makeAbsoluteURL(transformsInfoFileNames[i], rootConfigFileDir);
- Path fileName_ = new File(new URI(fileURL)).toPath().getFileName();
- transforminfotype.setFilename(fileName_.toString());
-
- transforminfotype.setTransformation(Base64Utils.encode(transformsInfos[i].getBytes("UTF-8")).getBytes("UTF-8"));
- auth_transformInfos.add(transforminfotype);
-
- } else
- Logger.warn("AuthBlock Transformation " + transformsInfoFileNames[i]
- + "not found.");
- }
-
- }
-
- SecurityLayer auth_securityLayer = new SecurityLayer();
- auth_securityLayer.setTransformsInfo(auth_transformInfos);
- generalAuth.setSecurityLayer(auth_securityLayer);
-
-
- //set MOASP configuration
- MOASP auth_moaSP = new MOASP();
- generalAuth.setMOASP(auth_moaSP);
-
- //set MOASP connection
- ConnectionParameter moaSpConnectionParameter = builder.buildMoaSpConnectionParameter();
- if (moaSpConnectionParameter != null) {
- ConnectionParameterClientAuthType auth_moaSP_connection =
- parseConnectionParameterClientAuth(moaSpConnectionParameter);
- auth_moaSP.setConnectionParameter(auth_moaSP_connection);
- }
-
- //set VerifyIdentityLink
- String moaSpIdentityLinkTrustProfileID = builder.getMoaSpIdentityLinkTrustProfileID();
- VerifyIdentityLink auth_moaSP_verifyIdentityLink = new VerifyIdentityLink();
- auth_moaSP_verifyIdentityLink.setTrustProfileID(moaSpIdentityLinkTrustProfileID);
- auth_moaSP.setVerifyIdentityLink(auth_moaSP_verifyIdentityLink);
-
- //set VerifyAuthBlock
- String moaSpAuthBlockTrustProfileID = builder.getMoaSpAuthBlockTrustProfileID();
- VerifyAuthBlock auth_moaSP_verifyAuthBlock = new VerifyAuthBlock();
- auth_moaSP_verifyAuthBlock.setTrustProfileID(moaSpAuthBlockTrustProfileID);
- String[] moaSpAuthBlockVerifyTransformsInfoIDs = builder.buildMoaSpAuthBlockVerifyTransformsInfoIDs();
- List<String> transformlist = new ArrayList<String>();
- Collections.addAll(transformlist, moaSpAuthBlockVerifyTransformsInfoIDs);
- auth_moaSP_verifyAuthBlock.setVerifyTransformsInfoProfileID(transformlist);
- auth_moaSP.setVerifyAuthBlock(auth_moaSP_verifyAuthBlock);
-
-
- //set IdentityLinkSigners
- IdentityLinkSigners auth_idsigners = new IdentityLinkSigners();
- generalAuth.setIdentityLinkSigners(auth_idsigners);
- List<String> identityLinkX509SubjectNames = builder.getIdentityLink_X509SubjectNames();
- auth_idsigners.setX509SubjectName(identityLinkX509SubjectNames);
-
-
- //not supported by MOA-ID 2.0
- VerifyInfoboxParameters defaultVerifyInfoboxParameters = null;
-// Node defaultVerifyInfoboxParamtersElem = XPathUtils.selectSingleNode(configElem, ConfigurationBuilder.AUTH_VERIFY_INFOBOXES_XPATH);
-// if (defaultVerifyInfoboxParamtersElem != null) {
-// defaultVerifyInfoboxParameters =
-// builder.buildVerifyInfoboxParameters((Element)defaultVerifyInfoboxParamtersElem, null, moaSpIdentityLinkTrustProfileID);
+///*******************************************************************************
+// * 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.config.legacy;
+//
+//import java.io.BufferedInputStream;
+//import java.io.File;
+//import java.io.FileInputStream;
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.math.BigInteger;
+//import java.net.URI;
+//import java.nio.file.Path;
+//import java.util.ArrayList;
+//import java.util.Arrays;
+//import java.util.Collections;
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Properties;
+//import java.util.Set;
+//
+//import org.w3c.dom.Element;
+//
+//import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModes;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.ConnectionParameterClientAuthType;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.GeneralConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.IdentityLinkSigners;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.LegacyAllowed;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MOAKeyBoxSelector;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MOASP;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Mandates;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MandatesProfileNameItem;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OASSO;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OAuth;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineMandates;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Organization;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.PVP2;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.Protocols;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SAML1;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SLRequestTemplates;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SSO;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.SecurityLayer;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TimeOuts;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.TrustAnchor;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;
+//import at.gv.egovernment.moa.id.config.ConfigurationException;
+//import at.gv.egovernment.moa.id.config.ConfigurationProvider;
+//
+//import at.gv.egovernment.moa.id.data.IssuerAndSerial;
+//import at.gv.egovernment.moa.logging.Logger;
+//import at.gv.egovernment.moa.util.Base64Utils;
+//import at.gv.egovernment.moa.util.DOMUtils;
+//import at.gv.egovernment.moa.util.FileUtils;
+//import at.gv.egovernment.moa.util.MiscUtil;
+//
+//public class BuildFromLegacyConfig {
+//
+// private static final String GENERIC_CONFIG_PARAM_SOURCEID = "AuthenticationServer.SourceID";
+//
+// private static final String SEARCHBKUTEMPLATE_LOCAL = "https://127.0.0.1:3496/";
+// private static final String SEARCHBKUTEMPLATE_HANDY = "https://www.handy-signatur.at";
+// private static final String SEARCHBKUTEMPLATE_ONLINE = "bkuonline/http-security-layer-request";
+//
+// public static final String AUTH_SESSION_TIMEOUT_PROPERTY =
+// "AuthenticationSession.TimeOut";
+// /**
+// * The name of the generic configuration property giving the authentication data time out.
+// */
+// public static final String AUTH_DATA_TIMEOUT_PROPERTY =
+// "AuthenticationData.TimeOut";
+//
+//
+// public static MOAIDConfiguration build(File fileName, String rootConfigFileDir, MOAIDConfiguration oldconfig) throws ConfigurationException {
+// InputStream stream = null;
+// Element configElem;
+// ConfigurationBuilder builder;
+//
+// Logger.info("Load Legacy-Configuration from file=" + fileName);
+//
+// try {
+// // load the main config file
+// stream = new BufferedInputStream(new FileInputStream(fileName));
+// configElem = DOMUtils.parseXmlValidating(stream);
+//
+// } catch (Throwable t) {
+// throw new ConfigurationException("config.03", null, t);
+// }
+//
+// finally {
+// try {
+// if (stream != null) {
+// stream.close();
+// }
+// } catch (IOException e) {
+//
+// }
+// }
+//
+// try {
+// String oldbkuonline = "";
+// String oldbkulocal = "";
+// String oldbkuhandy = "";
+//
+// // build the internal datastructures
+// builder = new ConfigurationBuilder(configElem, rootConfigFileDir);
+//
+//
+// MOAIDConfiguration moaIDConfig = new MOAIDConfiguration();
+//
+// AuthComponentGeneral generalAuth = new AuthComponentGeneral();
+// moaIDConfig.setAuthComponentGeneral(generalAuth);
+//
+//
+// //not supported by MOA-ID 2.0
+// //ConnectionParameter bKUConnectionParameter = builder.buildAuthBKUConnectionParameter();
+// //bKUSelectable = (bKUConnectionParameter!=null);
+// //bKUSelectionType = builder.buildAuthBKUSelectionType();
+//
+//
+// //Load generic Config
+// Map<String, String> genericConfiguration = builder.buildGenericConfiguration();
+// GeneralConfiguration authGeneral = new GeneralConfiguration();
+//
+// if (genericConfiguration.containsKey(ConfigurationProvider.TRUST_MANAGER_REVOCATION_CHECKING))
+// authGeneral.setTrustManagerRevocationChecking(
+// Boolean.valueOf((String)genericConfiguration.get(ConfigurationProvider.TRUST_MANAGER_REVOCATION_CHECKING)));
+// else
+// authGeneral.setTrustManagerRevocationChecking(true);
+//
+// if (genericConfiguration.containsKey(ConfigurationProvider.DIRECTORY_CERTSTORE_PARAMETER_PROPERTY))
+// authGeneral.setCertStoreDirectory(
+// (String)genericConfiguration.get(ConfigurationProvider.DIRECTORY_CERTSTORE_PARAMETER_PROPERTY));
+// else
+// authGeneral.setTrustManagerRevocationChecking(true);
+//
+//
+// //Load Assertion and Session timeouts
+// TimeOuts timeOuts = new TimeOuts();
+// if (genericConfiguration.containsKey(AUTH_DATA_TIMEOUT_PROPERTY))
+// timeOuts.setAssertion(BigInteger.valueOf(Long.valueOf((String)genericConfiguration.get(AUTH_DATA_TIMEOUT_PROPERTY))));
+// else
+// timeOuts.setAssertion(BigInteger.valueOf(2*60)); //default 2min
+//
+// if (genericConfiguration.containsKey(AUTH_SESSION_TIMEOUT_PROPERTY))
+// timeOuts.setAssertion(BigInteger.valueOf(Long.valueOf((String)genericConfiguration.get(AUTH_SESSION_TIMEOUT_PROPERTY))));
+// else
+// timeOuts.setAssertion(BigInteger.valueOf(30*60)); //default 30min
+//
+// timeOuts.setMOASessionUpdated(BigInteger.valueOf(15*60)); //default 15min
+// authGeneral.setTimeOuts(timeOuts);
+// generalAuth.setGeneralConfiguration(authGeneral);
+//
+// Protocols auth_protocols = new Protocols();
+// generalAuth.setProtocols(auth_protocols);
+//
+// LegacyAllowed prot_legacy = new LegacyAllowed();
+// auth_protocols.setLegacyAllowed(prot_legacy);
+// final List<String> PROTOCOLS_LEGACY_ALLOWED = Arrays.asList("id_saml1","id_pvp2x");
+// prot_legacy.setProtocolName(PROTOCOLS_LEGACY_ALLOWED);
+//
+// //set SAML1 config
+// SAML1 saml1 = new SAML1();
+// saml1.setIsActive(true);
+// if (genericConfiguration.containsKey(GENERIC_CONFIG_PARAM_SOURCEID))
+// saml1.setSourceID((String)genericConfiguration.get(GENERIC_CONFIG_PARAM_SOURCEID));
+// auth_protocols.setSAML1(saml1);
+//
+// //set OAuth config
+// OAuth oauth = new OAuth();
+// oauth.setIsActive(true);
+// auth_protocols.setOAuth(oauth);
+//
+// //set PVP2.1 config
+// PVP2 prot_pvp2 = new PVP2();
+// auth_protocols.setPVP2(prot_pvp2);
+// prot_pvp2.setPublicURLPrefix("https://....");
+// prot_pvp2.setIssuerName("MOA-ID 2.x IDP");
+//
+// Organization pvp2_org = new Organization();
+// prot_pvp2.setOrganization(pvp2_org);
+// pvp2_org.setDisplayName("OrganisationDisplayName");
+// pvp2_org.setName("OrganisatioName");
+// pvp2_org.setURL("http://testorganisation.at");
+//
+// List<Contact> pvp2_contacts = new ArrayList<Contact>();
+// prot_pvp2.setContact(pvp2_contacts);
+//
+// Contact pvp2_contact = new Contact();
+// pvp2_contact.setCompany("OrganisationDisplayName");
+// pvp2_contact.setGivenName("Max");
+//
+//
+// List<String> mails = new ArrayList<String>();
+// pvp2_contact.setMail(mails);
+// mails.add("max@muster.mann");
+//
+// List<String> phones = new ArrayList<String>();
+// pvp2_contact.setPhone(phones);
+// phones.add("01 5555 5555");
+//
+// pvp2_contact.setSurName("Mustermann");
+// pvp2_contact.setType("technical");
+// pvp2_contacts.add(pvp2_contact);
+//
+// //SSO
+// SSO auth_sso = new SSO();
+// generalAuth.setSSO(auth_sso);
+// auth_sso.setTarget("");
+// auth_sso.setFriendlyName("");
+//
+//
+// //set SecurityLayer Transformations
+// String[] transformsInfoFileNames = builder.buildTransformsInfoFileNames(builder.getConfigElem(), ConfigurationBuilder.AUTH_SECLAYER_TRANSFORMS_INFO_FILENAME_XPATH);
+// String[] transformsInfos = builder.loadTransformsInfos(transformsInfoFileNames);
+//
+// List<TransformsInfoType> auth_transformInfos = new ArrayList<TransformsInfoType>();
+// if (transformsInfos != null && transformsInfos.length > 0) {
+// for (int i=0; i<transformsInfos.length; i++) {
+//
+// TransformsInfoType transforminfotype = new TransformsInfoType();
+//
+// if (transformsInfoFileNames[i] != null &&
+// transformsInfos[i] != null) {
+// String fileURL = FileUtils.makeAbsoluteURL(transformsInfoFileNames[i], rootConfigFileDir);
+// Path fileName_ = new File(new URI(fileURL)).toPath().getFileName();
+// transforminfotype.setFilename(fileName_.toString());
+//
+// transforminfotype.setTransformation(Base64Utils.encode(transformsInfos[i].getBytes("UTF-8")).getBytes("UTF-8"));
+// auth_transformInfos.add(transforminfotype);
+//
+// } else
+// Logger.warn("AuthBlock Transformation " + transformsInfoFileNames[i]
+// + "not found.");
+// }
+//
+// }
+//
+// SecurityLayer auth_securityLayer = new SecurityLayer();
+// auth_securityLayer.setTransformsInfo(auth_transformInfos);
+// generalAuth.setSecurityLayer(auth_securityLayer);
+//
+//
+// //set MOASP configuration
+// MOASP auth_moaSP = new MOASP();
+// generalAuth.setMOASP(auth_moaSP);
+//
+// //set MOASP connection
+// ConnectionParameter moaSpConnectionParameter = builder.buildMoaSpConnectionParameter();
+// if (moaSpConnectionParameter != null) {
+// ConnectionParameterClientAuthType auth_moaSP_connection =
+// parseConnectionParameterClientAuth(moaSpConnectionParameter);
+// auth_moaSP.setConnectionParameter(auth_moaSP_connection);
+// }
+//
+// //set VerifyIdentityLink
+// String moaSpIdentityLinkTrustProfileID = builder.getMoaSpIdentityLinkTrustProfileID();
+// VerifyIdentityLink auth_moaSP_verifyIdentityLink = new VerifyIdentityLink();
+// auth_moaSP_verifyIdentityLink.setTrustProfileID(moaSpIdentityLinkTrustProfileID);
+// auth_moaSP.setVerifyIdentityLink(auth_moaSP_verifyIdentityLink);
+//
+// //set VerifyAuthBlock
+// String moaSpAuthBlockTrustProfileID = builder.getMoaSpAuthBlockTrustProfileID();
+// VerifyAuthBlock auth_moaSP_verifyAuthBlock = new VerifyAuthBlock();
+// auth_moaSP_verifyAuthBlock.setTrustProfileID(moaSpAuthBlockTrustProfileID);
+// String[] moaSpAuthBlockVerifyTransformsInfoIDs = builder.buildMoaSpAuthBlockVerifyTransformsInfoIDs();
+// List<String> transformlist = new ArrayList<String>();
+// Collections.addAll(transformlist, moaSpAuthBlockVerifyTransformsInfoIDs);
+// auth_moaSP_verifyAuthBlock.setVerifyTransformsInfoProfileID(transformlist);
+// auth_moaSP.setVerifyAuthBlock(auth_moaSP_verifyAuthBlock);
+//
+//
+// //set IdentityLinkSigners
+// IdentityLinkSigners auth_idsigners = new IdentityLinkSigners();
+// generalAuth.setIdentityLinkSigners(auth_idsigners);
+// List<String> identityLinkX509SubjectNames = builder.getIdentityLink_X509SubjectNames();
+// auth_idsigners.setX509SubjectName(identityLinkX509SubjectNames);
+//
+//
+// //not supported by MOA-ID 2.0
+// VerifyInfoboxParameters defaultVerifyInfoboxParameters = null;
+//// Node defaultVerifyInfoboxParamtersElem = XPathUtils.selectSingleNode(configElem, ConfigurationBuilder.AUTH_VERIFY_INFOBOXES_XPATH);
+//// if (defaultVerifyInfoboxParamtersElem != null) {
+//// defaultVerifyInfoboxParameters =
+//// builder.buildVerifyInfoboxParameters((Element)defaultVerifyInfoboxParamtersElem, null, moaSpIdentityLinkTrustProfileID);
+//// }
+//
+//
+// //Set ForeignIdentities
+// ForeignIdentities auth_foreign = new ForeignIdentities();
+// generalAuth.setForeignIdentities(auth_foreign);
+//
+// //set Connection parameters
+// ConnectionParameter foreignIDConnectionParameter = builder.buildForeignIDConnectionParameter();
+// ConnectionParameterClientAuthType auth_foreign_connection =
+// parseConnectionParameterClientAuth(foreignIDConnectionParameter);
+// auth_foreign.setConnectionParameter(auth_foreign_connection);
+//
+// //set OnlineMandates config
+// ConnectionParameter onlineMandatesConnectionParameter = builder.buildOnlineMandatesConnectionParameter();
+// if (onlineMandatesConnectionParameter != null) {
+// OnlineMandates auth_mandates = new OnlineMandates();
+// generalAuth.setOnlineMandates(auth_mandates);
+// auth_mandates.setConnectionParameter(
+// parseConnectionParameterClientAuth(onlineMandatesConnectionParameter));
// }
-
-
- //Set ForeignIdentities
- ForeignIdentities auth_foreign = new ForeignIdentities();
- generalAuth.setForeignIdentities(auth_foreign);
-
- //set Connection parameters
- ConnectionParameter foreignIDConnectionParameter = builder.buildForeignIDConnectionParameter();
- ConnectionParameterClientAuthType auth_foreign_connection =
- parseConnectionParameterClientAuth(foreignIDConnectionParameter);
- auth_foreign.setConnectionParameter(auth_foreign_connection);
-
- //set OnlineMandates config
- ConnectionParameter onlineMandatesConnectionParameter = builder.buildOnlineMandatesConnectionParameter();
- if (onlineMandatesConnectionParameter != null) {
- OnlineMandates auth_mandates = new OnlineMandates();
- generalAuth.setOnlineMandates(auth_mandates);
- auth_mandates.setConnectionParameter(
- parseConnectionParameterClientAuth(onlineMandatesConnectionParameter));
- }
-
-
- //TODO: add auth template configuration!!!
-
-
- if (oldconfig != null) {
- if (oldconfig.getDefaultBKUs() != null) {
- oldbkuhandy = oldconfig.getDefaultBKUs().getHandyBKU();
- oldbkulocal = oldconfig.getDefaultBKUs().getLocalBKU();
- oldbkuonline = oldconfig.getDefaultBKUs().getOnlineBKU();
- }
- } else {
- List<String> trustbkus = builder.getTrustedBKUs();
- for (String trustbku : trustbkus) {
- if (MiscUtil.isEmpty(oldbkuonline) && trustbku.endsWith(SEARCHBKUTEMPLATE_ONLINE))
- oldbkuonline = trustbku;
-
- if (MiscUtil.isEmpty(oldbkuhandy) && trustbku.startsWith(SEARCHBKUTEMPLATE_HANDY))
- oldbkuhandy = trustbku;
-
- if (MiscUtil.isEmpty(oldbkulocal) && trustbku.startsWith(SEARCHBKUTEMPLATE_LOCAL))
- oldbkulocal = trustbku;
- }
-
- }
-
-
- //set OnlineApplications
- OAAuthParameter[] onlineApplicationAuthParameters = builder.buildOnlineApplicationAuthParameters(defaultVerifyInfoboxParameters, moaSpIdentityLinkTrustProfileID);
-
- ArrayList<OnlineApplication> moa_oas = new ArrayList<OnlineApplication>();
- moaIDConfig.setOnlineApplication(moa_oas);
-
- for (OAAuthParameter oa : onlineApplicationAuthParameters) {
- OnlineApplication moa_oa = new OnlineApplication();
-
- //set general OA configuration
- moa_oa.setCalculateHPI(false); //TODO: Bernd fragen warum das nicht direkt über den Bereichsidentifyer definert wird
- moa_oa.setFriendlyName(oa.getFriendlyName());
- moa_oa.setKeyBoxIdentifier(MOAKeyBoxSelector.fromValue(oa.getKeyBoxIdentifier()));
- moa_oa.setPublicURLPrefix(oa.getPublicURLPrefix());
- moa_oa.setTarget(oa.getTarget());
- moa_oa.setTargetFriendlyName(oa.getTargetFriendlyName());
- moa_oa.setType(oa.getOaType());
- moa_oa.setIsActive(true);
-
-
- AuthComponentOA oa_auth = new AuthComponentOA();
- moa_oa.setAuthComponentOA(oa_auth);
-
- //SLLayer Version / useIframe
-// oa_auth.setSlVersion(oa.getSlVersion());
-// oa_auth.setUseIFrame(false);
-// oa_auth.setUseUTC(oa.getUseUTC());
-
- //BKUURLs
- BKUURLS bkuurls = new BKUURLS();
- bkuurls.setOnlineBKU(oldbkuonline);
- bkuurls.setHandyBKU(oldbkuhandy);
- bkuurls.setLocalBKU(oldbkulocal);
- oa_auth.setBKUURLS(bkuurls);
-
- //IdentificationNumber
- IdentificationNumber idnumber = new IdentificationNumber();
- idnumber.setValue(oa.getIdentityLinkDomainIdentifier());
- idnumber.setType(oa.getIdentityLinkDomainIdentifierType());
- oa_auth.setIdentificationNumber(idnumber);
-
- //set Templates
- TemplatesType templates = new TemplatesType();
- oa_auth.setTemplates(templates);
- templates.setAditionalAuthBlockText("");
- TemplateType template = new TemplateType();
- template.setURL(oa.getTemplateURL());
- ArrayList<TemplateType> template_list = new ArrayList<TemplateType>();
- template_list.add(template);
- templates.setTemplate(template_list);
-
-
- //TransformsInfo not supported by MOAID 2.0
- String[] transforminfos = oa.getTransformsInfos();
- for (String e1 : transforminfos) {
- if (MiscUtil.isNotEmpty(e1)) {
- Logger.warn("OA specific transformation for OA " + oa.getPublicURLPrefix()
- + " are not supported. USE AdditionalAuthBlock text!");
- }
- }
-
- //VerifyInfoBoxes not supported by MOAID 2.0
-
- //set Mandates
- Mandates oa_mandates = new Mandates();
- oa_auth.setMandates(oa_mandates);
- List<MandatesProfileNameItem> profileList = new ArrayList<MandatesProfileNameItem>();
-
- String oldProfiles = oa.getMandateProfiles();
- if (MiscUtil.isNotEmpty(oldProfiles)) {
- String[] oldprofileList = oldProfiles.split(",");
- for (int i=0; i<oldprofileList.length; i++) {
- MandatesProfileNameItem item = new MandatesProfileNameItem();
- item.setItem(oldprofileList[i].trim());
- profileList.add(item);
- }
- oa_mandates.setProfileNameItems(profileList );
- }
-
- //STORK
- //TODO: OA specific STORK config is deactivated in MOA 1.5.2
-
- //SSO
- OASSO oa_sso = new OASSO();
- oa_auth.setOASSO(oa_sso);
- oa_sso.setUseSSO(true);
- oa_sso.setSingleLogOutURL("");
- oa_sso.setAuthDataFrame(true);
-
- //OA_SAML1
- OASAML1 oa_saml1 = new OASAML1();
- oa_auth.setOASAML1(oa_saml1);
- oa_saml1.setConditionLength(BigInteger.valueOf(oa.getConditionLength()));
- oa_saml1.setProvideAUTHBlock(oa.getProvideAuthBlock());
- oa_saml1.setProvideCertificate(oa.getProvideCertifcate());
- oa_saml1.setProvideFullMandatorData(oa.getProvideFullMandatorData());
- oa_saml1.setProvideIdentityLink(oa.getProvideIdentityLink());
- oa_saml1.setProvideStammzahl(oa.getProvideStammzahl());
- oa_saml1.setUseCondition(oa.getUseCondition());
- oa_saml1.setIsActive(true);
- oa_saml1.setProvideAllErrors(false);
-
- //OA_PVP2
- OAPVP2 oa_pvp2 = new OAPVP2();
- oa_auth.setOAPVP2(oa_pvp2);
-
- moa_oas.add(moa_oa);
- //ConfigurationDBUtils.save(moa_oa);
- }
-
- //removed from MOAID 2.0 config
- //identityLinkX509SubjectNames = builder.getIdentityLink_X509SubjectNames();
-
-
- //set chaining modes
- ChainingModes moa_chainingModes = new ChainingModes();
- moaIDConfig.setChainingModes(moa_chainingModes);
-
-
-
- String defaultmode = builder.getDefaultChainingMode();
- ChainingModeType type;
- if (defaultmode.equals(iaik.pki.pathvalidation.ChainingModes.CHAIN_MODE))
- type = ChainingModeType.CHAINING;
- else
- type = ChainingModeType.PKIX;
-
-
- moa_chainingModes.setSystemDefaultMode(type);
-
- Map<IssuerAndSerial, String> chainingModes = builder.buildChainingModes();
- List<TrustAnchor> chaining_anchor = new ArrayList<TrustAnchor>();
- Set<IssuerAndSerial> chaining_anchor_map = chainingModes.keySet();
- for (IssuerAndSerial e1 : chaining_anchor_map) {
- TrustAnchor trustanchor = new TrustAnchor();
-
- ChainingModeType type1 = ChainingModeType.fromValue(chainingModes.get(e1));
- trustanchor.setMode(type1);
-
- trustanchor.setX509IssuerName(e1.getIssuerDN());
- trustanchor.setX509SerialNumber(e1.getSerial());
- chaining_anchor.add(trustanchor);
- }
- moa_chainingModes.setTrustAnchor(chaining_anchor);
-
-
- //set trustedCACertificate path
- moaIDConfig.setTrustedCACertificates(builder.getTrustedCACertificates());
-
-
- //Not required in MOAID 2.0 config (DefaultBKUs & SLRequestTemplates)
- //trustedBKUs = builder.getTrustedBKUs();
- //trustedTemplateURLs = builder.getTrustedTemplateURLs();
-
-
- //set DefaultBKUs
- DefaultBKUs moa_defaultbkus = new DefaultBKUs();
- moaIDConfig.setDefaultBKUs(moa_defaultbkus);
- moa_defaultbkus.setOnlineBKU(oldbkuonline);
- moa_defaultbkus.setHandyBKU(oldbkuhandy);
- moa_defaultbkus.setLocalBKU(oldbkulocal);
-
-
- //set SLRequest Templates
- SLRequestTemplates moa_slrequesttemp = new SLRequestTemplates();
- moaIDConfig.setSLRequestTemplates(moa_slrequesttemp);
- moa_slrequesttemp.setOnlineBKU("http://localhost:8080/moa-id-auth/template_onlineBKU.html");
- moa_slrequesttemp.setHandyBKU("http://localhost:8080/moa-id-auth/template_handyBKU.html");
- moa_slrequesttemp.setLocalBKU("http://127.0.0.1:8080/moa-id-auth/template_localBKU.html");
-
- return moaIDConfig;
-
- } catch (Throwable t) {
- throw new ConfigurationException("config.02", null, t);
- }
- }
-
- private static ConnectionParameterClientAuthType parseConnectionParameterClientAuth(
- ConnectionParameter old) {
- ConnectionParameterClientAuthType auth_moaSP_connection = new ConnectionParameterClientAuthType();
- auth_moaSP_connection.setURL(old.getUrl());
-
- //TODO: remove from Database config!!!!!
-// auth_moaSP_connection.setAcceptedServerCertificates(old.getAcceptedServerCertificates());
-// ClientKeyStore auth_moaSP_connection_keyStore = new ClientKeyStore();
-// auth_moaSP_connection_keyStore.setValue(old.getClientKeyStore());
-// auth_moaSP_connection_keyStore.setPassword(old.getClientKeyStorePassword());
-// auth_moaSP_connection.setClientKeyStore(auth_moaSP_connection_keyStore);
- return auth_moaSP_connection;
- }
-
- private static Properties getGeneralPVP2ProperiesConfig(Properties props) {
- Properties configProp = new Properties();
- for (Object key : props.keySet()) {
- String propPrefix = "protocols.pvp2.";
- if (key.toString().startsWith(propPrefix)) {
- String propertyName = key.toString().substring(propPrefix.length());
- configProp.put(propertyName, props.get(key.toString()));
- }
- }
- return configProp;
- }
-}
+//
+//
+// //TODO: add auth template configuration!!!
+//
+//
+// if (oldconfig != null) {
+// if (oldconfig.getDefaultBKUs() != null) {
+// oldbkuhandy = oldconfig.getDefaultBKUs().getHandyBKU();
+// oldbkulocal = oldconfig.getDefaultBKUs().getLocalBKU();
+// oldbkuonline = oldconfig.getDefaultBKUs().getOnlineBKU();
+// }
+// } else {
+// List<String> trustbkus = builder.getTrustedBKUs();
+// for (String trustbku : trustbkus) {
+// if (MiscUtil.isEmpty(oldbkuonline) && trustbku.endsWith(SEARCHBKUTEMPLATE_ONLINE))
+// oldbkuonline = trustbku;
+//
+// if (MiscUtil.isEmpty(oldbkuhandy) && trustbku.startsWith(SEARCHBKUTEMPLATE_HANDY))
+// oldbkuhandy = trustbku;
+//
+// if (MiscUtil.isEmpty(oldbkulocal) && trustbku.startsWith(SEARCHBKUTEMPLATE_LOCAL))
+// oldbkulocal = trustbku;
+// }
+//
+// }
+//
+//
+// //set OnlineApplications
+// OAAuthParameter[] onlineApplicationAuthParameters = builder.buildOnlineApplicationAuthParameters(defaultVerifyInfoboxParameters, moaSpIdentityLinkTrustProfileID);
+//
+// ArrayList<OnlineApplication> moa_oas = new ArrayList<OnlineApplication>();
+// moaIDConfig.setOnlineApplication(moa_oas);
+//
+// for (OAAuthParameter oa : onlineApplicationAuthParameters) {
+// OnlineApplication moa_oa = new OnlineApplication();
+//
+// //set general OA configuration
+// moa_oa.setCalculateHPI(false); //TODO: Bernd fragen warum das nicht direkt über den Bereichsidentifyer definert wird
+// moa_oa.setFriendlyName(oa.getFriendlyName());
+// moa_oa.setKeyBoxIdentifier(MOAKeyBoxSelector.fromValue(oa.getKeyBoxIdentifier()));
+// moa_oa.setPublicURLPrefix(oa.getPublicURLPrefix());
+// moa_oa.setTarget(oa.getTarget());
+// moa_oa.setTargetFriendlyName(oa.getTargetFriendlyName());
+// moa_oa.setType(oa.getOaType());
+// moa_oa.setIsActive(true);
+//
+//
+// AuthComponentOA oa_auth = new AuthComponentOA();
+// moa_oa.setAuthComponentOA(oa_auth);
+//
+// //SLLayer Version / useIframe
+//// oa_auth.setSlVersion(oa.getSlVersion());
+//// oa_auth.setUseIFrame(false);
+//// oa_auth.setUseUTC(oa.getUseUTC());
+//
+// //BKUURLs
+// BKUURLS bkuurls = new BKUURLS();
+// bkuurls.setOnlineBKU(oldbkuonline);
+// bkuurls.setHandyBKU(oldbkuhandy);
+// bkuurls.setLocalBKU(oldbkulocal);
+// oa_auth.setBKUURLS(bkuurls);
+//
+// //IdentificationNumber
+// IdentificationNumber idnumber = new IdentificationNumber();
+// idnumber.setValue(oa.getIdentityLinkDomainIdentifier());
+// idnumber.setType(oa.getIdentityLinkDomainIdentifierType());
+// oa_auth.setIdentificationNumber(idnumber);
+//
+// //set Templates
+// TemplatesType templates = new TemplatesType();
+// oa_auth.setTemplates(templates);
+// templates.setAditionalAuthBlockText("");
+// TemplateType template = new TemplateType();
+// template.setURL(oa.getTemplateURL());
+// ArrayList<TemplateType> template_list = new ArrayList<TemplateType>();
+// template_list.add(template);
+// templates.setTemplate(template_list);
+//
+//
+// //TransformsInfo not supported by MOAID 2.0
+// String[] transforminfos = oa.getTransformsInfos();
+// for (String e1 : transforminfos) {
+// if (MiscUtil.isNotEmpty(e1)) {
+// Logger.warn("OA specific transformation for OA " + oa.getPublicURLPrefix()
+// + " are not supported. USE AdditionalAuthBlock text!");
+// }
+// }
+//
+// //VerifyInfoBoxes not supported by MOAID 2.0
+//
+// //set Mandates
+// Mandates oa_mandates = new Mandates();
+// oa_auth.setMandates(oa_mandates);
+// List<MandatesProfileNameItem> profileList = new ArrayList<MandatesProfileNameItem>();
+//
+// String oldProfiles = oa.getMandateProfiles();
+// if (MiscUtil.isNotEmpty(oldProfiles)) {
+// String[] oldprofileList = oldProfiles.split(",");
+// for (int i=0; i<oldprofileList.length; i++) {
+// MandatesProfileNameItem item = new MandatesProfileNameItem();
+// item.setItem(oldprofileList[i].trim());
+// profileList.add(item);
+// }
+// oa_mandates.setProfileNameItems(profileList );
+// }
+//
+// //STORK
+// //TODO: OA specific STORK config is deactivated in MOA 1.5.2
+//
+// //SSO
+// OASSO oa_sso = new OASSO();
+// oa_auth.setOASSO(oa_sso);
+// oa_sso.setUseSSO(true);
+// oa_sso.setSingleLogOutURL("");
+// oa_sso.setAuthDataFrame(true);
+//
+// //OA_SAML1
+// OASAML1 oa_saml1 = new OASAML1();
+// oa_auth.setOASAML1(oa_saml1);
+// oa_saml1.setConditionLength(BigInteger.valueOf(oa.getConditionLength()));
+// oa_saml1.setProvideAUTHBlock(oa.getProvideAuthBlock());
+// oa_saml1.setProvideCertificate(oa.getProvideCertifcate());
+// oa_saml1.setProvideFullMandatorData(oa.getProvideFullMandatorData());
+// oa_saml1.setProvideIdentityLink(oa.getProvideIdentityLink());
+// oa_saml1.setProvideStammzahl(oa.getProvideStammzahl());
+// oa_saml1.setUseCondition(oa.getUseCondition());
+// oa_saml1.setIsActive(true);
+// oa_saml1.setProvideAllErrors(false);
+//
+// //OA_PVP2
+// OAPVP2 oa_pvp2 = new OAPVP2();
+// oa_auth.setOAPVP2(oa_pvp2);
+//
+// moa_oas.add(moa_oa);
+// //ConfigurationDBUtils.save(moa_oa);
+// }
+//
+// //removed from MOAID 2.0 config
+// //identityLinkX509SubjectNames = builder.getIdentityLink_X509SubjectNames();
+//
+//
+// //set chaining modes
+// ChainingModes moa_chainingModes = new ChainingModes();
+// moaIDConfig.setChainingModes(moa_chainingModes);
+//
+//
+//
+// String defaultmode = builder.getDefaultChainingMode();
+// ChainingModeType type;
+// if (defaultmode.equals(iaik.pki.pathvalidation.ChainingModes.CHAIN_MODE))
+// type = ChainingModeType.CHAINING;
+// else
+// type = ChainingModeType.PKIX;
+//
+//
+// moa_chainingModes.setSystemDefaultMode(type);
+//
+// Map<IssuerAndSerial, String> chainingModes = builder.buildChainingModes();
+// List<TrustAnchor> chaining_anchor = new ArrayList<TrustAnchor>();
+// Set<IssuerAndSerial> chaining_anchor_map = chainingModes.keySet();
+// for (IssuerAndSerial e1 : chaining_anchor_map) {
+// TrustAnchor trustanchor = new TrustAnchor();
+//
+// ChainingModeType type1 = ChainingModeType.fromValue(chainingModes.get(e1));
+// trustanchor.setMode(type1);
+//
+// trustanchor.setX509IssuerName(e1.getIssuerDN());
+// trustanchor.setX509SerialNumber(e1.getSerial());
+// chaining_anchor.add(trustanchor);
+// }
+// moa_chainingModes.setTrustAnchor(chaining_anchor);
+//
+//
+// //set trustedCACertificate path
+// moaIDConfig.setTrustedCACertificates(builder.getTrustedCACertificates());
+//
+//
+// //Not required in MOAID 2.0 config (DefaultBKUs & SLRequestTemplates)
+// //trustedBKUs = builder.getTrustedBKUs();
+// //trustedTemplateURLs = builder.getTrustedTemplateURLs();
+//
+//
+// //set DefaultBKUs
+// DefaultBKUs moa_defaultbkus = new DefaultBKUs();
+// moaIDConfig.setDefaultBKUs(moa_defaultbkus);
+// moa_defaultbkus.setOnlineBKU(oldbkuonline);
+// moa_defaultbkus.setHandyBKU(oldbkuhandy);
+// moa_defaultbkus.setLocalBKU(oldbkulocal);
+//
+//
+// //set SLRequest Templates
+// SLRequestTemplates moa_slrequesttemp = new SLRequestTemplates();
+// moaIDConfig.setSLRequestTemplates(moa_slrequesttemp);
+// moa_slrequesttemp.setOnlineBKU("http://localhost:8080/moa-id-auth/template_onlineBKU.html");
+// moa_slrequesttemp.setHandyBKU("http://localhost:8080/moa-id-auth/template_handyBKU.html");
+// moa_slrequesttemp.setLocalBKU("http://127.0.0.1:8080/moa-id-auth/template_localBKU.html");
+//
+// return moaIDConfig;
+//
+// } catch (Throwable t) {
+// throw new ConfigurationException("config.02", null, t);
+// }
+// }
+//
+// private static ConnectionParameterClientAuthType parseConnectionParameterClientAuth(
+// ConnectionParameter old) {
+// ConnectionParameterClientAuthType auth_moaSP_connection = new ConnectionParameterClientAuthType();
+// auth_moaSP_connection.setURL(old.getUrl());
+//
+// //TODO: remove from Database config!!!!!
+//// auth_moaSP_connection.setAcceptedServerCertificates(old.getAcceptedServerCertificates());
+//// ClientKeyStore auth_moaSP_connection_keyStore = new ClientKeyStore();
+//// auth_moaSP_connection_keyStore.setValue(old.getClientKeyStore());
+//// auth_moaSP_connection_keyStore.setPassword(old.getClientKeyStorePassword());
+//// auth_moaSP_connection.setClientKeyStore(auth_moaSP_connection_keyStore);
+// return auth_moaSP_connection;
+// }
+//
+// private static Properties getGeneralPVP2ProperiesConfig(Properties props) {
+// Properties configProp = new Properties();
+// for (Object key : props.keySet()) {
+// String propPrefix = "protocols.pvp2.";
+// if (key.toString().startsWith(propPrefix)) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// configProp.put(propertyName, props.get(key.toString()));
+// }
+// }
+// return configProp;
+// }
+//}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAConfiguration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAConfiguration.java
deleted file mode 100644
index e077e096f..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAConfiguration.java
+++ /dev/null
@@ -1,219 +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.
- ******************************************************************************/
-/*
- * Copyright 2003 Federal Chancellery Austria
- * MOA-ID has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
-package at.gv.egovernment.moa.id.config.proxy;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Holds configuration data concerning an online application for use by the MOA-ID Proxy component.
- * These include the login type (stateful or stateless), the HTTP authentication type,
- * and information needed to add authentication parameters or headers for a URL connection
- * to the remote online application.
- * @see <code>MOAIDConfiguration-1.1.xsd</code>, element <code>Configuration</code>
- *
- * @author Stefan Knirsch
- * @version $Id$
- */
-public class OAConfiguration {
-
- /** Constant for an login method */
- public static final String LOGINTYPE_STATEFUL = "stateful";
- /** Constant for an login method */
- public static final String LOGINTYPE_STATELESS = "stateless";
-
- /** Constant for an auth method */
- public static final String BASIC_AUTH = "basic";
- /** Constant for an auth method */
- public static final String HEADER_AUTH = "header";
- /** Constant for an auth method */
- public static final String PARAM_AUTH = "param";
-
-
- /** Constant for binding */
- public static final String BINDUNG_USERNAME = "userName";
- /** Constant for binding */
- public static final String BINDUNG_FULL = "full";
- /** Constant for binding */
- public static final String BINDUNG_NONE = "none";
- /** Constant for binding */
- public static final String BINDUNG_NOMATCH = "noMatch";
-
- /** login type: stateful or stateless */
- String loginType;
- /** authentication type: basic, header, or param */
- String authType;
- /**
- * mapping of parameter names to AuthenticationData field names
- * in case of authentication type <code>"header-auth"</code>
- */
- Map paramAuthMapping;
- /**
- * mapping of parameter names to AuthenticationData field names
- * in case of authentication type <code>"param-auth"</code>
- */
- Map headerAuthMapping;
- /** mapping for user ID to be used in case of authentication type <code>"basic-auth"</code> */
- String basicAuthUserIDMapping;
- /** mapping for password to be used in case of authentication type <code>"basic-auth"</code> */
- String basicAuthPasswordMapping;
- /** Binding for basic authentication */
- String binding;
-
- /**
- * Returns the basicAuthPasswordMapping.
- * @return String
- */
- public String getBasicAuthPasswordMapping() {
- return basicAuthPasswordMapping;
- }
-
- /**
- * Returns the basicAuthUserIDMapping.
- * @return String
- */
- public String getBasicAuthUserIDMapping() {
- return basicAuthUserIDMapping;
- }
-
- /**
- * Returns the headerAuthMapping.
- * @return HashMap
- */
- public Map getHeaderAuthMapping() {
- return headerAuthMapping;
- }
-
- /**
- * Returns the loginType.
- * @return String
- */
- public String getLoginType() {
- return loginType;
- }
-
- /**
- * Returns the paramAuthMapping.
- * @return HashMap
- */
- public Map getParamAuthMapping() {
- return paramAuthMapping;
- }
-
- /**
- * Returns the binding.
- * @return String
- */
- public String getBinding() {
- return binding;
- }
-
- /**
- * Sets the basicAuthPasswordMapping.
- * @param basicAuthPassword The basicAuthPasswordMapping to set
- */
- public void setBasicAuthPasswordMapping(String basicAuthPassword) {
- this.basicAuthPasswordMapping = basicAuthPassword;
- }
-
- /**
- * Sets the basicAuthUserIDMapping.
- * @param basicAuthUserID The basicAuthUserIDMapping to set
- */
- public void setBasicAuthUserIDMapping(String basicAuthUserID) {
- this.basicAuthUserIDMapping = basicAuthUserID;
- }
-
- /**
- * Sets the headerAuthMapping.
- * @param headerAuth The headerAuthMapping to set
- */
- public void setHeaderAuthMapping(HashMap headerAuth) {
- this.headerAuthMapping = headerAuth;
- }
-
- /**
- * Sets the loginType.
- * @param loginType The loginType to set
- */
- public void setLoginType(String loginType) {
- this.loginType = loginType;
- }
-
- /**
- * Sets the paramAuthMapping.
- * @param paramAuth The paramAuthMapping to set
- */
- public void setParamAuthMapping(HashMap paramAuth) {
- this.paramAuthMapping = paramAuth;
- }
-
- /**
- * Returns the authType.
- * @return String
- */
- public String getAuthType() {
- return authType;
- }
-
- /**
- * Sets the authType.
- * @param authLoginType The authType to set
- */
- public void setAuthType(String authLoginType) {
- this.authType = authLoginType;
- }
-
- /**
- * Sets the binding.
- * @param binding The binding to be set.
- */
- public void setBinding (String binding) {
- this.binding = binding;
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAProxyParameter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAProxyParameter.java
deleted file mode 100644
index 00ca5ad57..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/OAProxyParameter.java
+++ /dev/null
@@ -1,248 +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.
- ******************************************************************************/
-/*
- * Copyright 2003 Federal Chancellery Austria
- * MOA-ID has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
-package at.gv.egovernment.moa.id.config.proxy;
-
-import at.gv.egovernment.moa.id.config.legacy.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.legacy.OAParameter;
-
-/**
- * Configuration parameters belonging to an online application,
- * to use with the MOA ID Proxy component.
- *
- * @author Stefan Knirsch
- * @version $Id$
- */
-public class OAProxyParameter extends OAParameter {
-
-// /**
-// * public URL prefix of the online application
-// */
-// private String publicURLPrefix;
- /**
- * URL of online application configuration file;
- * defaults to relative URL <code>/moaconfig.xml</code>
- */
- private String configFileURL;
- /**
- * implementation of {@link at.gv.egovernment.moa.id.proxy.LoginParameterResolver} interface
- * to be used for authenticating the online application;
- * defaults to {@link at.gv.egovernment.moa.id.proxy.DefaultLoginParameterResolver}
- */
- private String loginParameterResolverImpl;
-
- /**
- * Configuration Parameter of LoginParameterResolver
- */
- private String loginParameterResolverConfiguration;
-
- /**
- * implementation of {@link at.gv.egovernment.moa.id.proxy.ConnectionBuilder} interface
- * to be used for connecting to the online application;
- * defaults to {@link at.gv.egovernment.moa.id.proxy.DefaultConnectionBuilder}
- */
- private String connectionBuilderImpl;
- /**
- * session time out to be used in case of a stateless online application
- */
- private int sessionTimeOut;
- /**
- * parameters regarding the connection from the proxy to the online application
- */
- private ConnectionParameter connectionParameter;
- /**
- * parameters for logging into the online application
- */
- private OAConfiguration oaConfiguration;
-
- private String errorRedirctURL;
-
-
- /**
- * Returns the configFileURL.
- * @return String
- */
- public String getConfigFileURL() {
- return configFileURL;
- }
-
- /**
- * Returns the sessionTimeOut.
- * @return int
- */
- public int getSessionTimeOut() {
- return sessionTimeOut;
- }
-
- /**
- * Returns the connectionParameter.
- * @return ConnectionParameter
- */
- public ConnectionParameter getConnectionParameter() {
- return connectionParameter;
- }
-
- /**
- * Sets the configFileURL for the proxy.
- * @param oaProxyConfigFileURL The configFileURL to set
- */
- public void setConfigFileURL(String oaProxyConfigFileURL) {
- this.configFileURL = oaProxyConfigFileURL;
- }
-
- /**
- * Sets the sessionTimeOut for the proxy.
- * @param oaProxySessionTimeOut The sessionTimeOut to set
- */
- public void setSessionTimeOut(int oaProxySessionTimeOut) {
- this.sessionTimeOut = oaProxySessionTimeOut;
- }
-
- /**
- * Sets the connectionParameter for the proxy.
- * @param proxyConnectionParameter The connectionParameter to set
- */
- public void setConnectionParameter(ConnectionParameter proxyConnectionParameter) {
- this.connectionParameter = proxyConnectionParameter;
- }
-
-// /**
-// * Returns the publicURLPrefix.
-// * @return String
-// */
-// public String getPublicURLPrefix() {
-// return publicURLPrefix;
-// }
-//
-// /**
-// * Sets the publicURLPrefix.
-// * @param publicURLPrefix The publicURLPrefix to set
-// */
-// public void setPublicURLPrefix(String url) {
-// this.publicURLPrefix = url;
-// }
-
- /**
- * Returns the connectionBuilderImpl.
- * @return String
- */
- public String getConnectionBuilderImpl() {
- return connectionBuilderImpl;
- }
-
- /**
- * Returns the loginParameterResolverImpl.
- * @return String
- */
- public String getLoginParameterResolverImpl() {
- return loginParameterResolverImpl;
- }
-
- /**
- * Returns the loginParameterResolverConfiguration.
- * @return String
- */
- public String getLoginParameterResolverConfiguration() {
- return loginParameterResolverConfiguration;
- }
-
- /**
- * Sets the connectionBuilderImpl for the proxy.
- * @param connectionBuilderImpl The connectionBuilderImpl to set
- */
- public void setConnectionBuilderImpl(String connectionBuilderImpl) {
- this.connectionBuilderImpl = connectionBuilderImpl;
- }
-
- /**
- * Sets the loginParameterResolverImpl for the proxy.
- * @param loginParameterResolverImpl The loginParameterResolverImpl to set
- */
- public void setLoginParameterResolverImpl(String loginParameterResolverImpl) {
- this.loginParameterResolverImpl = loginParameterResolverImpl;
- }
-
- /**
- * Sets the loginParameterResolverConfiguration for the proxy.
- * @param loginParameterResolverConfiguration The loginParameterResolverImpl to set
- */
- public void setLoginParameterResolverConfiguration(String loginParameterResolverConfiguration) {
- this.loginParameterResolverConfiguration = loginParameterResolverConfiguration;
- }
-
- /**
- * Returns the oaConfiguration.
- * @return OAConfiguration
- */
- public OAConfiguration getOaConfiguration() {
- return oaConfiguration;
- }
-
- /**
- * Sets the oaConfiguration.
- * @param oaConfiguration The oaConfiguration to set
- */
- public void setOaConfiguration(OAConfiguration oaConfiguration) {
- this.oaConfiguration = oaConfiguration;
- }
-
-/**
- * @return the errorRedirctURL
- */
-public String getErrorRedirctURL() {
- return errorRedirctURL;
-}
-
-/**
- * @param errorRedirctURL the errorRedirctURL to set
- */
-public void setErrorRedirctURL(String errorRedirctURL) {
- this.errorRedirctURL = errorRedirctURL;
-}
-
-
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationBuilder.java
deleted file mode 100644
index 3220dc90c..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationBuilder.java
+++ /dev/null
@@ -1,290 +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.
- ******************************************************************************/
-/*
- * Copyright 2003 Federal Chancellery Austria
- * MOA-ID has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
-package at.gv.egovernment.moa.id.config.proxy;
-
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.traversal.NodeIterator;
-
-import at.gv.egovernment.moa.id.config.legacy.ConfigurationBuilder;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.legacy.ConnectionParameter;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.FileUtils;
-import at.gv.egovernment.moa.util.XPathUtils;
-
-/**
- * Builds the configuration for MOA-ID Proxy.
- */
-public class ProxyConfigurationBuilder extends ConfigurationBuilder {
-
- /**
- * Default online application configuration file name
- * (used when <code>/OnlineApplication/ProxyComponent@configFileURL</code> is <code>null</code>).
- */
- public static final String DEFAULT_OA_CONFIG_FILENAME = "MOAConfig.xml";
-
- /** an XPATH-Expression */
- private static final String PROXY_AUTH_XPATH =
- ROOT + CONF + "ProxyComponent/" + CONF + "AuthComponent";
- /** an XPATH-Expression */
- protected static final String ROOTOA = "/" + CONF + "Configuration/";
- /** an XPATH-Expression */
- private static final String OA_PROXY_COMPONENT_XPATH = CONF + "ProxyComponent";
- /** an XPATH-Expression */
- private static final String OA_PROXY_COMPONENT_ABSOLUTE_XPATH = ROOT + CONF + "OnlineApplication/" + CONF + "ProxyComponent";
- /** an XPATH-Expression */
- private static final String OA_PROXY_URL_XPATH = CONF + "ProxyComponent/@configFileURL";
- /** an XPATH-Expression */
- private static final String OA_PROXY_SESSION_TIMEOUT_XPATH = CONF + "ProxyComponent/@sessionTimeOut";
- /** an XPATH-Expression */
- private static final String OA_PROXY_LOGIN_PARA_XPATH = CONF + "ProxyComponent/@loginParameterResolverImpl";
- /** an XPATH-Expression */
- private static final String OA_PROXY_LOGIN_PARA_CONF_XPATH = CONF + "ProxyComponent/@loginParameterResolverConfiguration";
-
- private static final String OA_PROXY_CONNECTION_BUILDER_XPATH = CONF + "ProxyComponent/@connectionBuilderImpl";
- /** an XPATH-Expression */
- private static final String OA_PROXY_ERROR_REDIRECT_URL_XPATH = CONF + "ProxyComponent/@errorRedirectURL";
- /** an XPATH-Expression */
- protected static final String OACONF_LOGIN_TYPE_XPATH =
- ROOTOA + CONF + "LoginType";
- /** an XPATH-Expression */
- protected static final String OACONF_BINDING_TYPE_XPATH =
- ROOTOA + CONF + "Binding";
- /** an XPATH-Expression */
- protected static final String OACONF_PARAM_AUTH_PARAMETER_XPATH =
- ROOTOA + CONF + "ParamAuth/" + CONF + "Parameter";
- /** an XPATH-Expression */
- protected static final String OACONF_USER_ID_XPATH =
- ROOTOA + CONF + "BasicAuth/" + CONF + "UserID";
- /** an XPATH-Expression */
- protected static final String OACONF_PASSWORD_XPATH =
- ROOTOA + CONF + "BasicAuth/" + CONF + "Password";
- /** an XPATH-Expression */
- protected static final String OACONF_HEADER_AUTH_HEADER_XPATH =
- ROOTOA + CONF + "HeaderAuth/" + CONF + "Header";
-
- /**
- * Creates a new <code>MOAConfigurationProvider</code>.
- *
- * @param configElem The root element of the MOA-ID configuration.
- */
- public ProxyConfigurationBuilder(Element configElem, String rootConfigDir) {
- super(configElem, rootConfigDir);
- }
-
- /**
- * Method buildOAConfiguration.
- *
- * Build an {@link OAConfiguration} Object from the given configuration DOM element
- *
- * @param root
- * @return OAConfiguration
- * @throws ConfigurationException
- */
- public OAConfiguration buildOAConfiguration(Element root) throws ConfigurationException{
-
- OAConfiguration oaConfiguration = new OAConfiguration();
-
- //The LoginType hast to be "stateless" or "stateful" to be valid
-
- oaConfiguration.setLoginType(
- XPathUtils.getElementValue(root, OACONF_LOGIN_TYPE_XPATH, null));
-
- oaConfiguration.setBinding(
- XPathUtils.getElementValue(root, OACONF_BINDING_TYPE_XPATH, OAConfiguration.BINDUNG_FULL));
-
- //Try to build the Parameter Auth Parameters
- NodeIterator paramAuthIter =
- XPathUtils.selectNodeIterator(
- root,
- OACONF_PARAM_AUTH_PARAMETER_XPATH);
- Element paramAuthElem;
- HashMap paramAuthMap = new HashMap();
- while ((paramAuthElem = (Element) paramAuthIter.nextNode()) != null) {
- String name = XPathUtils.getAttributeValue(paramAuthElem, "@Name", null);
- String value = XPathUtils.getAttributeValue(paramAuthElem, "@Value", null);
- if (paramAuthMap.containsKey(name))
- throw new ConfigurationException("config.06", new Object[]{"Doppelter Wert für Parameter per HeaderAuthentication"});
- paramAuthMap.put(name, value);
- }
- oaConfiguration.setParamAuthMapping(paramAuthMap);
- // Try to build the BasicAuthParameters
- oaConfiguration.setBasicAuthUserIDMapping(
- XPathUtils.getElementValue(root, OACONF_USER_ID_XPATH, null));
- oaConfiguration.setBasicAuthPasswordMapping(
- XPathUtils.getElementValue(root, OACONF_PASSWORD_XPATH, null));
-
- //Try to build the Parameter Auth Parameters
- NodeIterator headerAuthIter = XPathUtils.selectNodeIterator(root,OACONF_HEADER_AUTH_HEADER_XPATH);
-
- Element headerAuthElem;
- HashMap headerAuthMap = new HashMap();
- while ((headerAuthElem = (Element) headerAuthIter.nextNode()) != null) {
- String name =
- XPathUtils.getAttributeValue(headerAuthElem, "@Name", null);
- String value =
- XPathUtils.getAttributeValue(headerAuthElem, "@Value", null);
- // Contains Key (Neue Config-Exception: doppelte werte)
- if (headerAuthMap.containsKey(name))
- throw new ConfigurationException("config.06", new Object[]{"Doppelter Wert für Parameter per HeaderAuthentication"});
- headerAuthMap.put(name, value);
- }
- oaConfiguration.setHeaderAuthMapping(headerAuthMap);
-
- if (paramAuthMap.size() == 0) {
- if (oaConfiguration.getBasicAuthUserIDMapping() == null) {
- oaConfiguration.setAuthType(OAConfiguration.HEADER_AUTH);
- }
- else
- oaConfiguration.setAuthType(OAConfiguration.BASIC_AUTH);
- }
- else
- oaConfiguration.setAuthType(OAConfiguration.PARAM_AUTH);
-
- return oaConfiguration;
- }
-
-
- /**
- * Build an array of OnlineApplication Parameter Beans containing information
- * about the proxy component
- * @return An OAProxyParameter array containing beans
- * with all relevant information for the proxy component of the online
- * application
- */
- public OAProxyParameter[] buildOnlineApplicationProxyParameters() throws ConfigurationException{
-
- List oA_list = new ArrayList();
- NodeList OAIter = XPathUtils.selectNodeList(configElem_, OA_XPATH);
-
- for (int i = 0; i < OAIter.getLength(); i++) {
- Element oAElem = (Element) OAIter.item(i);
-
- Element proxyComponentElem = (Element) XPathUtils.selectSingleNode(oAElem,OA_PROXY_COMPONENT_XPATH);
- if (proxyComponentElem != null) {
- OAProxyParameter oap = new OAProxyParameter();
-
- oap.setPublicURLPrefix(oAElem.getAttribute("publicURLPrefix"));
- oap.setOaType(oAElem.getAttribute("type"));
- oap.setConfigFileURL(XPathUtils.getAttributeValue(oAElem, OA_PROXY_URL_XPATH, null));
- oap.setConfigFileURL(FileUtils.makeAbsoluteURL(oap.getConfigFileURL(), rootConfigFileDir_));
- // default session time out: 3600 sec = 1 h
- oap.setSessionTimeOut(new Integer(XPathUtils.getAttributeValue(oAElem,OA_PROXY_SESSION_TIMEOUT_XPATH,"3600")).intValue());
- oap.setLoginParameterResolverImpl(XPathUtils.getAttributeValue(oAElem, OA_PROXY_LOGIN_PARA_XPATH, null));
- oap.setLoginParameterResolverConfiguration(XPathUtils.getAttributeValue(oAElem, OA_PROXY_LOGIN_PARA_CONF_XPATH, null));
- oap.setLoginParameterResolverConfiguration(FileUtils.makeAbsoluteURL(oap.getLoginParameterResolverConfiguration(), rootConfigFileDir_));
- oap.setConnectionBuilderImpl(XPathUtils.getAttributeValue(oAElem,OA_PROXY_CONNECTION_BUILDER_XPATH, null));
- oap.setErrorRedirctURL(XPathUtils.getAttributeValue(oAElem,OA_PROXY_ERROR_REDIRECT_URL_XPATH, null));
-
- ConnectionParameter conPara = buildConnectionParameter(proxyComponentElem);
- oap.setConnectionParameter(conPara);
-
- OAConfiguration oaConf = buildOAConfiguration(getOAConfigElement(oap));
- oap.setOaConfiguration(oaConf);
-
- oA_list.add(oap);
- }
- }
- OAProxyParameter[] result =
- new OAProxyParameter[oA_list.size()];
- oA_list.toArray(result);
-
- return result;
-
- }
-
- /**
- * Reads the configuration file of the online application, and creates a DOM tree from it.
- * If <code>/OnlineApplication/ProxyComponent@configFileURL</code> is not given,
- * uses default configuration file location.
- *
- * @param oap configuration data of online application, meant for use by MOA-ID-PROXY
- * @return Element DOM tree root element
- * @throws ConfigurationException on any exception thrown
- */
- private Element getOAConfigElement(OAProxyParameter oap) throws ConfigurationException
- {
- try {
- String configFileURL = oap.getConfigFileURL();
- if (configFileURL == null) {
- // use default config file URL, when config file URL is not given
- configFileURL = oap.getConnectionParameter().getUrl();
- if (configFileURL.charAt(configFileURL.length() - 1) != '/')
- configFileURL += "/";
- configFileURL += DEFAULT_OA_CONFIG_FILENAME;
- }
- Logger.info("Loading MOA-OA configuration " + configFileURL);
- Element configElem = DOMUtils.parseXmlValidating(
- new ByteArrayInputStream(FileUtils.readURL(configFileURL)));
- return configElem;
- }
- catch (Throwable t) {
- throw new ConfigurationException("config.03", new Object[] {"OAConfiguration"} , t);
- }
- }
-
- /**
- * Build a bean containing all information about the ProxyComponent
- * @return The ConnectionParameter for the Proxy Component
- */
- public ConnectionParameter buildAuthComponentConnectionParameter()
- {
-
- Element connectionParameter = (Element) XPathUtils.selectSingleNode(configElem_, PROXY_AUTH_XPATH);
- if (connectionParameter==null) return null;
- return buildConnectionParameter(connectionParameter);
-
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationProvider.java
deleted file mode 100644
index 66d330d20..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/proxy/ProxyConfigurationProvider.java
+++ /dev/null
@@ -1,260 +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.
- ******************************************************************************/
-/*
- * Copyright 2003 Federal Chancellery Austria
- * MOA-ID has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-
-package at.gv.egovernment.moa.id.config.proxy;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.legacy.ConnectionParameter;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.FileUtils;
-
-/**
- * A class providing access to the Proxy Part of the MOA-ID configuration data.
- *
- * <p>Configuration data is read from an XML file, whose location is given by
- * the <code>moa.id.configuration</code> system property.</p>
- * <p>This class implements the Singleton pattern. The <code>reload()</code>
- * method can be used to update the configuration data. Therefore, it is not
- * guaranteed that consecutive calls to <code>getInstance()</code> will return
- * the same <code>ProxyConfigurationProvider</code> all the time. During the
- * processing of a web service request, the current
- * <code>TransactionContext</code> should be used to obtain the
- * <code>ProxyConfigurationProvider</code> local to that request.</p>
- *
- * @author Stefan Knirsch
- */
-public class ProxyConfigurationProvider extends ConfigurationProvider {
-
- /** Singleton instance. <code>null</code>, if none has been created. */
- private static ProxyConfigurationProvider instance;
-
-
- //
- // configuration data
- //
- /**
- * connection parameters for connection to MOA ID Auth component
- */
- private ConnectionParameter authComponentConnectionParameter;
- /**
- * configuration parameters for online applications
- */
- private OAProxyParameter[] onlineApplicationProxyParameter;
-
- /**
- * Return the single instance of configuration data.
- *
- * @return ProxyConfigurationProvider The current configuration data.
- * @throws ConfigurationException
- */
- public static synchronized ProxyConfigurationProvider getInstance()
- throws ConfigurationException {
-
- if (instance == null) {
- reload();
- }
- return instance;
- }
-
- /**
- * Reload the configuration data and set it if successful.
- *
- * @return ProxyConfigurationProvider The loaded configuration data.
- * @throws ConfigurationException Failure to load the configuration data.
- */
- public static synchronized ProxyConfigurationProvider reload()
- throws ConfigurationException {
- String fileName = System.getProperty(PROXY_CONFIG_PROPERTY_NAME);
- if (fileName == null) {
- throw new ConfigurationException("config.20", null);
- }
- Logger.info("Loading MOA-ID-PROXY configuration " + fileName);
-
- instance = new ProxyConfigurationProvider(fileName);
- return instance;
- }
-
- /**
- * Constructor for ProxyConfigurationProvider.
- */
- public ProxyConfigurationProvider(String fileName)
- throws ConfigurationException {
-
- load(fileName);
- }
-
- /**
- * Load the configuration data from XML file with the given name and build
- * the internal data structures representing the MOA configuration.
- *
- * @param fileName The name of the XML file to load.
- * @throws ConfigurationException The MOA configuration could not be
- * read/built.
- */
- private void load(String fileName) throws ConfigurationException {
- FileInputStream stream = null;
- Element configElem;
- ProxyConfigurationBuilder builder;
-
- try {
- // load the main config file
- stream = new FileInputStream(fileName);
- configElem = DOMUtils.parseXmlValidating(stream);
- }
- catch (Throwable t) {
- throw new ConfigurationException("config.03", null, t);
- }
- finally {
- try {
- if (stream != null) {
- stream.close();
- }
- }
- catch (IOException e) {
- }
- }
- try {
- // determine the directory of the root config file
- rootConfigFileDir = new File(fileName).getParent();
- try {
- rootConfigFileDir = new File(rootConfigFileDir).toURL().toString();
- } catch (MalformedURLException t) {
- throw new ConfigurationException("config.03", null, t);
- }
-
- // build the internal datastructures
- builder = new ProxyConfigurationBuilder(configElem, rootConfigFileDir);
- authComponentConnectionParameter = builder.buildAuthComponentConnectionParameter();
-
- onlineApplicationProxyParameter = builder.buildOnlineApplicationProxyParameters();
- for(int i = 0; i < onlineApplicationProxyParameter.length; i++) {
- onlineApplicationProxyParameter[i].setConfigFileURL(FileUtils.makeAbsoluteURL(onlineApplicationProxyParameter[i].getConfigFileURL(), rootConfigFileDir));
- }
-
- genericConfiguration = builder.buildGenericConfiguration();
- defaultChainingMode = builder.getDefaultChainingMode();
- chainingModes = builder.buildChainingModes();
- trustedCACertificates = builder.getTrustedCACertificates();
- trustedCACertificates = FileUtils.makeAbsoluteURL(trustedCACertificates, rootConfigFileDir);
-
- }
- catch (Throwable t) {
- throw new ConfigurationException("config.02", null, t);
- }
- }
-
- public String getTrustedCACertificates() {
-
- return trustedCACertificates;
- }
-
- /**
- * @return the certstoreDirectory
- */
- public String getCertstoreDirectory() {
- if (genericConfiguration.containsKey(ConfigurationProvider.DIRECTORY_CERTSTORE_PARAMETER_PROPERTY))
- return (String)genericConfiguration.get(ConfigurationProvider.DIRECTORY_CERTSTORE_PARAMETER_PROPERTY);
- else
- return null;
- }
-
- /**
- * @return the trustmanagerrevoationchecking
- */
- public boolean isTrustmanagerrevoationchecking() {
- if (genericConfiguration.containsKey(ConfigurationProvider.TRUST_MANAGER_REVOCATION_CHECKING))
- return Boolean.valueOf((String)genericConfiguration.get(ConfigurationProvider.TRUST_MANAGER_REVOCATION_CHECKING));
- else
- return true;
- }
-
-
- /**
- * Return a bean containing all information about the ProxyComponent
- * @return The ConnectionParameter for the Proxy Component
- */
- public ConnectionParameter getAuthComponentConnectionParameter() {
- return authComponentConnectionParameter;
- }
-
- /**
- * Build an array of OnlineApplication Parameter Beans containing all
- * information about the proxy component of the online application
- * @return An OAProxyParameter array containing beans
- * with all relevant information for the proxy component of the online
- * application
- */
- public OAProxyParameter[] getOnlineApplicationParameters() {
- return onlineApplicationProxyParameter;
- }
- /**
- * Provides configuration information regarding the online application behind
- * the given URL, relevant to the MOA-ID Proxy component.
- *
- * @param oaURL URL requested for an online application
- * @return an <code>OAProxyParameter</code>, or <code>null</code>
- * if none is applicable
- */
- public OAProxyParameter getOnlineApplicationParameter(String oaURL) {
- OAProxyParameter[] oaParams = getOnlineApplicationParameters();
- for (int i = 0; i < oaParams.length; i++) {
- OAProxyParameter oaParam = oaParams[i];
- if (oaURL.startsWith(oaParam.getPublicURLPrefix()))
- return oaParam;
- }
- return null;
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java
index 136b40295..9532aa9ab 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java
@@ -25,7 +25,6 @@
*/
package at.gv.egovernment.moa.id.config.stork;
-import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -33,16 +32,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
-import at.gv.egovernment.moa.id.commons.db.dao.config.SAMLSigningParameter;
-import at.gv.egovernment.moa.id.commons.db.dao.config.STORK;
-import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
import at.gv.egovernment.moa.util.StringUtils;
-import org.opensaml.ws.message.encoder.MessageEncodingException;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
/**
* Encapsulates several STORK configuration parameters according MOA configuration
@@ -54,63 +51,71 @@ public class STORKConfig {
/** STORK SAML signature creation parameters */
private Properties props = null;
- private Map<String, CPEPS> cpepsMap = null;
+ private Map<String, CPEPS> cpepsMap = new HashMap<String, CPEPS>();
private String basedirectory = null;
private SignatureVerificationParameter sigverifyparam = null;
private List<StorkAttribute> attr = null;
- public STORKConfig(STORK stork, Properties props, String basedirectory) {
+ public STORKConfig(Properties props, String basedirectory) throws ConfigurationException {
this.basedirectory = basedirectory;
this.props = props;
//create CPEPS map
- //List<at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS> cpeps = stork.getCPEPS();
- List<at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS> cpeps = new ArrayList<at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS>(); // TODO Change this
-
- try {
- cpeps = stork.getCPEPS();
-
- } catch (NullPointerException ex) {
- Logger.error("CPEPS not configured!");
+ List<CPEPS> cpeps = new ArrayList<CPEPS>();
+
+ Map<String, String> storkCPEPSProps =
+ AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST + ".");
+ if (storkCPEPSProps != null) {
+ Set<String> keyValues = storkCPEPSProps.keySet();
+ for (Object elObj : keyValues) {
+ if (elObj instanceof String) {
+ String el = (String) elObj;
+ if (el.endsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY)) {
+ int index = el.indexOf(".");
+ String listCounter = el.substring(0, index);
+
+ if (MiscUtil.isNotEmpty(storkCPEPSProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY))) {
+ try {
+ CPEPS moacpep =
+ new CPEPS(storkCPEPSProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY),
+ new URL(storkCPEPSProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL)),
+ Boolean.valueOf(storkCPEPSProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_SUPPORT_XMLDSIG)));
+ cpepsMap.put(moacpep.getCountryCode(), moacpep);
+
+ } catch (MalformedURLException e) {
+ Logger.warn("CPEPS URL " +
+ storkCPEPSProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL) +
+ " are not parseable.", e);
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ attr = new ArrayList<StorkAttribute>();
+ Map<String, String> storkAttributeProps =
+ AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
+ MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST);
+ if (storkAttributeProps != null) {
+ Set<String> keyValues = storkAttributeProps.keySet();
+ for (Object elObj : keyValues) {
+ if (elObj instanceof String) {
+ String el = (String) elObj;
+ if (el.endsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME)) {
+ int index = el.indexOf(".");
+ String listCounter = el.substring(0, index);
+ StorkAttribute moaStorkAttr =
+ new StorkAttribute(storkAttributeProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME),
+ Boolean.valueOf(storkAttributeProps.get(listCounter + "." + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY)));
+ attr.add(moaStorkAttr);
+ }
+ }
+ }
}
-
- cpepsMap = new HashMap<String, CPEPS>();
-
- if (cpeps != null) {
- for(at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS cpep : cpeps) {
-
- try {
- CPEPS moacpep = new CPEPS(cpep.getCountryCode(), new URL(cpep.getURL()), cpep.isSupportsXMLSignature());
-
- cpepsMap.put(cpep.getCountryCode(), moacpep);
-
- } catch (MalformedURLException e) {
- Logger.warn("Error in MOA-ID Configuration. CPEP entry for country "
- + cpep.getCountryCode() + " has an invalid URL and is ignored.");
- }
- }
- /*catch (ParserConfigurationException e) {
- Logger.warn("Error in MOA-ID Configuration. CPEP entry for country "
- + cpep.getCountryCode() + " has an invalid Attribute and is ignored.");
- } catch (SAXException e) {
- Logger.warn("Error in MOA-ID Configuration. CPEP entry for country "
- + cpep.getCountryCode() + " has an invalid Attribute and is ignored.");
- } catch (IOException e) {
- Logger.warn("Error in MOA-ID Configuration. CPEP entry for country "
- + cpep.getCountryCode() + " has an invalid Attribute and is ignored.");
- } catch (MessageEncodingException e) {
- Logger.warn("Error in MOA-ID Configuration. CPEP entry for country "
- + cpep.getCountryCode() + " has an invalid Attribute and is ignored.");
- }*/
- }
- attr = new ArrayList<StorkAttribute>();
- if (stork != null && stork.getAttributes() != null) {
- for(StorkAttribute current : stork.getAttributes()) {
- attr.add(current);
- }
- }
-
}
public SignatureCreationParameter getSignatureCreationParameter() {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttribute.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttribute.java
new file mode 100644
index 000000000..87ec7fb0c
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttribute.java
@@ -0,0 +1,27 @@
+package at.gv.egovernment.moa.id.config.stork;
+
+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/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttributeProviderPlugin.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/StorkAttributeProviderPlugin.java
new file mode 100644
index 000000000..619af2358
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/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.config.stork;
+
+/**
+ * @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/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
index e3b7524ae..f486829bf 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java
@@ -30,7 +30,12 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.advancedlogging.StatisticLogger;
+
+import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.MOAIDAuthInitializer;
import at.gv.egovernment.moa.id.auth.builder.AuthenticationDataBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -40,8 +45,8 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.ProtocolNotActiveException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.servlet.AuthServlet;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationInterface;
@@ -97,8 +102,8 @@ public class DispatcherServlet extends AuthServlet{
String protocolRequestID = null;
try {
- Logger.info("REQUEST: " + req.getRequestURI());
- Logger.info("QUERY : " + req.getQueryString());
+ Logger.debug("REQUEST: " + req.getRequestURI());
+ Logger.debug("QUERY : " + req.getQueryString());
// *** start of error handling ***
@@ -129,6 +134,7 @@ public class DispatcherServlet extends AuthServlet{
if (errorRequest != null) {
RequestStorage.removePendingRequest(pendingRequestID);
+ MOAReversionLogger.getInstance().logEvent(errorRequest, MOAIDEventConstants.TRANSACTION_ERROR);
try {
IModulInfo handlingModule = ModulStorage
@@ -244,6 +250,7 @@ public class DispatcherServlet extends AuthServlet{
String ssoId = ssomanager.getSSOSessionID(req);
IRequest protocolRequest = null;
+ String uniqueSessionIdentifier = null;
try {
Object idObject = req.getParameter(PARAM_TARGET_PENDINGREQUESTID);
@@ -265,7 +272,27 @@ public class DispatcherServlet extends AuthServlet{
}
} else {
try {
- protocolRequest = info.preProcess(req, resp, action);
+
+ //load unique session identifier with SSO-sessionID
+ uniqueSessionIdentifier = ssomanager.getUniqueSessionIdentifier(ssoId);
+ if (MiscUtil.isEmpty(uniqueSessionIdentifier))
+ uniqueSessionIdentifier = Random.nextRandom();
+ TransactionIDUtils.setSessionId(uniqueSessionIdentifier);
+
+ //set transactionID to Logger
+ protocolRequestID = Random.nextRandom();
+ TransactionIDUtils.setTransactionId(protocolRequestID);
+
+ //log information for security and process reversion
+ MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.SESSION_CREATED, uniqueSessionIdentifier);
+ MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.TRANSACTION_CREATED, protocolRequestID);
+ MOAReversionLogger.getInstance().logEvent(uniqueSessionIdentifier, protocolRequestID, MOAIDEventConstants.TRANSACTION_IP, req.getRemoteAddr());
+
+ protocolRequest = info.preProcess(req, resp, action, uniqueSessionIdentifier, protocolRequestID);
+
+ if (protocolRequest != null)
+ MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
+ protocolRequest, MOAIDEventConstants.AUTHPROTOCOL_TYPE, protocolRequest.requestedModule());
//request is a valid interfederation response
if (protocolRequest != null &&
@@ -279,7 +306,7 @@ public class DispatcherServlet extends AuthServlet{
//create interfederated MOASession
String sessionID =
AuthenticationSessionStoreage.createInterfederatedSession(protocolRequest, true, ssoId);
- req.getParameterMap().put(PARAM_SESSIONID, new String[]{ sessionID });
+ req.getParameterMap().put(MOAIDAuthConstants.PARAM_SESSIONID, new String[]{ sessionID });
Logger.info("PreProcessing of SSO interfederation response complete. ");
@@ -287,8 +314,8 @@ public class DispatcherServlet extends AuthServlet{
} else if (protocolRequest != null &&
MiscUtil.isNotEmpty(protocolRequest.getRequestID())) {
- OAAuthParameter oaParams = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
- if (oaParams.isSTORKPVPGateway() || !oaParams.isPerformLocalAuthenticationOnInterfederationError()) {
+ OAAuthParameter oaParams = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
+ if (!oaParams.isPerformLocalAuthenticationOnInterfederationError()) {
// -> send end error to service provider
Logger.info("Federated authentication for entity " + protocolRequest.getOAURL()
+ " FAILED. Sending error message to service provider.");
@@ -318,8 +345,8 @@ public class DispatcherServlet extends AuthServlet{
else
moduleAction = info.getAction(protocolRequest.requestedAction());
- protocolRequestID = Random.nextRandom();
- protocolRequest.setRequestID(protocolRequestID);
+ protocolRequest.setRequestID(protocolRequestID);
+ protocolRequest.setSessionIdentifier(uniqueSessionIdentifier);
RequestStorage.setPendingRequest(protocolRequest);
Logger.debug(DispatcherServlet.class.getName()+": Create PendingRequest with ID " + protocolRequestID + ".");
@@ -379,7 +406,7 @@ public class DispatcherServlet extends AuthServlet{
boolean needAuthentication = moduleAction.needAuthentication(protocolRequest, req, resp);
if (needAuthentication) {
-
+
//check if interfederation IDP is requested
ssomanager.checkInterfederationIsRequested(req, resp, protocolRequest);
@@ -391,13 +418,16 @@ public class DispatcherServlet extends AuthServlet{
Logger.warn("Request sends an old SSO Session ID("+ssoId+")! " +
"Invalidate the corresponding MOASession with ID="+ correspondingMOASession);
+ MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
+ protocolRequest, MOAIDEventConstants.AUTHPROCESS_SSO_INVALID);
+
AuthenticationSessionStoreage.destroySession(correspondingMOASession);
ssomanager.deleteSSOSessionID(req, resp);
}
}
//load Parameters from OnlineApplicationConfiguration
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(protocolRequest.getOAURL());
if (oaParam == null) {
@@ -421,6 +451,13 @@ public class DispatcherServlet extends AuthServlet{
boolean tryperform = authmanager.tryPerformAuthentication(
req, resp);
+ if (tryperform)
+ MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
+ protocolRequest, MOAIDEventConstants.AUTHPROCESS_FINISHED);
+ else
+ MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
+ protocolRequest, MOAIDEventConstants.AUTHPROCESS_SERVICEPROVIDER, protocolRequest.getOAURL());
+
if (protocolRequest.forceAuth()) {
if (!tryperform) {
authmanager.doAuthentication(req, resp,
@@ -449,6 +486,9 @@ public class DispatcherServlet extends AuthServlet{
if (useSSOOA && isValidSSOSession) {
+ MOAReversionLogger.getInstance().logEvent(protocolRequest.getOnlineApplicationConfiguration(),
+ protocolRequest, MOAIDEventConstants.AUTHPROCESS_SSO);
+
moasessionID = ssomanager.getMOASession(ssoId);
moasession = AuthenticationSessionStoreage.getSession(moasessionID);
@@ -459,7 +499,7 @@ public class DispatcherServlet extends AuthServlet{
}
} else {
- moasessionID = (String) req.getParameter(PARAM_SESSIONID);
+ moasessionID = (String) req.getParameter(MOAIDAuthConstants.PARAM_SESSIONID);
moasession = AuthenticationSessionStoreage.getSession(moasessionID);
}
@@ -475,7 +515,7 @@ public class DispatcherServlet extends AuthServlet{
}
} else {
- moasessionID = (String) req.getParameter(PARAM_SESSIONID);
+ moasessionID = (String) req.getParameter(MOAIDAuthConstants.PARAM_SESSIONID);
moasession = AuthenticationSessionStoreage.getSession(moasessionID);
moasessionID = AuthenticationSessionStoreage.changeSessionID(moasession);
@@ -532,6 +572,9 @@ public class DispatcherServlet extends AuthServlet{
}
+ //log transaction_destroy to reversionslog
+ MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.TRANSACTION_DESTROYED, protocolRequestID);
+
} catch (WrongParametersException ex) {
handleWrongParameters(ex, req, resp);
@@ -544,11 +587,13 @@ public class DispatcherServlet extends AuthServlet{
}
finally {
- ConfigurationDBUtils.closeSession();
+
+
+ TransactionIDUtils.removeTransactionId();
+ TransactionIDUtils.removeSessionId();
}
- Logger.info("Clossing Dispatcher processing loop");
- Logger.info("Http response prepared sent: " + resp.toString());
+ Logger.debug("Clossing Dispatcher processing loop");
}
@Override
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/AuthenticationManager.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/AuthenticationManager.java
index 49f3df25c..f54cffc54 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/AuthenticationManager.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/AuthenticationManager.java
@@ -61,10 +61,13 @@ import org.opensaml.xml.XMLObject;
import org.opensaml.xml.security.SecurityException;
import org.springframework.beans.factory.annotation.Autowired;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.builder.LoginFormBuilder;
import at.gv.egovernment.moa.id.auth.builder.SendAssertionFormBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionExtensions;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
@@ -73,7 +76,7 @@ import at.gv.egovernment.moa.id.auth.parser.StartAuthentificationParameterParser
import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.SLOInformationContainer;
import at.gv.egovernment.moa.id.data.SLOInformationImpl;
@@ -103,7 +106,7 @@ import at.gv.egovernment.moa.id.util.Random;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
-public class AuthenticationManager implements MOAIDAuthConstants {
+public class AuthenticationManager extends MOAIDAuthConstants {
private static final AuthenticationManager INSTANCE = new AuthenticationManager();
@@ -134,7 +137,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
String sessionID = (String) request.getParameter(PARAM_SESSIONID);
if (sessionID != null) {
- Logger.info("got MOASession: " + sessionID);
+ Logger.debug("Find MOASession: " + sessionID);
AuthenticationSession authSession;
try {
authSession = AuthenticationSessionStoreage.getSession(sessionID);
@@ -148,7 +151,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
authSession.setAuthenticatedUsed(true);
AuthenticationSessionStoreage.storeSession(authSession);
-
+
return true; // got authenticated
}
}
@@ -191,7 +194,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
} catch (MOADatabaseException e) {
Logger.warn("Delete MOASession FAILED.");
- sloContainer.putFailedOA(AuthConfigurationProvider.getInstance().getPublicURLPrefix());
+ sloContainer.putFailedOA(AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix());
}
@@ -254,7 +257,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
AssertionStorage.getInstance().put(relayState, sloContainer);
- String timeOutURL = AuthConfigurationProvider.getInstance().getPublicURLPrefix()
+ String timeOutURL = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix()
+ "/idpSingleLogout"
+ "?restart=" + relayState;
@@ -335,6 +338,10 @@ public class AuthenticationManager implements MOAIDAuthConstants {
authSession.setAuthenticated(false);
//HTTPSessionUtils.setHTTPSessionString(session, MOA_SESSION, null); // remove moa session from HTTP Session
+
+ //log Session_Destroy to reversionslog
+ AuthenticationSessionExtensions sessionExtensions = AuthenticationSessionStoreage.getAuthenticationSessionExtensions(moaSessionID);
+ MOAReversionLogger.getInstance().logEvent(MOAIDEventConstants.SESSION_DESTROYED, sessionExtensions.getUniqueSessionId());
AuthenticationSessionStoreage.destroySession(moaSessionID);
@@ -351,13 +358,17 @@ public class AuthenticationManager implements MOAIDAuthConstants {
HttpServletResponse response, IRequest target)
throws ServletException, IOException, MOAIDException {
- Logger.info("Starting authentication ...");
+ Logger.info("Starting authentication ...");
+ MOAReversionLogger.getInstance().logEvent(target.getOnlineApplicationConfiguration(),
+ target, MOAIDEventConstants.AUTHPROCESS_START);
if (MiscUtil.isEmpty(target.getRequestedIDP())) {
perfomLocalAuthentication(request, response, target);
} else {
Logger.info("Use IDP " + target.getRequestedIDP() + " for authentication ...");
+ MOAReversionLogger.getInstance().logEvent(target.getOnlineApplicationConfiguration(),
+ target, MOAIDEventConstants.AUTHPROCESS_INTERFEDERATION);
buildPVP21AuthenticationRequest(request, response, target);
}
@@ -369,8 +380,11 @@ public class AuthenticationManager implements MOAIDAuthConstants {
String form = SendAssertionFormBuilder.buildForm(target.requestedModule(),
target.requestedAction(), target.getRequestID(), oaParam,
- AuthConfigurationProvider.getInstance().getPublicURLPrefix());
-
+ AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix());
+
+ MOAReversionLogger.getInstance().logEvent(target.getOnlineApplicationConfiguration(),
+ target, MOAIDEventConstants.AUTHPROCESS_SSO_ASK_USER_START);
+
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = new PrintWriter(response.getOutputStream());
out.print(form);
@@ -386,18 +400,22 @@ public class AuthenticationManager implements MOAIDAuthConstants {
Logger.debug("Build PVP 2.1 authentication request");
//get IDP metadata
- try {
- OAAuthParameter idp = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(target.getRequestedIDP());
- OAAuthParameter sp = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(target.getOAURL());
+
+ OAAuthParameter idp = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(target.getRequestedIDP());
+ OAAuthParameter sp = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(target.getOAURL());
- if (!idp.isInderfederationIDP() || !idp.isInboundSSOInterfederationAllowed()) {
- Logger.info("Requested interfederation IDP " + target.getRequestedIDP() + " is not valid for interfederation.");
- Logger.info("Switch to local authentication on this IDP ... ");
- perfomLocalAuthentication(request, response, target);
- return;
+ if (!idp.isInderfederationIDP() || !idp.isInboundSSOInterfederationAllowed()) {
+ Logger.info("Requested interfederation IDP " + target.getRequestedIDP() + " is not valid for interfederation.");
+ Logger.debug("isInderfederationIDP:" + String.valueOf(idp.isInderfederationIDP())
+ + " isInboundSSOAllowed:" + String.valueOf(idp.isInboundSSOInterfederationAllowed()));
+ Logger.info("Switch to local authentication on this IDP ... ");
+
+ perfomLocalAuthentication(request, response, target);
+ return;
- }
+ }
+ try {
EntityDescriptor idpEntity = MOAMetadataProvider.getInstance().
getEntityDescriptor(target.getRequestedIDP());
@@ -514,6 +532,10 @@ public class AuthenticationManager implements MOAIDAuthConstants {
//build and send request without an error
requiredLocalAuthentication = false;
+ MOAReversionLogger.getInstance().logEvent(target.getOnlineApplicationConfiguration(),
+ target, MOAIDEventConstants.AUTHPROCESS_INTERFEDERATION_IDP, idpEntity.getEntityID());
+
+
} else {
Logger.warn("Requested IDP " + target.getRequestedIDP()
+ " does not support POST or Redirect Binding.");
@@ -542,7 +564,11 @@ public class AuthenticationManager implements MOAIDAuthConstants {
if (requiredLocalAuthentication) {
Logger.info("Switch to local authentication on this IDP ... ");
- perfomLocalAuthentication(request, response, target);
+ if (idp.isPerformLocalAuthenticationOnInterfederationError())
+ perfomLocalAuthentication(request, response, target);
+
+ else
+ throw new AuthenticationException("auth.29", new String[]{target.getRequestedIDP()});
}
}
@@ -557,7 +583,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
response.setHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL, MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL);
response.addHeader(MOAIDAuthConstants.HEADER_CACHE_CONTROL, MOAIDAuthConstants.HEADER_VALUE_CACHE_CONTROL_IE);
- List<String> legacyallowed_prot = AuthConfigurationProvider.getInstance().getLegacyAllowedProtocols();
+ List<String> legacyallowed_prot = AuthConfigurationProviderFactory.getInstance().getLegacyAllowedProtocols();
//is legacy allowed
boolean legacyallowed = legacyallowed_prot.contains(target.requestedModule());
@@ -569,7 +595,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
try {
//check if an MOASession exists and if not create an new MOASession
//moasession = getORCreateMOASession(request);
- moasession = AuthenticationSessionStoreage.createSession(target.getRequestID());
+ moasession = AuthenticationSessionStoreage.createSession(target);
} catch (MOADatabaseException e1) {
Logger.error("Database Error! MOASession can not be created!");
@@ -592,6 +618,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
executionContext.put("useMandate", moasession.getUseMandate());
executionContext.put("bkuURL", moasession.getBkuURL());
executionContext.put(PARAM_SESSIONID, moasession.getSessionID());
+ executionContext.put("pendingRequestID", target.getRequestID());
// create process instance
String processDefinitionId = ModuleRegistration.getInstance().selectProcess(executionContext);
@@ -620,8 +647,11 @@ public class AuthenticationManager implements MOAIDAuthConstants {
processEngine.start(processInstanceId);
} else {
+ MOAReversionLogger.getInstance().logEvent(target.getOnlineApplicationConfiguration(),
+ target, MOAIDEventConstants.AUTHPROCESS_BKUSELECTION_INIT);
+
//load Parameters from OnlineApplicationConfiguration
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(target.getOAURL());
if (oaParam == null) {
@@ -642,7 +672,7 @@ public class AuthenticationManager implements MOAIDAuthConstants {
//Build authentication form
- String publicURLPreFix = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ String publicURLPreFix = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
String loginForm = LoginFormBuilder.buildLoginForm(target.requestedModule(),
target.requestedAction(), oaParam, publicURLPreFix, moasession.getSessionID());
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IAction.java
index 529e2ab81..fda92d71a 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IAction.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IAction.java
@@ -31,7 +31,7 @@ import at.gv.egovernment.moa.id.data.AuthenticationData;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationInterface;
-public interface IAction extends MOAIDAuthConstants {
+public interface IAction {
public SLOInformationInterface processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, IAuthData authData)
throws MOAIDException;
public boolean needAuthentication(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IModulInfo.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IModulInfo.java
index 05b6ec1f3..bdbb1b458 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IModulInfo.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IModulInfo.java
@@ -35,7 +35,7 @@ public interface IModulInfo {
public IAction getAction(String action);
public IRequest preProcess(HttpServletRequest request,
- HttpServletResponse response, String action)
+ HttpServletResponse response, String action, String sessionID, String transactionID)
throws MOAIDException;
public IAction canHandleRequest(HttpServletRequest request,
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IRequest.java
index aaeb84f92..6f43b3ee7 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/IRequest.java
@@ -22,10 +22,12 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.moduls;
+import java.util.Date;
import java.util.List;
import org.opensaml.saml2.core.Attribute;
+import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.protocols.pvp2x.messages.MOAResponse;
public interface IRequest {
@@ -40,9 +42,12 @@ public interface IRequest {
public String getTarget();
public void setRequestID(String id);
public String getRequestID();
+ public String getSessionIdentifier();
+ public void setSessionIdentifier(String sessionIdentifier);
public String getRequestedIDP();
public MOAResponse getInterfederationResponse();
public List<Attribute> getRequestedAttributes();
+ public IOAAuthParameters getOnlineApplicationConfiguration();
//public void setTarget();
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestImpl.java
index 4a54a516b..26fb7bd29 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestImpl.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestImpl.java
@@ -27,6 +27,7 @@ import java.util.List;
import org.opensaml.saml2.core.Attribute;
+import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.protocols.pvp2x.messages.MOAResponse;
public abstract class RequestImpl implements IRequest, Serializable{
@@ -41,6 +42,8 @@ public abstract class RequestImpl implements IRequest, Serializable{
private String action = null;
private String target = null;
private String requestID;
+ private String sessionIdentifier;
+ private IOAAuthParameters OAConfiguration = null;
//MOA-ID interfederation
private String requestedIDP = null;
@@ -147,6 +150,23 @@ public abstract class RequestImpl implements IRequest, Serializable{
this.response = response;
}
+ public String getSessionIdentifier() {
+ return this.sessionIdentifier;
+
+ }
+
+ public void setSessionIdentifier(String sessionIdentifier) {
+ this.sessionIdentifier = sessionIdentifier;
+
+ }
+ public IOAAuthParameters getOnlineApplicationConfiguration() {
+ return this.OAConfiguration;
+ }
+
+ public void setOnlineApplicationConfiguration(IOAAuthParameters oaConfig) {
+ this.OAConfiguration = oaConfig;
+
+ }
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestStorage.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestStorage.java
index 21b4e2b65..f0b12431a 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestStorage.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/RequestStorage.java
@@ -22,6 +22,7 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.moduls;
+import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.storage.AssertionStorage;
@@ -34,6 +35,11 @@ public class RequestStorage {
try {
AssertionStorage storage = AssertionStorage.getInstance();
IRequest pendingRequest = storage.get(pendingReqID, IRequest.class);
+
+ //set transactionID and sessionID to Logger
+ TransactionIDUtils.setTransactionId(((IRequest)pendingRequest).getRequestID());
+ TransactionIDUtils.setSessionId(((IRequest)pendingRequest).getSessionIdentifier());
+
return pendingRequest;
} catch (MOADatabaseException e) {
@@ -49,7 +55,7 @@ public class RequestStorage {
if (pendingRequest instanceof IRequest) {
storage.put(((IRequest)pendingRequest).getRequestID(), pendingRequest);
-
+
} else {
throw new MOAIDException("auth.20", null);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java
index 68545e1c2..2a618272f 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java
@@ -25,10 +25,8 @@ package at.gv.egovernment.moa.id.moduls;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.Reader;
import java.io.StringWriter;
import java.net.URI;
import java.util.Date;
@@ -38,23 +36,21 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.hibernate.Query;
import org.hibernate.Session;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionExtensions;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
import at.gv.egovernment.moa.id.commons.db.dao.session.AuthenticatedSessionStore;
import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
import at.gv.egovernment.moa.id.commons.db.dao.session.OldSSOSessionIDStore;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.Random;
import at.gv.egovernment.moa.id.util.VelocityProvider;
@@ -74,21 +70,11 @@ public class SSOManager {
private static final int INTERFEDERATIONCOOKIEMAXAGE = 5 * 60;// sec
private static SSOManager instance = null;
- private static int sso_timeout;
public static SSOManager getInstance() {
if (instance == null) {
instance = new SSOManager();
-
- try {
- sso_timeout = (int) AuthConfigurationProvider.getInstance().getTimeOuts().getMOASessionUpdated().longValue();
-
- }
- catch (ConfigurationException e) {
- Logger.info("SSO Timeout can not be loaded from MOA-ID configuration. Use default Timeout with " + DEFAULTSSOTIMEOUT);
- sso_timeout = DEFAULTSSOTIMEOUT;
- }
-
+
}
return instance;
@@ -99,7 +85,7 @@ public class SSOManager {
String interIDP = httpReq.getParameter(MOAIDAuthConstants.INTERFEDERATION_IDP);
if (MiscUtil.isNotEmpty(protocolRequest.getRequestedIDP())) {
- Logger.info("Protocolspecific preprocessing already set interfederation IDP " + protocolRequest.getRequestedIDP());
+ Logger.debug("Protocolspecific preprocessing already set interfederation IDP " + protocolRequest.getRequestedIDP());
return;
}
@@ -151,7 +137,7 @@ public class SSOManager {
//check if session is out of lifetime
Date now = new Date();
- long maxSSOSessionTime = AuthConfigurationProvider.getInstance().getTimeOuts().getMOASessionCreated().longValue() * 1000;
+ long maxSSOSessionTime = AuthConfigurationProviderFactory.getInstance().getSSOCreatedTimeOut() * 1000;
Date ssoSessionValidTo = new Date(storedSession.getCreated().getTime() + maxSSOSessionTime);
if (now.after(ssoSessionValidTo)) {
Logger.info("Found outdated SSO session information. Start reauthentication process ... ");
@@ -192,6 +178,24 @@ public class SSOManager {
}
+ public String getUniqueSessionIdentifier(String ssoSessionID) {
+ try {
+ if (MiscUtil.isNotEmpty(ssoSessionID)) {
+ String moaSessionID = AuthenticationSessionStoreage.getMOASessionSSOID(ssoSessionID);
+ if (MiscUtil.isNotEmpty(moaSessionID)) {
+ AuthenticationSessionExtensions extSessionInformation = AuthenticationSessionStoreage.getAuthenticationSessionExtensions(moaSessionID);
+ return extSessionInformation.getUniqueSessionId();
+
+ }
+ }
+ } catch (MOADatabaseException e) {
+ Logger.debug("No SSO Session with SSO sessionID: " + ssoSessionID);
+ }
+
+ return null;
+ }
+
+
public String existsOldSSOSession(String ssoId) {
Logger.trace("Check that the SSOID has already been used");
@@ -249,7 +253,15 @@ public class SSOManager {
}
public void setSSOSessionID(HttpServletRequest httpReq, HttpServletResponse httpResp, String ssoId) {
- setCookie(httpReq, httpResp, SSOCOOKIE, ssoId, sso_timeout);
+ int ssoTimeOut;
+ try {
+ ssoTimeOut = (int) AuthConfigurationProviderFactory.getInstance().getSSOCreatedTimeOut();
+
+ } catch (ConfigurationException e) {
+ Logger.info("SSO Timeout can not be loaded from MOA-ID configuration. Use default Timeout with " + DEFAULTSSOTIMEOUT);
+ ssoTimeOut = DEFAULTSSOTIMEOUT;
+ }
+ setCookie(httpReq, httpResp, SSOCOOKIE, ssoId, -1);
}
@@ -305,7 +317,7 @@ public class SSOManager {
InputStream is = null;
String pathLocation = null;
try {
- String rootconfigdir = AuthConfigurationProvider.getInstance().getRootConfigFileDir();
+ String rootconfigdir = AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir();
pathLocation = rootconfigdir + HTMLTEMPLATESDIR + HTMLTEMPLATEFULL;
File file = new File(new URI(pathLocation));
is = new FileInputStream(file);
@@ -347,7 +359,7 @@ public class SSOManager {
BufferedReader reader = new BufferedReader(new InputStreamReader(is ));
//set default elements to velocity context
- context.put("contextpath", AuthConfigurationProvider.getInstance().getPublicURLPrefix());
+ context.put("contextpath", AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix());
StringWriter writer = new StringWriter();
//velocityEngine.evaluate(context, writer, "SLO_Template", reader);
@@ -363,12 +375,7 @@ public class SSOManager {
Cookie[] cookies = httpReq.getCookies();
if (cookies != null) {
- for (Cookie cookie : cookies) {
-
- // funktioniert nicht, da Cookie seltsamerweise immer unsecure übertragen wird
- // (firefox)
- // if (cookie.getName().equals(SSOCOOKIE) && cookie.getSecure()) {
-
+ for (Cookie cookie : cookies) {
if (cookie.getName().equals(cookieName)) {
return cookie.getValue();
}
@@ -383,15 +390,14 @@ public class SSOManager {
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setMaxAge(maxAge);
cookie.setSecure(true);
-
- //TODO: could be a problem if the IDP is accessible from different contextPaths or Domains
+ cookie.setHttpOnly(true);
cookie.setPath(httpReq.getContextPath());
-
+
httpResp.addCookie(cookie);
}
private void deleteCookie(HttpServletRequest httpReq, HttpServletResponse httpResp, String cookieName) {
- setCookie(httpReq, httpResp, cookieName, "", 1);
+ setCookie(httpReq, httpResp, cookieName, "", 0);
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
index 012dfe90b..a75a5de8c 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
@@ -61,7 +61,7 @@ public class ProcessInstanceStoreDAOImpl implements ProcessInstanceStoreDAO {
}
throw e;
} finally {
- MOASessionDBUtils.closeSession();
+ //MOASessionDBUtils.closeSession();
}
}
if (result != null) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Configuration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Configuration.java
index 93a2f7d6d..e2ac97535 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Configuration.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Configuration.java
@@ -25,7 +25,7 @@ package at.gv.egovernment.moa.id.protocols.oauth20;
import java.util.Properties;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.util.FileUtils;
public class OAuth20Configuration {
@@ -49,8 +49,8 @@ public class OAuth20Configuration {
private OAuth20Configuration() {
try {
- props = AuthConfigurationProvider.getInstance().getGeneralOAuth20ProperiesConfig();
- rootDir = AuthConfigurationProvider.getInstance().getRootConfigFileDir();
+ props = AuthConfigurationProviderFactory.getInstance().getGeneralOAuth20ProperiesConfig();
+ rootDir = AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir();
}
catch (ConfigurationException e) {
e.printStackTrace();
@@ -62,15 +62,15 @@ public class OAuth20Configuration {
}
public String getJWTKeyStorePassword() {
- return props.getProperty(JWT_KEYSTORE_PASSWORD);
+ return props.getProperty(JWT_KEYSTORE_PASSWORD).trim();
}
public String getJWTKeyName() {
- return props.getProperty(JWT_KEY_NAME);
+ return props.getProperty(JWT_KEY_NAME).trim();
}
public String getJWTKeyPassword() {
- return props.getProperty(JWT_KEY_PASSWORD);
+ return props.getProperty(JWT_KEY_PASSWORD).trim();
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Constants.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Constants.java
index 75501d812..b0736ff2e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Constants.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/OAuth20Constants.java
@@ -48,6 +48,7 @@ public final class OAuth20Constants {
public static final String PARAM_RESPONSE_TYPE = "response_type";
public static final String PARAM_REDIRECT_URI = "redirect_uri";
public static final String PARAM_STATE = "state";
+ public static final String PARAM_NONCE = "nonce";
public static final String PARAM_GRANT_TYPE = "grant_type";
public static final String PARAM_GRANT_TYPE_VALUE_AUTHORIZATION_CODE = "authorization_code";
public static final String PARAM_CLIENT_ID = "client_id";
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java
index 583120a86..439d08e0b 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java
@@ -30,6 +30,7 @@ import org.apache.commons.lang.StringUtils;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.protocols.oauth20.Pair;
+import at.gv.egovernment.moa.id.protocols.oauth20.protocol.OAuth20AuthRequest;
import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.BPKAttributeBuilder;
import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.EIDAuthBlock;
import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.EIDCcsURL;
@@ -116,6 +117,7 @@ public final class OAuth20AttributeBuilder {
buildersOpenId.add(new OpenIdIssueInstantAttribute());
buildersOpenId.add(new OpenIdAuthenticationTimeAttribute());
buildersOpenId.add(new OpenIdAudiencesAttribute());
+ buildersOpenId.add(new OpenIdNonceAttribute());
// profile
buildersProfile.add(new ProfileGivenNameAttribute());
@@ -173,10 +175,18 @@ public final class OAuth20AttributeBuilder {
}
private static void addAttibutes(final List<IAttributeBuilder> builders, final JsonObject jsonObject,
- final OAAuthParameter oaParam, final IAuthData authData) {
+ final OAAuthParameter oaParam, final IAuthData authData, OAuth20AuthRequest oAuthRequest) {
for (IAttributeBuilder b : builders) {
try {
- Pair<String, JsonPrimitive> attribute = b.build(oaParam, authData, generator);
+ //TODO: better solution requires more refactoring :(
+ Pair<String, JsonPrimitive> attribute = null;
+ if (b instanceof OpenIdNonceAttribute) {
+ OpenIdNonceAttribute nonceBuilder = (OpenIdNonceAttribute) b;
+ attribute = nonceBuilder.build(oaParam, authData, oAuthRequest, generator);
+
+ } else
+ attribute = b.build(oaParam, authData, generator);
+
if (attribute != null && !StringUtils.isEmpty(attribute.getSecond().getAsString())) {
jsonObject.add(attribute.getFirst(), attribute.getSecond());
}
@@ -188,33 +198,34 @@ public final class OAuth20AttributeBuilder {
}
public static void addScopeOpenId(final JsonObject jsonObject,
- final OAAuthParameter oaParam, final IAuthData authData) {
- addAttibutes(buildersOpenId, jsonObject, oaParam, authData);
+ final OAAuthParameter oaParam, final IAuthData authData,
+ final OAuth20AuthRequest oAuthRequest) {
+ addAttibutes(buildersOpenId, jsonObject, oaParam, authData, oAuthRequest);
}
public static void addScopeProfile(final JsonObject jsonObject,
final OAAuthParameter oaParam, final IAuthData authData) {
- addAttibutes(buildersProfile, jsonObject, oaParam, authData);
+ addAttibutes(buildersProfile, jsonObject, oaParam, authData, null);
}
public static void addScopeEID(final JsonObject jsonObject,
final OAAuthParameter oaParam, final IAuthData authData) {
- addAttibutes(buildersEID, jsonObject, oaParam, authData);
+ addAttibutes(buildersEID, jsonObject, oaParam, authData, null);
}
public static void addScopeEIDGov(final JsonObject jsonObject,
final OAAuthParameter oaParam, final IAuthData authData) {
- addAttibutes(buildersEIDGov, jsonObject, oaParam, authData);
+ addAttibutes(buildersEIDGov, jsonObject, oaParam, authData, null);
}
public static void addScopeMandate(final JsonObject jsonObject,
final OAAuthParameter oaParam, final IAuthData authData) {
- addAttibutes(buildersMandate, jsonObject, oaParam, authData);
+ addAttibutes(buildersMandate, jsonObject, oaParam, authData, null);
}
public static void addScopeSTORK(final JsonObject jsonObject,
final OAAuthParameter oaParam, final IAuthData authData) {
- addAttibutes(buildersSTORK, jsonObject, oaParam, authData);
+ addAttibutes(buildersSTORK, jsonObject, oaParam, authData, null);
}
/**
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OpenIdNonceAttribute.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OpenIdNonceAttribute.java
new file mode 100644
index 000000000..6baa69b1e
--- /dev/null
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OpenIdNonceAttribute.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * 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.protocols.oauth20.attributes;
+
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.data.IAuthData;
+import at.gv.egovernment.moa.id.protocols.oauth20.protocol.OAuth20AuthRequest;
+import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.IAttributeBuilder;
+import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.IAttributeGenerator;
+import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.AttributeException;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+public class OpenIdNonceAttribute implements IAttributeBuilder {
+
+ public String getName() {
+ return "nonce";
+ }
+
+ public <ATT> ATT build(OAAuthParameter oaParam, IAuthData authData,
+ IAttributeGenerator<ATT> g) throws AttributeException {
+ return g.buildStringAttribute(this.getName(), "", null);
+ }
+
+ public <ATT> ATT build(OAAuthParameter oaParam, IAuthData authData, OAuth20AuthRequest oAuthRequest,
+ IAttributeGenerator<ATT> g) throws AttributeException {
+ if (MiscUtil.isNotEmpty(oAuthRequest.getNonce()))
+ return g.buildStringAttribute(this.getName(), "", oAuthRequest.getNonce());
+ else
+ return null;
+ }
+
+ public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) {
+ return g.buildEmptyAttribute(this.getName(), "");
+ }
+
+}
+
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthAction.java
index 4c70ce995..d90df51e7 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthAction.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthAction.java
@@ -30,8 +30,10 @@ import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationImpl;
@@ -52,6 +54,7 @@ import at.gv.egovernment.moa.id.protocols.oauth20.json.OAuthSigner;
import at.gv.egovernment.moa.id.storage.AssertionStorage;
import at.gv.egovernment.moa.id.util.Random;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
class OAuth20AuthAction implements IAction {
@@ -61,8 +64,10 @@ class OAuth20AuthAction implements IAction {
OAuth20AuthRequest oAuthRequest = (OAuth20AuthRequest) req;
String responseType = oAuthRequest.getResponseType();
- String code = Random.nextRandom();
+ MOAReversionLogger.getInstance().logEvent(req, MOAIDEventConstants.AUTHPROTOCOL_OPENIDCONNECT_AUTHREQUEST);
+ String code = Random.nextRandom();
+
try {
String accessToken = UUID.randomUUID().toString();
@@ -126,8 +131,7 @@ class OAuth20AuthAction implements IAction {
Map<String, Object> params = new HashMap<String, Object>();
params.put(OAuth20Constants.RESPONSE_ACCESS_TOKEN, accessToken);
params.put(OAuth20Constants.RESPONSE_TOKEN_TYPE, OAuth20Constants.RESPONSE_TOKEN_TYPE_VALUE_BEARER);
- params.put(OAuth20Constants.RESPONSE_EXPIRES_IN, OpenIdExpirationTimeAttribute.expirationTime);
-
+ params.put(OAuth20Constants.RESPONSE_EXPIRES_IN, OpenIdExpirationTimeAttribute.expirationTime);
// build id token and scope
Pair<String, String> pair = buildIdToken(auth20SessionObject.getScope(), oAuthRequest,
authData);
@@ -142,14 +146,14 @@ class OAuth20AuthAction implements IAction {
private Pair<String, String> buildIdToken(String scope, OAuth20AuthRequest oAuthRequest, IAuthData authData)
throws MOAIDException, SignatureException {
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(oAuthRequest.getOAURL());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(oAuthRequest.getOAURL());
OAuthSigner signer = OAuth20SignatureUtil.loadSigner(authData.getIssuer());
OAuthJsonToken token = new OAuthJsonToken(signer);
StringBuilder resultScopes = new StringBuilder();
// always fill with open id
- OAuth20AttributeBuilder.addScopeOpenId(token.getPayloadAsJsonObject(), oaParam, authData);
+ OAuth20AttributeBuilder.addScopeOpenId(token.getPayloadAsJsonObject(), oaParam, authData, oAuthRequest);
resultScopes.append("openId");
for (String s : scope.split(" ")) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthRequest.java
index c47e366a1..3bef7844c 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20AuthRequest.java
@@ -30,9 +30,9 @@ import javax.servlet.http.HttpServletRequest;
import org.opensaml.saml2.core.Attribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAOAUTH20;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Constants;
import at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Util;
@@ -46,7 +46,7 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.builder.AttributQueryBuilder;
import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.IAttributeBuilder;
import at.gv.egovernment.moa.logging.Logger;
-class OAuth20AuthRequest extends OAuth20BaseRequest {
+public class OAuth20AuthRequest extends OAuth20BaseRequest {
private static final long serialVersionUID = 1L;
@@ -55,6 +55,7 @@ class OAuth20AuthRequest extends OAuth20BaseRequest {
private String redirectUri;
private String scope;
private String clientID;
+ private String nonce;
/**
* @return the responseType
@@ -131,6 +132,22 @@ class OAuth20AuthRequest extends OAuth20BaseRequest {
this.clientID = clientID;
}
+
+
+ /**
+ * @return the nonce
+ */
+ public String getNonce() {
+ return nonce;
+ }
+
+ /**
+ * @param nonce the nonce to set
+ */
+ public void setNonce(String nonce) {
+ this.nonce = nonce;
+ }
+
@Override
protected void populateSpecialParameters(HttpServletRequest request) throws OAuth20Exception {
this.setResponseType(this.getParam(request, OAuth20Constants.PARAM_RESPONSE_TYPE, true));
@@ -138,6 +155,7 @@ class OAuth20AuthRequest extends OAuth20BaseRequest {
this.setRedirectUri(this.getParam(request, OAuth20Constants.PARAM_REDIRECT_URI, true));
this.setClientID(this.getParam(request, OAuth20Constants.PARAM_CLIENT_ID, true));
this.setScope(this.getParam(request, OAuth20Constants.PARAM_SCOPE, false));
+ this.setNonce(this.getParam(request, OAuth20Constants.PARAM_NONCE, false));
// check for response type
if (!this.responseType.equals(OAuth20Constants.RESPONSE_CODE)) {
@@ -152,15 +170,16 @@ class OAuth20AuthRequest extends OAuth20BaseRequest {
// check if client id and redirect uri are ok
try {
// OAOAUTH20 cannot be null at this point. check was done in base request
- OAOAUTH20 oAuthConfig = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(this.getOAURL())
- .getoAuth20Config();
-
- if (!this.getClientID().equals(oAuthConfig.getOAuthClientId())
- || !this.getRedirectUri().equals(oAuthConfig.getOAuthRedirectUri())) {
+ OAAuthParameter oAuthConfig = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(this.getOAURL());
+
+ if (!this.getClientID().equals(oAuthConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTID))
+ || !this.getRedirectUri().equals(oAuthConfig.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL))) {
throw new OAuth20AccessDeniedException();
}
- }
- catch (ConfigurationException e) {
+
+ Logger.info("Dispatch OpenIDConnect AuthRequest: ClientID=" + this.clientID);
+
+ } catch (ConfigurationException e) {
throw new OAuth20WrongParameterException(OAuth20Constants.PARAM_CLIENT_ID);
}
@@ -176,7 +195,7 @@ class OAuth20AuthRequest extends OAuth20BaseRequest {
reqAttr.put(el, "");
try {
- OAAuthParameter oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(getOAURL());
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(getOAURL());
for (String s : scope.split(" ")) {
if (s.equalsIgnoreCase("profile")) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20BaseRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20BaseRequest.java
index d08bd593a..bd3fdb3e8 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20BaseRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20BaseRequest.java
@@ -31,16 +31,17 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAOAUTH20;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.RequestImpl;
import at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Constants;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20Exception;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20InvalidRequestException;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20OANotSupportedException;
-import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20ServerErrorException;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20WrongParameterException;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
import at.gv.egovernment.moa.logging.Logger;
@@ -77,19 +78,16 @@ abstract class OAuth20BaseRequest extends RequestImpl {
throw new OAuth20WrongParameterException(OAuth20Constants.PARAM_CLIENT_ID);
}
this.setOAURL(oaURL);
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(oaURL);
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(oaURL);
if (oaParam == null) {
throw new OAuth20WrongParameterException(OAuth20Constants.PARAM_CLIENT_ID);
}
this.setTarget(oaParam.getTarget());
- OAOAUTH20 config = oaParam.getoAuth20Config();
- if (config == null) {
- throw new OAuth20InvalidRequestException();
- }
- if (StringUtils.isEmpty(config.getOAuthClientSecret()) || StringUtils.isEmpty(config.getOAuthClientId())
- || StringUtils.isEmpty(config.getOAuthRedirectUri())) {
+ if (StringUtils.isEmpty(oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTSECRET))
+ || StringUtils.isEmpty(oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTID))
+ || StringUtils.isEmpty(oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL))) {
throw new OAuth20OANotSupportedException();
}
}
@@ -124,13 +122,15 @@ abstract class OAuth20BaseRequest extends RequestImpl {
protected abstract void populateSpecialParameters(final HttpServletRequest request) throws OAuth20Exception;
- public static OAuth20BaseRequest newInstance(final String action, final HttpServletRequest request) throws OAuth20Exception {
+ public static OAuth20BaseRequest newInstance(final String action, final HttpServletRequest request, String sessionId, String transactionId) throws OAuth20Exception {
OAuth20BaseRequest res;
if (action.equals(OAuth20Protocol.AUTH_ACTION)) {
res = new OAuth20AuthRequest();
+
} else if (action.equals(OAuth20Protocol.TOKEN_ACTION)) {
res = new OAuth20TokenRequest();
+
} else {
throw new OAuth20InvalidRequestException();
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20Protocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20Protocol.java
index 182f07675..56d86df72 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20Protocol.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20Protocol.java
@@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.moduls.IAction;
import at.gv.egovernment.moa.id.moduls.IModulInfo;
import at.gv.egovernment.moa.id.moduls.IRequest;
@@ -66,9 +66,10 @@ public class OAuth20Protocol implements IModulInfo {
* at.gv.egovernment.moa.id.moduls.IModulInfo#preProcess(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse, java.lang.String)
*/
- public IRequest preProcess(HttpServletRequest request, HttpServletResponse resp, String action) throws MOAIDException {
+ public IRequest preProcess(HttpServletRequest request, HttpServletResponse resp, String action,
+ String sessionId, String transactionId) throws MOAIDException {
// validation is done inside creation
- OAuth20BaseRequest res = OAuth20BaseRequest.newInstance(action, request);
+ OAuth20BaseRequest res = OAuth20BaseRequest.newInstance(action, request, sessionId, transactionId);
Logger.debug("Created: " + res);
return res;
}
@@ -103,7 +104,7 @@ public class OAuth20Protocol implements IModulInfo {
// get error code and description
String errorCode;
String errorDescription;
- String errorUri = AuthConfigurationProvider.getInstance().getPublicURLPrefix()
+ String errorUri = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix()
+"/" + OAuth20Constants.ERRORPAGE;
String moaError = null;
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenAction.java
index 944da38d0..2238a25e1 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenAction.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenAction.java
@@ -26,6 +26,8 @@ package at.gv.egovernment.moa.id.protocols.oauth20.protocol;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.data.IAuthData;
@@ -51,6 +53,8 @@ class OAuth20TokenAction implements IAction {
try {
OAuth20TokenRequest oAuthRequest = (OAuth20TokenRequest) req;
+ MOAReversionLogger.getInstance().logEvent(req, MOAIDEventConstants.AUTHPROTOCOL_OPENIDCONNECT_TOKENREQUEST);
+
try {
Logger.debug("Loaded OAuth20SessionObject from session: " + oAuthRequest.getCode());
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenRequest.java
index 3c90a5773..9d611b2f1 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/protocol/OAuth20TokenRequest.java
@@ -28,14 +28,16 @@ import javax.servlet.http.HttpServletRequest;
import org.opensaml.saml2.core.Attribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAOAUTH20;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Constants;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20AccessDeniedException;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20Exception;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20InvalidGrantException;
import at.gv.egovernment.moa.id.protocols.oauth20.exceptions.OAuth20WrongParameterException;
+import at.gv.egovernment.moa.logging.Logger;
class OAuth20TokenRequest extends OAuth20BaseRequest {
@@ -121,14 +123,13 @@ class OAuth20TokenRequest extends OAuth20BaseRequest {
// check if client id and secret are ok
try {
// OAOAUTH20 cannot be null at this point. check was done in base request
- OAOAUTH20 oAuthConfig = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(this.getOAURL())
- .getoAuth20Config();
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(this.getOAURL());
- if (!this.getClientID().equals(oAuthConfig.getOAuthClientId())) {
+ if (!this.getClientID().equals(oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTID))) {
throw new OAuth20AccessDeniedException();
}
- if (!this.getClientSecret().equals(oAuthConfig.getOAuthClientSecret())) {
+ if (!this.getClientSecret().equals(oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTSECRET))) {
throw new OAuth20AccessDeniedException();
}
@@ -137,6 +138,8 @@ class OAuth20TokenRequest extends OAuth20BaseRequest {
throw new OAuth20WrongParameterException(OAuth20Constants.PARAM_CLIENT_ID);
}
+ Logger.info("Dispatch OpenIDConnect TokenRequest: ClientID=" + this.clientID);
+
//add valid parameters
this.allowedParameters.add(OAuth20Constants.PARAM_SCOPE);
this.allowedParameters.add(OAuth20Constants.PARAM_REDIRECT_URI);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/MetadataAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/MetadataAction.java
index 0a8a6a581..1b187d82e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/MetadataAction.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/MetadataAction.java
@@ -64,6 +64,8 @@ import org.opensaml.xml.signature.Signature;
import org.opensaml.xml.signature.Signer;
import org.w3c.dom.Document;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.data.IAuthData;
@@ -85,6 +87,8 @@ public class MetadataAction implements IAction {
HttpServletResponse httpResp, IAuthData authData) throws MOAIDException {
try {
+ MOAReversionLogger.getInstance().logEvent(req, MOAIDEventConstants.AUTHPROTOCOL_PVP_METADATA);
+
EntitiesDescriptor idpEntitiesDescriptor =
SAML2Utils.createSAMLObject(EntitiesDescriptor.class);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java
index cf20db7d9..0c7502003 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java
@@ -57,12 +57,15 @@ import org.opensaml.xml.signature.SignableXMLObject;
import java.util.Arrays;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
+import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.exception.InvalidProtocolRequestException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.ProtocolNotActiveException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.IAction;
import at.gv.egovernment.moa.id.moduls.IModulInfo;
@@ -82,6 +85,7 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.binding.RedirectBinding;
import at.gv.egovernment.moa.id.protocols.pvp2x.config.PVPConfiguration;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.AssertionValidationExeption;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.AttributQueryException;
+import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.AuthnRequestValidatorException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.InvalidAssertionConsumerServiceException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.MandateAttributesNotHandleAbleException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.NameIDFormatNotSupportedException;
@@ -99,7 +103,7 @@ import at.gv.egovernment.moa.id.util.VelocityLogAdapter;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
-public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
+public class PVP2XProtocol extends MOAIDAuthConstants implements IModulInfo {
public static final String NAME = PVP2XProtocol.class.getName();
public static final String PATH = "id_pvp2x";
@@ -194,10 +198,11 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
}
public IRequest preProcess(HttpServletRequest request,
- HttpServletResponse response, String action) throws MOAIDException {
+ HttpServletResponse response, String action,
+ String sessionId, String transactionId) throws MOAIDException {
- if (!AuthConfigurationProvider.getInstance().getAllowedProtocols().isPVP21Active()) {
+ if (!AuthConfigurationProviderFactory.getInstance().getAllowedProtocols().isPVP21Active()) {
Logger.info("PVP2.1 is deaktivated!");
throw new ProtocolNotActiveException("auth.22", new java.lang.Object[] { NAME });
@@ -231,19 +236,19 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
if (msg instanceof MOARequest &&
((MOARequest)msg).getSamlRequest() instanceof AuthnRequest)
- return preProcessAuthRequest(request, response, (MOARequest) msg);
+ return preProcessAuthRequest(request, response, (MOARequest) msg, sessionId, transactionId);
else if (msg instanceof MOARequest &&
((MOARequest)msg).getSamlRequest() instanceof AttributeQuery)
- return preProcessAttributQueryRequest(request, response, (MOARequest) msg);
+ return preProcessAttributQueryRequest(request, response, (MOARequest) msg, sessionId, transactionId);
else if (msg instanceof MOARequest &&
((MOARequest)msg).getSamlRequest() instanceof LogoutRequest)
- return preProcessLogOut(request, response, msg);
+ return preProcessLogOut(request, response, msg, sessionId, transactionId);
else if (msg instanceof MOAResponse &&
((MOAResponse)msg).getResponse() instanceof LogoutResponse)
- return preProcessLogOut(request, response, msg);
+ return preProcessLogOut(request, response, msg, sessionId, transactionId);
else if (msg instanceof MOAResponse &&
((MOAResponse)msg).getResponse() instanceof Response) {
@@ -253,10 +258,19 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
if (obj instanceof RequestImpl) {
RequestImpl iReqSP = (RequestImpl) obj;
+ MOAReversionLogger.getInstance().logEvent(iReqSP, MOAIDEventConstants.AUTHPROTOCOL_PVP_REQUEST_AUTHRESPONSE);
+
MOAResponse processedMsg = preProcessAuthResponse((MOAResponse) msg);
if ( processedMsg != null ) {
- iReqSP.setInterfederationResponse(processedMsg);
+ iReqSP.setInterfederationResponse(processedMsg);
+
+ MOAReversionLogger.getInstance().logEvent(iReqSP, MOAIDEventConstants.AUTHPROCESS_INTERFEDERATION_REVEIVED);
+
+ Logger.info("Receive a valid assertion from IDP " + msg.getEntityID()
+ + ". Switch to original transaction with ID " + iReqSP.getRequestID());
+ TransactionIDUtils.setTransactionId(iReqSP.getRequestID());
+ TransactionIDUtils.setSessionId(iReqSP.getSessionIdentifier());
} else {
Logger.info("Interfederated IDP " + msg.getEntityID() + " has NO valid SSO session."
@@ -443,7 +457,8 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
* @throws MOAIDException
*/
private IRequest preProcessLogOut(HttpServletRequest request,
- HttpServletResponse response, InboundMessage inMsg) throws MOAIDException {
+ HttpServletResponse response, InboundMessage inMsg,
+ String sessionId, String transactionId) throws MOAIDException {
PVPTargetConfiguration config = new PVPTargetConfiguration();
@@ -461,11 +476,16 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
String oaURL = metadata.getEntityID();
oaURL = StringEscapeUtils.escapeHtml(oaURL);
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(oaURL);
Logger.info("Dispatch PVP2 SingleLogOut: OAURL=" + oaURL + " Binding=" + msg.getRequestBinding());
- config.setOAURL(oaURL);
- config.setBinding(msg.getRequestBinding());
+ config.setOAURL(oaURL);
+ config.setOnlineApplicationConfiguration(oa);
+ config.setBinding(msg.getRequestBinding());
+
+ MOAReversionLogger.getInstance().logEvent(sessionId, transactionId, MOAIDEventConstants.AUTHPROTOCOL_PVP_REQUEST_SLO);
+
} else if (inMsg instanceof MOAResponse &&
@@ -505,7 +525,8 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
* @throws Throwable
*/
private IRequest preProcessAttributQueryRequest(HttpServletRequest request,
- HttpServletResponse response, MOARequest moaRequest) throws Throwable {
+ HttpServletResponse response, MOARequest moaRequest,
+ String sessionId, String transactionId) throws Throwable {
AttributeQuery attrQuery = (AttributeQuery) moaRequest.getSamlRequest();
moaRequest.setEntityID(attrQuery.getIssuer().getValue());
@@ -524,7 +545,7 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
throw new WrongParametersException("StartAuthentication",
PARAM_OA, "auth.12");
- OAAuthParameter oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moaRequest.getEntityID());
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(moaRequest.getEntityID());
if (!oa.isInderfederationIDP()) {
Logger.warn("AttributeQuery requests are only allowed for interfederation IDPs.");
throw new AttributQueryException("AttributeQuery requests are only allowed for interfederation IDPs.", null);
@@ -540,8 +561,11 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
PVPTargetConfiguration config = new PVPTargetConfiguration();
config.setRequest(moaRequest);
config.setOAURL(moaRequest.getEntityID());
+ config.setOnlineApplicationConfiguration(oa);
config.setBinding(SAMLConstants.SAML2_SOAP11_BINDING_URI);
+ MOAReversionLogger.getInstance().logEvent(sessionId, transactionId, MOAIDEventConstants.AUTHPROTOCOL_PVP_REQUEST_ATTRIBUTQUERY);
+
return config;
}
@@ -554,7 +578,8 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
* @throws Throwable
*/
private IRequest preProcessAuthRequest(HttpServletRequest request,
- HttpServletResponse response, MOARequest moaRequest) throws Throwable {
+ HttpServletResponse response, MOARequest moaRequest,
+ String sessionId, String transactionId) throws Throwable {
SignableXMLObject samlReq = moaRequest.getSamlRequest();
@@ -570,6 +595,18 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
AuthnRequest authnRequest = (AuthnRequest)samlReq;
+ if (authnRequest.getIssueInstant() == null) {
+ Logger.warn("Unsupported request: No IssueInstant Attribute found.");
+ throw new AuthnRequestValidatorException("Unsupported request: No IssueInstant Attribute found.", new Object[] {});
+
+ }
+
+ if (authnRequest.getIssueInstant().minusMinutes(MOAIDAuthConstants.TIME_JITTER).isAfterNow()) {
+ Logger.warn("Unsupported request: No IssueInstant DateTime is not valid anymore.");
+ throw new AuthnRequestValidatorException("Unsupported request: No IssueInstant DateTime is not valid anymore.", new Object[] {});
+
+ }
+
//parse AssertionConsumerService
AssertionConsumerService consumerService = null;
if (MiscUtil.isNotEmpty(authnRequest.getAssertionConsumerServiceURL()) &&
@@ -628,11 +665,13 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
String oaURL = moaRequest.getEntityMetadata().getEntityID();
oaURL = StringEscapeUtils.escapeHtml(oaURL);
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(oaURL);
Logger.info("Dispatch PVP2 AuthnRequest: OAURL=" + oaURL + " Binding=" + consumerService.getBinding());
PVPTargetConfiguration config = new PVPTargetConfiguration();
config.setOAURL(oaURL);
+ config.setOnlineApplicationConfiguration(oa);
config.setBinding(consumerService.getBinding());
config.setRequest(moaRequest);
config.setConsumerURL(consumerService.getLocation());
@@ -640,7 +679,10 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {
//parse AuthRequest
config.setPassiv(authReq.isPassive());
config.setForce(authReq.isForceAuthn());
-
+
+
+ MOAReversionLogger.getInstance().logEvent(sessionId, transactionId, MOAIDEventConstants.AUTHPROTOCOL_PVP_REQUEST_AUTHREQUEST);
+
return config;
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java
index 65da23565..74b20356e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java
@@ -34,7 +34,7 @@ import org.opensaml.saml2.metadata.RequestedAttribute;
import org.opensaml.saml2.metadata.SPSSODescriptor;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.RequestImpl;
import at.gv.egovernment.moa.id.protocols.pvp2x.builder.AttributQueryBuilder;
@@ -88,7 +88,7 @@ public class PVPTargetConfiguration extends RequestImpl {
reqAttr.put(el, "");
try {
- OAAuthParameter oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(getOAURL());
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(getOAURL());
SPSSODescriptor spSSODescriptor = getRequest().getEntityMetadata().getSPSSODescriptor(SAMLConstants.SAML20P_NS);
if (spSSODescriptor.getAttributeConsumingServices() != null &&
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/SingleLogOutAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/SingleLogOutAction.java
index aa154b84b..b567798fa 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/SingleLogOutAction.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/SingleLogOutAction.java
@@ -60,6 +60,7 @@ import org.opensaml.xml.XMLObject;
import org.opensaml.xml.security.SecurityException;
import org.opensaml.xml.security.x509.X509Credential;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
@@ -69,7 +70,7 @@ import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore;
import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationContainer;
import at.gv.egovernment.moa.id.data.SLOInformationImpl;
@@ -258,23 +259,23 @@ public class SingleLogOutAction implements IAction {
} else {
//print SLO information directly
- redirectURL = AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/idpSingleLogout";
+ redirectURL = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/idpSingleLogout";
String artifact = Random.nextRandom();
String statusCode = null;
if (sloContainer.getSloFailedOAs() == null ||
sloContainer.getSloFailedOAs().size() == 0)
- statusCode = SLOSTATUS_SUCCESS;
+ statusCode = MOAIDAuthConstants.SLOSTATUS_SUCCESS;
else
- statusCode = SLOSTATUS_ERROR;
+ statusCode = MOAIDAuthConstants.SLOSTATUS_ERROR;
AssertionStorage.getInstance().put(artifact, statusCode);
- redirectURL = addURLParameter(redirectURL, PARAM_SLOSTATUS, artifact);
+ redirectURL = addURLParameter(redirectURL, MOAIDAuthConstants.PARAM_SLOSTATUS, artifact);
}
//redirect to Redirect Servlet
- String url = AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/RedirectServlet";
+ String url = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/RedirectServlet";
url = addURLParameter(url, RedirectServlet.REDIRCT_PARAM_URL, URLEncoder.encode(redirectURL, "UTF-8"));
url = httpResp.encodeRedirectURL(url);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java
index 1a268c812..5402e3dce 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java
@@ -62,6 +62,7 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialProvider;
import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialsNotAvailableException;
import at.gv.egovernment.moa.id.util.VelocityProvider;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
public class PostBinding implements IDecoder, IEncoder {
@@ -170,10 +171,12 @@ public class PostBinding implements IDecoder, IEncoder {
RequestAbstractType inboundMessage = (RequestAbstractType) messageContext
.getInboundMessage();
msg = new MOARequest(inboundMessage, getSAML2BindingName());
+ msg.setEntityID(inboundMessage.getIssuer().getValue());
} else if (messageContext.getInboundMessage() instanceof StatusResponseType){
- StatusResponseType inboundMessage = (StatusResponseType) messageContext.getInboundMessage();
+ StatusResponseType inboundMessage = (StatusResponseType) messageContext.getInboundMessage();
msg = new MOAResponse(inboundMessage);
+ msg.setEntityID(inboundMessage.getIssuer().getValue());
} else
//create empty container if request type is unknown
@@ -182,8 +185,10 @@ public class PostBinding implements IDecoder, IEncoder {
if (messageContext.getPeerEntityMetadata() != null)
msg.setEntityID(messageContext.getPeerEntityMetadata().getEntityID());
- else
- Logger.info("No Metadata found for OA with EntityID " + messageContext.getInboundMessageIssuer());
+ else {
+ if (MiscUtil.isEmpty(msg.getEntityID()))
+ Logger.info("No Metadata found for OA with EntityID " + messageContext.getInboundMessageIssuer());
+ }
msg.setVerified(false);
msg.setRelayState(messageContext.getRelayState());
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java
index 587d8e935..81863f48f 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java
@@ -33,7 +33,6 @@ import org.opensaml.saml2.binding.encoding.HTTPRedirectDeflateEncoder;
import org.opensaml.saml2.binding.security.SAML2AuthnRequestsSignedRule;
import org.opensaml.saml2.binding.security.SAML2HTTPRedirectDeflateSignatureRule;
import org.opensaml.saml2.core.RequestAbstractType;
-import org.opensaml.saml2.core.Response;
import org.opensaml.saml2.core.StatusResponseType;
import org.opensaml.saml2.metadata.IDPSSODescriptor;
import org.opensaml.saml2.metadata.SPSSODescriptor;
@@ -48,7 +47,6 @@ import org.opensaml.ws.transport.http.HttpServletRequestAdapter;
import org.opensaml.ws.transport.http.HttpServletResponseAdapter;
import org.opensaml.xml.parse.BasicParserPool;
import org.opensaml.xml.security.SecurityException;
-import org.opensaml.xml.security.credential.Credential;
import org.opensaml.xml.security.x509.X509Credential;
import at.gv.egovernment.moa.id.config.ConfigurationException;
@@ -63,7 +61,7 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialProvider;
import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialsNotAvailableException;
import at.gv.egovernment.moa.id.protocols.pvp2x.verification.TrustEngineFactory;
import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.DOMUtils;
+import at.gv.egovernment.moa.util.MiscUtil;
public class RedirectBinding implements IDecoder, IEncoder {
@@ -173,11 +171,32 @@ public class RedirectBinding implements IDecoder, IEncoder {
else
messageContext.setPeerEntityRole(SPSSODescriptor.DEFAULT_ELEMENT_NAME);
- decode.decode(messageContext);
+ try {
+ decode.decode(messageContext);
- //check signature
- signatureRule.evaluate(messageContext);
+ //check signature
+ signatureRule.evaluate(messageContext);
+
+ } catch (SecurityException e) {
+ if (MiscUtil.isEmpty(messageContext.getInboundMessageIssuer())) {
+ throw e;
+
+ }
+ Logger.debug("PVP2X message validation FAILED. Relead metadata for entityID: " + messageContext.getPeerEntityId());
+ if (!MOAMetadataProvider.getInstance().refreshMetadataProvider(messageContext.getInboundMessageIssuer()))
+ throw e;
+
+ else {
+ Logger.trace("PVP2X metadata reload finished. Check validate message again.");
+ decode.decode(messageContext);
+ //check signature
+ signatureRule.evaluate(messageContext);
+
+ }
+ Logger.trace("Second PVP2X message validation finished");
+ }
+
InboundMessage msg = null;
if (messageContext.getInboundMessage() instanceof RequestAbstractType) {
RequestAbstractType inboundMessage = (RequestAbstractType) messageContext
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/AuthResponseBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/AuthResponseBuilder.java
index 4ef09184d..4959df16c 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/AuthResponseBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/AuthResponseBuilder.java
@@ -52,7 +52,7 @@ import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory;
import org.opensaml.xml.security.x509.X509Credential;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.protocols.pvp2x.config.PVPConfiguration;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.InvalidAssertionEncryptionException;
@@ -106,7 +106,7 @@ public class AuthResponseBuilder {
}
- boolean isEncryptionActive = AuthConfigurationProvider.getInstance().isPVP2AssertionEncryptionActive();
+ boolean isEncryptionActive = AuthConfigurationProviderFactory.getInstance().isPVP2AssertionEncryptionActive();
if (encryptionCredentials != null && isEncryptionActive) {
//encrypt SAML2 assertion
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/assertion/PVP2AssertionBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/assertion/PVP2AssertionBuilder.java
index b301b6e5e..61bc51565 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/assertion/PVP2AssertionBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/assertion/PVP2AssertionBuilder.java
@@ -64,7 +64,7 @@ import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationImpl;
@@ -153,7 +153,7 @@ public class PVP2AssertionBuilder implements PVPConstants {
AuthnContextClassRef authnContextClassRef = SAML2Utils
.createSAMLObject(AuthnContextClassRef.class);
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(
peerEntity.getEntityID());
@@ -265,7 +265,7 @@ public class PVP2AssertionBuilder implements PVPConstants {
} catch (PVP2Exception e) {
- Logger.warn(
+ Logger.info(
"Attribute generation failed! for "
+ reqAttribut.getFriendlyName());
if (reqAttribut.isRequired()) {
@@ -274,7 +274,7 @@ public class PVP2AssertionBuilder implements PVPConstants {
}
} catch (Exception e) {
- Logger.error(
+ Logger.warn(
"General Attribute generation failed! for "
+ reqAttribut.getFriendlyName(), e);
if (reqAttribut.isRequired()) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/attributes/IPVPAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/attributes/IPVPAttributeBuilder.java
index 8adf5cad9..72775ec02 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/attributes/IPVPAttributeBuilder.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/builder/attributes/IPVPAttributeBuilder.java
@@ -22,9 +22,8 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes;
-import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
-interface IPVPAttributeBuilder extends PVPConstants, MOAIDAuthConstants, IAttributeBuilder {
+interface IPVPAttributeBuilder extends PVPConstants, IAttributeBuilder {
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
index d3a9ad3e7..dc3b787e4 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
@@ -24,11 +24,12 @@ package at.gv.egovernment.moa.id.protocols.pvp2x.config;
import iaik.x509.X509Certificate;
-import java.io.File;
+import java.io.IOException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
@@ -46,14 +47,14 @@ import org.opensaml.saml2.metadata.OrganizationURL;
import org.opensaml.saml2.metadata.SurName;
import org.opensaml.saml2.metadata.TelephoneNumber;
-import at.gv.egovernment.moa.id.commons.db.dao.config.Contact;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.protocols.pvp2x.metadata.MOAMetadataProvider;
import at.gv.egovernment.moa.id.protocols.pvp2x.utils.SAML2Utils;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
@@ -90,31 +91,19 @@ public class PVPConfiguration {
public static final String IDP_KEYALIASENCRYTPION = "sp.ks.assertion.encryption.alias";
public static final String IDP_KEY_PASSENCRYTPION = "sp.ks.assertion.encryption.keypassword";
- public static final String IDP_ISSUER_NAME = "idp.issuer.name";
-
- public static final String METADATA_FILE = "md.dir";
- public static final String METADATA_EXTENSION = "md.ext";
-
- public static final String IDP_ENTITY = "idp.entityid";
- public static final String IDP_ORG_NAME = "idp.org.name";
- public static final String IDP_ORG_DISPNAME = "idp.org.dispname";
- public static final String IDP_ORG_URL = "idp.org.url";
-
- public static final String IDP_PUBLIC_URL = "idp.public.url";
-
- public static final String IDP_TRUST_STORE = "idp.truststore";
- public static final String SP_TARGET_PREFIX = "sp.target.";
-
- public static final String IDP_CONTACT_PREFIX = "idp.contact";
- public static final String IDP_CONTACT_LIST = "idp.contact_list";
+ public static final String IDP_ISSUER_NAME = "servicename";
+
+ public static final String IDP_ORG_NAME = "name.short";
+ public static final String IDP_ORG_DISPNAME = "name.full";
+ public static final String IDP_ORG_URL = "url";
- public static final String IDP_CONTACT_SURNAME = "surname";
+ public static final String IDP_CONTACT_SURNAME = "familyname";
public static final String IDP_CONTACT_GIVENNAME = "givenname";
public static final String IDP_CONTACT_MAIL = "mail";
public static final String IDP_CONTACT_TYPE = "type";
public static final String IDP_CONTACT_COMPANY = "company";
- public static final String IDP_CONTACT_PHONE = "phone";
-
+ public static final String IDP_CONTACT_PHONE = "phone";
+
private static String moaIDVersion = null;
//PVP2 generalpvpconfigdb;
@@ -124,16 +113,16 @@ public class PVPConfiguration {
private PVPConfiguration() {
try {
//generalpvpconfigdb = AuthConfigurationProvider.getInstance().getGeneralPVP2DBConfig();
- props = AuthConfigurationProvider.getInstance().getGeneralPVP2ProperiesConfig();
- rootDir = AuthConfigurationProvider.getInstance().getRootConfigFileDir();
-
+ props = AuthConfigurationProviderFactory.getInstance().getGeneralPVP2ProperiesConfig();
+ rootDir = AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir();
+
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
public String getIDPPublicPath() throws ConfigurationException {
- String publicPath = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ String publicPath = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
if(publicPath != null) {
if(publicPath.endsWith("/")) {
int length = publicPath.length();
@@ -176,31 +165,31 @@ public class PVPConfiguration {
}
public String getIDPKeyStorePassword() {
- return props.getProperty(IDP_KS_PASS);
+ return props.getProperty(IDP_KS_PASS).trim();
}
public String getIDPKeyAliasMetadata() {
- return props.getProperty(IDP_KEYALIASMETADATA);
+ return props.getProperty(IDP_KEYALIASMETADATA).trim();
}
public String getIDPKeyPasswordMetadata() {
- return props.getProperty(IDP_KEY_PASSMETADATA);
+ return props.getProperty(IDP_KEY_PASSMETADATA).trim();
}
public String getIDPKeyAliasAssertionSign() {
- return props.getProperty(IDP_KEYALIASASSERTION);
+ return props.getProperty(IDP_KEYALIASASSERTION).trim();
}
public String getIDPKeyPasswordAssertionSign() {
- return props.getProperty(IDP_KEY_PASSASSERTION);
+ return props.getProperty(IDP_KEY_PASSASSERTION).trim();
}
public String getIDPKeyAliasAssertionEncryption() {
- return props.getProperty(IDP_KEYALIASASSERTION);
+ return props.getProperty(IDP_KEYALIASASSERTION).trim();
}
public String getIDPKeyPasswordAssertionEncryption() {
- return props.getProperty(IDP_KEY_PASSASSERTION);
+ return props.getProperty(IDP_KEY_PASSASSERTION).trim();
}
public String getIDPIssuerName() throws ConfigurationException {
@@ -209,75 +198,42 @@ public class PVPConfiguration {
moaIDVersion = parseMOAIDVersionFromManifest();
}
- return AuthConfigurationProvider.getInstance().getGeneralPVP2DBConfig().getIssuerName() + moaIDVersion;
+ return AuthConfigurationProviderFactory.getInstance().getConfigurationWithKey(
+ MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME) + moaIDVersion;
}
-
- public List<String> getMetadataFiles() {
- String filter = props.getProperty(METADATA_EXTENSION);
-
- if (filter == null) {
- filter = ".mdxml";
- }
-
- List<String> files = new ArrayList<String>();
-
- File[] faFiles = new File(props.getProperty(METADATA_FILE)).listFiles();
- for (File file : faFiles) {
- if (!file.isDirectory()) {
- if (file.getName().endsWith(filter)) {
- files.add(file.getAbsolutePath());
- }
- }
- }
-
- return files;
- }
-
- //TODO:
- public String getTargetForSP(String sp) {
-
- try {
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(sp);
-
- if (oaParam != null)
- return oaParam.getTarget();
-
- Logger.warn("OnlineApplication with ID "+ sp + " is not found.");
- return null;
-
- } catch (ConfigurationException e) {
- Logger.warn("OnlineApplication with ID "+ sp + " is not found.");
- return null;
- }
-
- }
-
public iaik.x509.X509Certificate getTrustEntityCertificate(String entityID) {
+
+ try {
+ Logger.trace("Load metadata signing certificate for online application " + entityID);
+ IOAAuthParameters oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(entityID);
+ if (oaParam == null) {
+ Logger.info("Online Application with ID " + entityID + " not found!");
+ return null;
+ }
- try {
- IOAAuthParameters oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(entityID);
-
- if (oaParam == null) {
- Logger.warn("Online Application with ID " + entityID + " not found!");
- return null;
- }
-
- OAPVP2 pvp2param = oaParam.getPVP2Parameter();
-
- if (pvp2param == null) {
- return null;
- }
-
- Logger.info("Load TrustEntityCertificate ("+entityID+") from Database.");
- return new X509Certificate(pvp2param.getCertificate());
+ String pvp2MetadataCertificateString =
+ oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+ if (MiscUtil.isEmpty(pvp2MetadataCertificateString)) {
+ Logger.info("Online Application with ID " + entityID + " include not PVP2X metadata signing certificate!");
+ return null;
+
+ }
+
+ X509Certificate cert = new X509Certificate(Base64Utils.decode(pvp2MetadataCertificateString, false));
+ Logger.debug("Metadata signing certificate is loaded for ("+entityID+") is loaded.");
+ return cert;
} catch (CertificateException e) {
- Logger.warn("Signer certificate can not be loaded from session database!", e);
+ Logger.warn("Metadata signer certificate is not parsed.", e);
return null;
} catch (ConfigurationException e) {
- e.printStackTrace();
+ Logger.error("Configuration is not accessable.", e);
+ return null;
+
+ } catch (IOException e) {
+ Logger.warn("Metadata signer certificate is not decodeable.", e);
return null;
}
}
@@ -285,112 +241,101 @@ public class PVPConfiguration {
public List<ContactPerson> getIDPContacts() throws ConfigurationException {
List<ContactPerson> list = new ArrayList<ContactPerson>();
- List<Contact> contacts = AuthConfigurationProvider.getInstance().getGeneralPVP2DBConfig().getContact();
+ Map<String, String> contacts = AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
+ MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".");
- if (contacts != null) {
+ ContactPerson person = SAML2Utils
+ .createSAMLObject(ContactPerson.class);
+
+ String type = contacts.get(IDP_CONTACT_TYPE);
+
+ if (type == null) {
+ Logger.error("IDP Contact with SurName " + contacts.get(IDP_CONTACT_SURNAME)
+ + " has no type defined!");
+ type = "unknown";
+ }
+
+ ContactPersonTypeEnumeration enumType = null;
+
+ if (type.equals(ContactPersonTypeEnumeration.ADMINISTRATIVE
+ .toString())) {
+ enumType = ContactPersonTypeEnumeration.ADMINISTRATIVE;
+ } else if (type.equals(ContactPersonTypeEnumeration.BILLING
+ .toString())) {
+ enumType = ContactPersonTypeEnumeration.BILLING;
+ } else if (type.equals(ContactPersonTypeEnumeration.OTHER
+ .toString())) {
+ enumType = ContactPersonTypeEnumeration.OTHER;
+ } else if (type.equals(ContactPersonTypeEnumeration.SUPPORT
+ .toString())) {
+ enumType = ContactPersonTypeEnumeration.SUPPORT;
+ } else if (type.equals(ContactPersonTypeEnumeration.TECHNICAL
+ .toString())) {
+ enumType = ContactPersonTypeEnumeration.TECHNICAL;
+ }
+
+ if (enumType == null) {
+ Logger.error("IDP Contact with SurName " + contacts.get(IDP_CONTACT_SURNAME)
+ + " has invalid type defined: " + type);
+ }
+
+ person.setType(enumType);
+
+ String givenName = contacts.get(IDP_CONTACT_GIVENNAME);
+
+ if (givenName != null) {
+ GivenName name = SAML2Utils
+ .createSAMLObject(GivenName.class);
+ name.setName(givenName);
+ person.setGivenName(name);
+ }
+
+ String company = contacts.get(IDP_CONTACT_COMPANY);
+
+ if (company != null) {
+ Company comp = SAML2Utils.createSAMLObject(Company.class);
+ comp.setName(company);
+ person.setCompany(comp);
+ }
+
+ String surname = contacts.get(IDP_CONTACT_SURNAME);
+
+ if (surname != null) {
+ SurName name = SAML2Utils.createSAMLObject(SurName.class);
+ name.setName(surname);
+ person.setSurName(name);
+ }
+
+ String phone = contacts.get(IDP_CONTACT_PHONE);
+ if (phone != null) {
+ TelephoneNumber telePhone = SAML2Utils
+ .createSAMLObject(TelephoneNumber.class);
+ telePhone.setNumber(phone);
+ person.getTelephoneNumbers().add(telePhone);
+ }
- for (Contact contact : contacts) {
-
- ContactPerson person = SAML2Utils
- .createSAMLObject(ContactPerson.class);
-
- String type = contact.getType();
-
- if (type == null) {
- Logger.error("IDP Contact with SurName " + contact.getSurName()
- + " has no type defined!");
- break;
- }
-
- ContactPersonTypeEnumeration enumType = null;
-
- if (type.equals(ContactPersonTypeEnumeration.ADMINISTRATIVE
- .toString())) {
- enumType = ContactPersonTypeEnumeration.ADMINISTRATIVE;
- } else if (type.equals(ContactPersonTypeEnumeration.BILLING
- .toString())) {
- enumType = ContactPersonTypeEnumeration.BILLING;
- } else if (type.equals(ContactPersonTypeEnumeration.OTHER
- .toString())) {
- enumType = ContactPersonTypeEnumeration.OTHER;
- } else if (type.equals(ContactPersonTypeEnumeration.SUPPORT
- .toString())) {
- enumType = ContactPersonTypeEnumeration.SUPPORT;
- } else if (type.equals(ContactPersonTypeEnumeration.TECHNICAL
- .toString())) {
- enumType = ContactPersonTypeEnumeration.TECHNICAL;
- }
-
- if (enumType == null) {
- Logger.error("IDP Contact with SurName " + contact.getSurName()
- + " has invalid type defined: " + type);
- break;
- }
-
- person.setType(enumType);
-
- String givenName = contact.getGivenName();
-
- if (givenName != null) {
- GivenName name = SAML2Utils
- .createSAMLObject(GivenName.class);
- name.setName(givenName);
- person.setGivenName(name);
- }
-
- String company = contact.getCompany();
-
- if (company != null) {
- Company comp = SAML2Utils.createSAMLObject(Company.class);
- comp.setName(company);
- person.setCompany(comp);
- }
-
- String surname = contact.getSurName();
-
- if (surname != null) {
- SurName name = SAML2Utils.createSAMLObject(SurName.class);
- name.setName(surname);
- person.setSurName(name);
- }
-
- List<String> phones = contact.getPhone();
- for (String phone : phones) {
- TelephoneNumber telePhone = SAML2Utils
- .createSAMLObject(TelephoneNumber.class);
- telePhone.setNumber(phone);
- person.getTelephoneNumbers().add(telePhone);
- }
-
- List<String> mails = contact.getMail();
- for (String mail : mails) {
- EmailAddress mailAddress = SAML2Utils
- .createSAMLObject(EmailAddress.class);
- mailAddress.setAddress(mail);
- person.getEmailAddresses().add(mailAddress);
- }
-
- list.add(person);
- }
+ String mail = contacts.get(IDP_CONTACT_MAIL);
+ if (mail != null) {
+ EmailAddress mailAddress = SAML2Utils
+ .createSAMLObject(EmailAddress.class);
+ mailAddress.setAddress(mail);
+ person.getEmailAddresses().add(mailAddress);
}
+
+ list.add(person);
return list;
}
public Organization getIDPOrganisation() throws ConfigurationException {
Organization org = SAML2Utils.createSAMLObject(Organization.class);
- at.gv.egovernment.moa.id.commons.db.dao.config.Organization organisation = AuthConfigurationProvider.getInstance().getGeneralPVP2DBConfig().getOrganization();
-
- String org_name = null;
- String org_dispname = null;
- String org_url = null;
-
- if (organisation != null) {
- org_name = organisation.getName();
- org_dispname = organisation.getDisplayName();
- org_url = organisation.getURL();
- }
+ Map<String, String> organisation = AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
+ MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG + ".");
+ String org_name = organisation.get(IDP_ORG_NAME);
+ String org_dispname = organisation.get(IDP_ORG_DISPNAME);
+ String org_url = organisation.get(IDP_ORG_URL);
+
if (org_name == null || org_dispname == null || org_url == null) {
return null;
}
@@ -416,6 +361,7 @@ public class PVPConfiguration {
private String parseMOAIDVersionFromManifest() {
try {
+ @SuppressWarnings("rawtypes")
Class clazz = PVPConfiguration.class;
String className = clazz.getSimpleName() + ".class";
String classPath = clazz.getResource(className).toString();
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
index d493ef9e0..f33cadc41 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java
@@ -22,14 +22,15 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.protocols.pvp2x.metadata;
+import java.io.IOException;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Timer;
import javax.net.ssl.SSLHandshakeException;
@@ -44,16 +45,17 @@ import org.opensaml.saml2.metadata.provider.HTTPMetadataProvider;
import org.opensaml.saml2.metadata.provider.MetadataFilter;
import org.opensaml.saml2.metadata.provider.MetadataProvider;
import org.opensaml.saml2.metadata.provider.MetadataProviderException;
+import org.opensaml.saml2.metadata.provider.ObservableMetadataProvider;
import org.opensaml.xml.XMLObject;
import org.opensaml.xml.parse.BasicParserPool;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.filter.SchemaValidationException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.filter.SignatureValidationException;
@@ -61,14 +63,14 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.verification.metadata.Interfeder
import at.gv.egovernment.moa.id.protocols.pvp2x.verification.metadata.MetadataFilterChain;
import at.gv.egovernment.moa.id.protocols.pvp2x.verification.metadata.SchemaValidationFilter;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.MiscUtil;
-public class MOAMetadataProvider implements MetadataProvider {
+public class MOAMetadataProvider implements ObservableMetadataProvider{
private static MOAMetadataProvider instance = null;
-
private static Object mutex = new Object();
- private static Date timestamp = null;
+
public static MOAMetadataProvider getInstance() {
if (instance == null) {
@@ -80,18 +82,19 @@ public class MOAMetadataProvider implements MetadataProvider {
}
return instance;
}
-
- public static Date getTimeStamp() {
- return timestamp;
- }
public static void reInitialize() {
synchronized (mutex) {
/**add new Metadataprovider or remove Metadataprovider which are not in use any more.**/
if (instance != null)
- instance.addAndRemoveMetadataProvider();
-
+ try {
+ instance.addAndRemoveMetadataProvider();
+
+ } catch (ConfigurationException e) {
+ Logger.error("Access to MOA-ID configuration FAILED.", e);
+
+ }
else
Logger.info("MOAMetadataProvider is not loaded.");
}
@@ -108,90 +111,168 @@ public class MOAMetadataProvider implements MetadataProvider {
MetadataProvider internalProvider;
+ public boolean refreshMetadataProvider(String entityID) {
+ try {
+ OAAuthParameter oaParam =
+ AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(entityID);
+ if (oaParam != null) {
+ String metadataURL = oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL);
+ if (MiscUtil.isNotEmpty(metadataURL)) {
+ Map<String, HTTPMetadataProvider> actuallyLoadedProviders = getAllActuallyLoadedProviders();
+
+ // check if MetadataProvider is actually loaded
+ if (actuallyLoadedProviders.containsKey(metadataURL)) {
+ actuallyLoadedProviders.get(metadataURL).refresh();
+ Logger.info("PVP2X metadata for onlineApplication: "
+ + entityID + " is refreshed.");
+ return true;
+
+ } else {
+ //load new Metadata Provider
+ String certBase64 = oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+ if (MiscUtil.isNotEmpty(certBase64)) {
+ byte[] cert = Base64Utils.decode(certBase64, false);
+ String oaFriendlyName = oaParam.getFriendlyName();
+
+ ChainingMetadataProvider chainProvider = (ChainingMetadataProvider) internalProvider;
+ HTTPMetadataProvider newMetadataProvider = createNewHTTPMetaDataProvider(metadataURL,
+ cert, oaFriendlyName,
+ buildMetadataFilterChain(oaParam, metadataURL,
+ cert));
+
+ chainProvider.addMetadataProvider(newMetadataProvider);
+
+ emitChangeEvent();
+
+ Logger.info("PVP2X metadata for onlineApplication: "
+ + entityID + " is added.");
+ return true;
+
+ } else
+ Logger.debug("Can not refresh PVP2X metadata: NO PVP2X metadata certificate for OA with Id: " + entityID);
+
+ }
+
+ } else
+ Logger.debug("Can not refresh PVP2X metadata: NO PVP2X metadata URL for OA with Id: " + entityID);
+
+ } else
+ Logger.debug("Can not refresh PVP2X metadata: NO onlineApplication with Id: " + entityID);
+
+
+ } catch (ConfigurationException e) {
+ Logger.warn("Access MOA-ID configuration FAILED.", e);
+
+ } catch (MetadataProviderException e) {
+ Logger.warn("Refresh PVP2X metadata for onlineApplication: "
+ + entityID + " FAILED.", e);
+
+ } catch (IOException e) {
+ Logger.warn("Refresh PVP2X metadata for onlineApplication: "
+ + entityID + " FAILED.", e);
+
+ } catch (CertificateException e) {
+ Logger.warn("Refresh PVP2X metadata for onlineApplication: "
+ + entityID + " FAILED.", e);
+
+ }
+
+ return false;
+
+ }
- private void addAndRemoveMetadataProvider() {
+ private Map<String, HTTPMetadataProvider> getAllActuallyLoadedProviders() {
+ Map<String, HTTPMetadataProvider> loadedproviders = new HashMap<String, HTTPMetadataProvider>();
+ ChainingMetadataProvider chainProvider = (ChainingMetadataProvider) internalProvider;
+
+ //make a Map of all actually loaded HTTPMetadataProvider
+ List<MetadataProvider> providers = chainProvider.getProviders();
+ for (MetadataProvider provider : providers) {
+ if (provider instanceof HTTPMetadataProvider) {
+ HTTPMetadataProvider httpprovider = (HTTPMetadataProvider) provider;
+ loadedproviders.put(httpprovider.getMetadataURI(), httpprovider);
+
+ }
+ }
+
+ return loadedproviders;
+ }
+
+
+ private void addAndRemoveMetadataProvider() throws ConfigurationException {
if (internalProvider != null && internalProvider instanceof ChainingMetadataProvider) {
Logger.info("Relaod MOAMetaDataProvider.");
/*OpenSAML ChainingMetadataProvider can not remove a MetadataProvider (UnsupportedOperationException)
*The ChainingMetadataProvider use internal a unmodifiableList to hold all registrated MetadataProviders.*/
Map<String, MetadataProvider> providersinuse = new HashMap<String, MetadataProvider>();
-
- Map<String, HTTPMetadataProvider> loadedproviders = new HashMap<String, HTTPMetadataProvider>();
ChainingMetadataProvider chainProvider = (ChainingMetadataProvider) internalProvider;
- //make a Map of all actually loaded HTTPMetadataProvider
- List<MetadataProvider> providers = chainProvider.getProviders();
- for (MetadataProvider provider : providers) {
- if (provider instanceof HTTPMetadataProvider) {
- HTTPMetadataProvider httpprovider = (HTTPMetadataProvider) provider;
- loadedproviders.put(httpprovider.getMetadataURI(), httpprovider);
- }
- }
-
- //set Timestamp
- Date oldTimeStamp = timestamp;
- timestamp = new Date();
+ //get all actually loaded metadata providers
+ Map<String, HTTPMetadataProvider> loadedproviders = getAllActuallyLoadedProviders();
//load all PVP2 OAs form ConfigurationDatabase and
//compare actually loaded Providers with configured PVP2 OAs
- List<OnlineApplication> oaList = ConfigurationDBRead
- .getAllActiveOnlineApplications();
-
- Iterator<OnlineApplication> oaIt = oaList.iterator();
- while (oaIt.hasNext()) {
- HTTPMetadataProvider httpProvider = null;
-
- try {
- OnlineApplication oa = oaIt.next();
- OAPVP2 pvp2Config = oa.getAuthComponentOA().getOAPVP2();
- if (pvp2Config != null && MiscUtil.isNotEmpty(pvp2Config.getMetadataURL())) {
-
- String metadataurl = pvp2Config.getMetadataURL();
+ Map<String, String> allOAs = AuthConfigurationProviderFactory.getInstance().getConfigurationWithWildCard(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+
+ if (allOAs != null) {
+ Iterator<Entry<String, String>> oaInterator = allOAs.entrySet().iterator();
+ while (oaInterator.hasNext()) {
+ Entry<String, String> oaKeyPair = oaInterator.next();
+
+ OAAuthParameter oaParam =
+ AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(oaKeyPair.getValue());
+ if (oaParam != null) {
+ String metadataurl = oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL);
- if (loadedproviders.containsKey(metadataurl)) {
+ HTTPMetadataProvider httpProvider = null;
+ try {
+ if (MiscUtil.isNotEmpty(metadataurl)) {
+ if (loadedproviders.containsKey(metadataurl)) {
+ // PVP2 OA is actually loaded, to nothing
+ providersinuse.put(metadataurl, loadedproviders.get(metadataurl));
+ loadedproviders.remove(metadataurl);
- if (pvp2Config.getUpdateRequiredItem() != null &&
- pvp2Config.getUpdateRequiredItem().after(oldTimeStamp)) {
- //PVP2 OA is actually loaded, but update is requested
- Logger.info("Reload metadata for: " + oa.getFriendlyName());
- loadedproviders.get(metadataurl).refresh();
-
- }
-
- // PVP2 OA is actually loaded, to nothing
- providersinuse.put(metadataurl, loadedproviders.get(metadataurl));
- loadedproviders.remove(metadataurl);
+ } else if ( MiscUtil.isNotEmpty(metadataurl) &&
+ !providersinuse.containsKey(metadataurl) ) {
+ //PVP2 OA is new, add it to MOAMetadataProvider
+ String certBase64 = oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+ if (MiscUtil.isNotEmpty(certBase64)) {
+ byte[] cert = Base64Utils.decode(certBase64, false);
+ String oaFriendlyName = oaParam.getFriendlyName();
+
+
+ Logger.info("Loading metadata for: " + oaFriendlyName);
+ httpProvider = createNewHTTPMetaDataProvider(
+ metadataurl,
+ cert,
+ oaFriendlyName,
+ buildMetadataFilterChain(oaParam, metadataurl,
+ cert));
- } else if ( MiscUtil.isNotEmpty(metadataurl) &&
- !providersinuse.containsKey(metadataurl) ) {
- //PVP2 OA is new, add it to MOAMetadataProvider
-
- Logger.info("Loading metadata for: " + oa.getFriendlyName());
- httpProvider = createNewHTTPMetaDataProvider(
- pvp2Config.getMetadataURL(),
- pvp2Config.getCertificate(),
- oa.getFriendlyName(),
- buildMetadataFilterChain(oa, pvp2Config.getMetadataURL(),
- pvp2Config.getCertificate()));
-
- if (httpProvider != null)
- providersinuse.put(metadataurl, httpProvider);
+ if (httpProvider != null)
+ providersinuse.put(metadataurl, httpProvider);
+ }
- }
- }
- } catch (Throwable e) {
- Logger.error(
+ }
+ }
+ } catch (Throwable e) {
+ Logger.error(
"Failed to add Metadata (unhandled reason: "
+ e.getMessage(), e);
- if (httpProvider != null) {
- Logger.debug("Destroy failed Metadata provider");
- httpProvider.destroy();
- }
+ if (httpProvider != null) {
+ Logger.debug("Destroy failed Metadata provider");
+ httpProvider.destroy();
+ }
- }
+ }
+ }
+ }
}
//remove all actually loaded MetadataProviders with are not in ConfigurationDB any more
@@ -220,6 +301,8 @@ public class MOAMetadataProvider implements MetadataProvider {
try {
chainProvider.setProviders(new ArrayList<MetadataProvider>(providersinuse.values()));
+ emitChangeEvent();
+
} catch (MetadataProviderException e) {
Logger.warn("ReInitalize MOAMetaDataProvider is not possible! MOA-ID Instance has to be restarted manualy", e);
@@ -249,7 +332,8 @@ public class MOAMetadataProvider implements MetadataProvider {
} else {
Logger.warn("MetadataProvider can not be destroyed.");
}
- }
+ }
+
instance = null;
} else {
Logger.warn("ReInitalize MOAMetaDataProvider is not possible! MOA-ID Instance has to be restarted manualy");
@@ -258,80 +342,93 @@ public class MOAMetadataProvider implements MetadataProvider {
private MOAMetadataProvider() {
ChainingMetadataProvider chainProvider = new ChainingMetadataProvider();
- Logger.info("Loading metadata");
+ Logger.info("Loading metadata");
Map<String, MetadataProvider> providersinuse = new HashMap<String, MetadataProvider>();
-
- List<OnlineApplication> oaList = ConfigurationDBRead
- .getAllActiveOnlineApplications();
-
- if (oaList.size() == 0)
- Logger.info("No Online-Application configuration found. PVP 2.1 metadata provider initialization failed!");
-
- Iterator<OnlineApplication> oaIt = oaList.iterator();
- while (oaIt.hasNext()) {
- HTTPMetadataProvider httpProvider = null;
+ try {
+ Map<String, String> allOAs = AuthConfigurationProviderFactory.getInstance().getConfigurationWithWildCard(
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
- try {
- OnlineApplication oa = oaIt.next();
- Logger.info("Loading metadata for: " + oa.getFriendlyName());
- OAPVP2 pvp2Config = oa.getAuthComponentOA().getOAPVP2();
- if (pvp2Config != null && MiscUtil.isNotEmpty(pvp2Config.getMetadataURL())) {
- String metadataURL = pvp2Config.getMetadataURL();
-
- if (!providersinuse.containsKey(metadataURL)) {
+ if (allOAs != null) {
+ Iterator<Entry<String, String>> oaInterator = allOAs.entrySet().iterator();
+ while (oaInterator.hasNext()) {
+ Entry<String, String> oaKeyPair = oaInterator.next();
- httpProvider = createNewHTTPMetaDataProvider(
- metadataURL,
- pvp2Config.getCertificate(),
- oa.getFriendlyName(),
- buildMetadataFilterChain(oa, metadataURL,
- pvp2Config.getCertificate()));
-
- if (httpProvider != null)
- providersinuse.put(metadataURL, httpProvider);
+ OAAuthParameter oaParam =
+ AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(oaKeyPair.getValue());
+ if (oaParam != null) {
+ String metadataurl = oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL);
+ String oaFriendlyName = oaParam.getFriendlyName();
+ HTTPMetadataProvider httpProvider = null;
+
+ try {
+ String certBase64 = oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+ if (MiscUtil.isNotEmpty(certBase64) && MiscUtil.isNotEmpty(metadataurl)) {
+ byte[] cert = Base64Utils.decode(certBase64, false);
+
+
+ Logger.info("Loading metadata for: " + oaFriendlyName);
+ if (!providersinuse.containsKey(metadataurl)) {
+ httpProvider = createNewHTTPMetaDataProvider(
+ metadataurl,
+ cert,
+ oaFriendlyName,
+ buildMetadataFilterChain(oaParam, metadataurl,
+ cert));
- } else {
- Logger.info(metadataURL + " are already added.");
- }
+ if (httpProvider != null)
+ providersinuse.put(metadataurl, httpProvider);
+
+ } else {
+ Logger.info(metadataurl + " are already added.");
+ }
+
+ } else {
+ Logger.info(oaFriendlyName
+ + " is not a PVP2 Application skipping");
+ }
+ } catch (Throwable e) {
+ Logger.error(
+ "Failed to add Metadata (unhandled reason: "
+ + e.getMessage(), e);
- } else {
- Logger.info(oa.getFriendlyName()
- + " is not a PVP2 Application skipping");
+ if (httpProvider != null) {
+ Logger.debug("Destroy failed Metadata provider");
+ httpProvider.destroy();
+ }
+ }
+ }
}
- } catch (Throwable e) {
+
+ } else
+ Logger.info("No Online-Application configuration found. PVP 2.1 metadata provider initialization failed!");
+
+ try {
+ chainProvider.setProviders(new ArrayList<MetadataProvider>(providersinuse.values()));
+
+ } catch (MetadataProviderException e) {
Logger.error(
"Failed to add Metadata (unhandled reason: "
+ e.getMessage(), e);
-
- if (httpProvider != null) {
- Logger.debug("Destroy failed Metadata provider");
- httpProvider.destroy();
- }
- }
- }
-
-
- try {
- chainProvider.setProviders(new ArrayList<MetadataProvider>(providersinuse.values()));
+ }
+
+ } catch (ConfigurationException e) {
+ Logger.error("Access MOA-ID configuration FAILED.", e);
- } catch (MetadataProviderException e) {
- Logger.error(
- "Failed to add Metadata (unhandled reason: "
- + e.getMessage(), e);
}
internalProvider = chainProvider;
- timestamp = new Date();
}
- private MetadataFilterChain buildMetadataFilterChain(OnlineApplication oa, String metadataURL, byte[] certificate) throws CertificateException {
+ private MetadataFilterChain buildMetadataFilterChain(OAAuthParameter oaParam, String metadataURL, byte[] certificate) throws CertificateException {
MetadataFilterChain filterChain = new MetadataFilterChain(metadataURL, certificate);
filterChain.getFilters().add(new SchemaValidationFilter());
- if (oa.isIsInterfederationIDP() != null && oa.isIsInterfederationIDP()) {
+ if (oaParam.isInderfederationIDP()) {
Logger.info("Online-Application is an interfederated IDP. Add addional Metadata policies");
- filterChain.getFilters().add(new InterfederatedIDPPublicServiceFilter(metadataURL, oa.getType()));
+ filterChain.getFilters().add(new InterfederatedIDPPublicServiceFilter(metadataURL, oaParam.getBusinessService()));
}
@@ -349,11 +446,11 @@ public class MOAMetadataProvider implements MetadataProvider {
try {
MOAHttpProtocolSocketFactory protoSocketFactory = new MOAHttpProtocolSocketFactory(
PVPConstants.SSLSOCKETFACTORYNAME,
- AuthConfigurationProvider.getInstance().getCertstoreDirectory(),
- AuthConfigurationProvider.getInstance().getTrustedCACertificates(),
+ AuthConfigurationProviderFactory.getInstance().getCertstoreDirectory(),
+ AuthConfigurationProviderFactory.getInstance().getTrustedCACertificates(),
null,
- ChainingModeType.fromValue(AuthConfigurationProvider.getInstance().getDefaultChainingMode()),
- AuthConfigurationProvider.getInstance().isTrustmanagerrevoationchecking());
+ AuthConfiguration.DEFAULT_X509_CHAININGMODE,
+ AuthConfigurationProviderFactory.getInstance().isTrustmanagerrevoationchecking());
httpClient.setCustomSSLTrustStore(metadataURL, protoSocketFactory);
@@ -438,14 +535,53 @@ public class MOAMetadataProvider implements MetadataProvider {
return internalProvider.getMetadata();
}
- public EntitiesDescriptor getEntitiesDescriptor(String name)
+ public EntitiesDescriptor getEntitiesDescriptor(String entitiesID)
throws MetadataProviderException {
- return internalProvider.getEntitiesDescriptor(name);
+ EntitiesDescriptor entitiesDesc = null;
+ try {
+ entitiesDesc = internalProvider.getEntitiesDescriptor(entitiesID);
+
+ if (entitiesDesc == null) {
+ Logger.debug("Can not find PVP metadata for entityID: " + entitiesID
+ + " Start refreshing process ...");
+ if (refreshMetadataProvider(entitiesID))
+ return internalProvider.getEntitiesDescriptor(entitiesID);
+
+ }
+
+ } catch (MetadataProviderException e) {
+ Logger.debug("Can not find PVP metadata for entityID: " + entitiesID
+ + " Start refreshing process ...");
+ if (refreshMetadataProvider(entitiesID))
+ return internalProvider.getEntitiesDescriptor(entitiesID);
+
+ }
+
+ return entitiesDesc;
}
public EntityDescriptor getEntityDescriptor(String entityID)
throws MetadataProviderException {
- return internalProvider.getEntityDescriptor(entityID);
+ EntityDescriptor entityDesc = null;
+ try {
+ entityDesc = internalProvider.getEntityDescriptor(entityID);
+ if (entityDesc == null) {
+ Logger.debug("Can not find PVP metadata for entityID: " + entityID
+ + " Start refreshing process ...");
+ if (refreshMetadataProvider(entityID))
+ return internalProvider.getEntityDescriptor(entityID);
+
+ }
+
+ } catch (MetadataProviderException e) {
+ Logger.debug("Can not find PVP metadata for entityID: " + entityID
+ + " Start refreshing process ...");
+ if (refreshMetadataProvider(entityID))
+ return internalProvider.getEntityDescriptor(entityID);
+
+ }
+
+ return entityDesc;
}
public List<RoleDescriptor> getRole(String entityID, QName roleName)
@@ -458,4 +594,23 @@ public class MOAMetadataProvider implements MetadataProvider {
return internalProvider.getRole(entityID, roleName, supportedProtocol);
}
+ /* (non-Javadoc)
+ * @see org.opensaml.saml2.metadata.provider.ObservableMetadataProvider#getObservers()
+ */
+ @Override
+ public List<Observer> getObservers() {
+ return ((ChainingMetadataProvider) internalProvider).getObservers();
+ }
+
+ protected void emitChangeEvent() {
+ if ((getObservers() == null) || (getObservers().size() == 0)) {
+ return;
+ }
+
+ List<Observer> tempObserverList = new ArrayList<Observer>(getObservers());
+ for (ObservableMetadataProvider.Observer observer : tempObserverList)
+ if (observer != null)
+ observer.onEvent(this);
+ }
+
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/signer/CredentialProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/signer/CredentialProvider.java
index 48e435777..fe287a433 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/signer/CredentialProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/signer/CredentialProvider.java
@@ -125,6 +125,9 @@ public class CredentialProvider {
} else if (privatekey instanceof iaik.security.ecc.ecdsa.ECPrivateKey) {
signer.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_ECDSA_SHA1);
+ } else {
+ Logger.warn("Could NOT evaluate the Private-Key type from PVP credential.");
+
}
signer.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/MOASAMLSOAPClient.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/MOASAMLSOAPClient.java
index 12de97a3f..4d12c38da 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/MOASAMLSOAPClient.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/MOASAMLSOAPClient.java
@@ -35,11 +35,10 @@ import org.opensaml.xml.XMLObject;
import org.opensaml.xml.parse.BasicParserPool;
import org.opensaml.xml.security.SecurityException;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.logging.Logger;
@@ -65,11 +64,11 @@ public class MOASAMLSOAPClient {
SecureProtocolSocketFactory sslprotocolsocketfactory =
new MOAHttpProtocolSocketFactory(
PVPConstants.SSLSOCKETFACTORYNAME,
- AuthConfigurationProvider.getInstance().getCertstoreDirectory(),
- AuthConfigurationProvider.getInstance().getTrustedCACertificates(),
+ AuthConfigurationProviderFactory.getInstance().getCertstoreDirectory(),
+ AuthConfigurationProviderFactory.getInstance().getTrustedCACertificates(),
null,
- ChainingModeType.fromValue(AuthConfigurationProvider.getInstance().getDefaultChainingMode()),
- AuthConfigurationProvider.getInstance().isTrustmanagerrevoationchecking());
+ AuthConfigurationProviderFactory.getInstance().getDefaultChainingMode(),
+ AuthConfigurationProviderFactory.getInstance().isTrustmanagerrevoationchecking());
clientBuilder.setHttpsProtocolSocketFactory(sslprotocolsocketfactory );
} catch (MOAHttpProtocolSocketFactoryException e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/EntityVerifier.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/EntityVerifier.java
index 550643da1..69c760f19 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/EntityVerifier.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/EntityVerifier.java
@@ -22,6 +22,7 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.protocols.pvp2x.verification;
+import java.io.IOException;
import java.util.List;
import org.opensaml.saml2.metadata.EntitiesDescriptor;
@@ -32,36 +33,39 @@ import org.opensaml.xml.signature.SignatureValidator;
import org.opensaml.xml.validation.ValidationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.NoCredentialsException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.SAMLRequestNotSignedException;
import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialProvider;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
+import at.gv.egovernment.moa.util.MiscUtil;
public class EntityVerifier {
public static byte[] fetchSavedCredential(String entityID) {
// List<OnlineApplication> oaList = ConfigurationDBRead
// .getAllActiveOnlineApplications();
+ try {
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(entityID);
- OnlineApplication oa = ConfigurationDBRead
- .getActiveOnlineApplication(entityID);
-
-// Iterator<OnlineApplication> oaIt = oaList.iterator();
-// while (oaIt.hasNext()) {
-// OnlineApplication oa = oaIt.next();
-// if (oa.getPublicURLPrefix().equals(entityID)) {
-
- if (oa != null && oa.getAuthComponentOA() != null) {
-
- OAPVP2 pvp2Config = oa.getAuthComponentOA().getOAPVP2();
- if (pvp2Config != null) {
- return pvp2Config.getCertificate();
- }
+ String certBase64 = oa.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+ if (MiscUtil.isNotEmpty(certBase64)) {
+ return Base64Utils.decode(certBase64, false);
+
}
-// }
+
+ } catch (ConfigurationException e) {
+ Logger.error("Access MOA-ID configuration FAILED.", e);
+
+ } catch (IOException e) {
+ Logger.warn("Decoding PVP2X metadata certificate FAILED.", e);
+
+ }
+
return null;
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerificationEngine.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerificationEngine.java
index 257f9dac4..70b778c49 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerificationEngine.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerificationEngine.java
@@ -38,7 +38,6 @@ import org.opensaml.saml2.core.RequestAbstractType;
import org.opensaml.saml2.core.Response;
import org.opensaml.saml2.core.StatusCode;
import org.opensaml.saml2.core.StatusResponseType;
-import org.opensaml.saml2.core.validator.AuthnRequestSchemaValidator;
import org.opensaml.saml2.encryption.Decrypter;
import org.opensaml.saml2.encryption.EncryptedElementTypeEncryptedKeyResolver;
import org.opensaml.saml2.metadata.IDPSSODescriptor;
@@ -68,25 +67,50 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.SchemaValidationExcep
import at.gv.egovernment.moa.id.protocols.pvp2x.messages.InboundMessage;
import at.gv.egovernment.moa.id.protocols.pvp2x.messages.MOARequest;
import at.gv.egovernment.moa.id.protocols.pvp2x.messages.MOAResponse;
+import at.gv.egovernment.moa.id.protocols.pvp2x.metadata.MOAMetadataProvider;
import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialProvider;
import at.gv.egovernment.moa.id.protocols.pvp2x.signer.CredentialsNotAvailableException;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
public class SAMLVerificationEngine {
public void verify(InboundMessage msg, SignatureTrustEngine sigTrustEngine ) throws org.opensaml.xml.security.SecurityException, Exception {
- if (msg instanceof MOARequest &&
- ((MOARequest)msg).getSamlRequest() instanceof RequestAbstractType)
- verifyRequest(((RequestAbstractType)((MOARequest)msg).getSamlRequest()), sigTrustEngine);
-
- else
- verifyResponse(((MOAResponse)msg).getResponse(), sigTrustEngine);
+ try {
+ if (msg instanceof MOARequest &&
+ ((MOARequest)msg).getSamlRequest() instanceof RequestAbstractType)
+ verifyRequest(((RequestAbstractType)((MOARequest)msg).getSamlRequest()), sigTrustEngine);
+ else
+ verifyResponse(((MOAResponse)msg).getResponse(), sigTrustEngine);
+
+ } catch (InvalidProtocolRequestException e) {
+ if (MiscUtil.isEmpty(msg.getEntityID())) {
+ throw e;
+
+ }
+ Logger.debug("PVP2X message validation FAILED. Relead metadata for entityID: " + msg.getEntityID());
+ if (!MOAMetadataProvider.getInstance().refreshMetadataProvider(msg.getEntityID()))
+ throw e;
+
+ else {
+ Logger.trace("PVP2X metadata reload finished. Check validate message again.");
+
+ if (msg instanceof MOARequest &&
+ ((MOARequest)msg).getSamlRequest() instanceof RequestAbstractType)
+ verifyRequest(((RequestAbstractType)((MOARequest)msg).getSamlRequest()), sigTrustEngine);
+
+ else
+ verifyResponse(((MOAResponse)msg).getResponse(), sigTrustEngine);
+
+ }
+ Logger.trace("Second PVP2X message validation finished");
+ }
}
- public void verifyResponse(StatusResponseType samlObj, SignatureTrustEngine sigTrustEngine ) throws org.opensaml.xml.security.SecurityException, Exception {
+ public void verifyResponse(StatusResponseType samlObj, SignatureTrustEngine sigTrustEngine ) throws InvalidProtocolRequestException{
SAMLSignatureProfileValidator profileValidator = new SAMLSignatureProfileValidator();
try {
profileValidator.validate(samlObj.getSignature());
@@ -110,13 +134,13 @@ public class SAMLVerificationEngine {
if (!sigTrustEngine.validate(samlObj.getSignature(), criteriaSet)) {
throw new InvalidProtocolRequestException("pvp2.21", new Object[] {});
}
- } catch (SecurityException e) {
- e.printStackTrace();
+ } catch (org.opensaml.xml.security.SecurityException e) {
+ Logger.warn("PVP2x message signature validation FAILED.", e);
throw new InvalidProtocolRequestException("pvp2.21", new Object[] {});
}
}
- public void verifyRequest(RequestAbstractType samlObj, SignatureTrustEngine sigTrustEngine ) throws org.opensaml.xml.security.SecurityException, Exception {
+ public void verifyRequest(RequestAbstractType samlObj, SignatureTrustEngine sigTrustEngine ) throws InvalidProtocolRequestException {
SAMLSignatureProfileValidator profileValidator = new SAMLSignatureProfileValidator();
try {
profileValidator.validate(samlObj.getSignature());
@@ -140,8 +164,8 @@ public class SAMLVerificationEngine {
if (!sigTrustEngine.validate(samlObj.getSignature(), criteriaSet)) {
throw new InvalidProtocolRequestException("pvp2.21", new Object[] {});
}
- } catch (SecurityException e) {
- e.printStackTrace();
+ } catch (org.opensaml.xml.security.SecurityException e) {
+ Logger.warn("PVP2x message signature validation FAILED.", e);
throw new InvalidProtocolRequestException("pvp2.21", new Object[] {});
}
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerifierMOASP.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerifierMOASP.java
index 885de6805..942fab4f3 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerifierMOASP.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/SAMLVerifierMOASP.java
@@ -38,7 +38,7 @@ import at.gv.egovernment.moa.id.auth.exception.ServiceException;
import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker;
import at.gv.egovernment.moa.id.auth.parser.VerifyXMLSignatureResponseParser;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.util.XMLUtil;
import at.gv.egovernment.moa.logging.Logger;
@@ -52,7 +52,7 @@ public class SAMLVerifierMOASP implements ISAMLVerifier {
try {
if (request.isSigned()) {
- String trustProfileID = AuthConfigurationProvider.getInstance()
+ String trustProfileID = AuthConfigurationProviderFactory.getInstance()
.getStorkConfig().getSignatureVerificationParameter()
.getTrustProfileID();
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/InterfederatedIDPPublicServiceFilter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/InterfederatedIDPPublicServiceFilter.java
index 4d9b97a52..918863d05 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/InterfederatedIDPPublicServiceFilter.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/InterfederatedIDPPublicServiceFilter.java
@@ -41,14 +41,10 @@ public class InterfederatedIDPPublicServiceFilter implements MetadataFilter {
/**
*
*/
- public InterfederatedIDPPublicServiceFilter(String metadataURL, String oaType) {
+ public InterfederatedIDPPublicServiceFilter(String metadataURL, boolean isBusinessService) {
Logger.debug("Add " + this.getClass().getName() + " to metadata policy");
this.metadataURL = metadataURL;
-
- if (oaType.equals("businessService"))
- this.isPublicService = false;
- else
- this.isPublicService = true;
+ this.isPublicService = !isBusinessService;
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MetadataSignatureFilter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MetadataSignatureFilter.java
index 6dac4bba1..149874ce0 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MetadataSignatureFilter.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MetadataSignatureFilter.java
@@ -37,7 +37,7 @@ import org.opensaml.xml.XMLObject;
import org.opensaml.xml.security.x509.BasicX509Credential;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.NoCredentialsException;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.filter.SignatureValidationException;
import at.gv.egovernment.moa.id.protocols.pvp2x.verification.EntityVerifier;
@@ -151,7 +151,7 @@ public class MetadataSignatureFilter implements MetadataFilter {
throw new MOAIDException("Invalid Metadata file Root element is no EntitiesDescriptor", null);
}
- ConfigurationDBUtils.closeSession();
+
Logger.info("Metadata signature policy check done OK");
} catch (MOAIDException e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/SchemaValidationFilter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/SchemaValidationFilter.java
index f73b541bf..1aca587c9 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/SchemaValidationFilter.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/SchemaValidationFilter.java
@@ -35,7 +35,7 @@ import org.opensaml.common.xml.SAMLSchemaBuilder;
import org.xml.sax.SAXException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.filter.SchemaValidationException;
import at.gv.egovernment.moa.logging.Logger;
@@ -49,7 +49,7 @@ public class SchemaValidationFilter implements MetadataFilter {
public SchemaValidationFilter() {
try {
- isActive = AuthConfigurationProvider.getInstance().isPVPSchemaValidationActive();
+ isActive = AuthConfigurationProviderFactory.getInstance().isPVPSchemaValidationActive();
} catch (ConfigurationException e) {
e.printStackTrace();
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetArtifactAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetArtifactAction.java
index 4cdd1db01..2019b0d20 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetArtifactAction.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetArtifactAction.java
@@ -27,11 +27,12 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.data.ExtendedSAMLAttribute;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.servlet.RedirectServlet;
import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationImpl;
@@ -65,7 +66,7 @@ public class GetArtifactAction implements IAction {
}
try {
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(oaURL);
SAML1AuthenticationServer saml1server = SAML1AuthenticationServer.getInstace();
@@ -80,11 +81,11 @@ public class GetArtifactAction implements IAction {
String samlArtifactBase64 = saml1server.BuildSAMLArtifact(oaParam, authData, sourceID);
if (authData.isSsoSession()) {
- String url = AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/RedirectServlet";
+ String url = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/RedirectServlet";
url = addURLParameter(url, RedirectServlet.REDIRCT_PARAM_URL, URLEncoder.encode(oaURL, "UTF-8"));
if (!oaParam.getBusinessService())
- url = addURLParameter(url, PARAM_TARGET, URLEncoder.encode(req.getTarget(), "UTF-8"));
- url = addURLParameter(url, PARAM_SAMLARTIFACT, URLEncoder.encode(samlArtifactBase64, "UTF-8"));
+ url = addURLParameter(url, MOAIDAuthConstants.PARAM_TARGET, URLEncoder.encode(req.getTarget(), "UTF-8"));
+ url = addURLParameter(url, MOAIDAuthConstants.PARAM_SAMLARTIFACT, URLEncoder.encode(samlArtifactBase64, "UTF-8"));
url = httpResp.encodeRedirectURL(url);
httpResp.setContentType("text/html");
@@ -94,12 +95,12 @@ public class GetArtifactAction implements IAction {
} else {
String redirectURL = oaURL;
if (!oaParam.getBusinessService()) {
- redirectURL = addURLParameter(redirectURL, PARAM_TARGET,
+ redirectURL = addURLParameter(redirectURL, MOAIDAuthConstants.PARAM_TARGET,
URLEncoder.encode(req.getTarget(), "UTF-8"));
}
- redirectURL = addURLParameter(redirectURL, PARAM_SAMLARTIFACT,
+ redirectURL = addURLParameter(redirectURL, MOAIDAuthConstants.PARAM_SAMLARTIFACT,
URLEncoder.encode(samlArtifactBase64, "UTF-8"));
redirectURL = httpResp.encodeRedirectURL(redirectURL);
httpResp.setContentType("text/html");
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java
index c8a480cac..e70e71d49 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java
@@ -51,10 +51,10 @@ import at.gv.egovernment.moa.id.auth.exception.ServiceException;
import at.gv.egovernment.moa.id.auth.exception.ValidateException;
import at.gv.egovernment.moa.id.auth.parser.SAMLArtifactParser;
import at.gv.egovernment.moa.id.auth.validator.parep.ParepUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.config.auth.data.SAML1ConfigurationParameters;
import at.gv.egovernment.moa.id.data.AuthenticationData;
import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.storage.AssertionStorage;
@@ -173,10 +173,10 @@ public class SAML1AuthenticationServer extends AuthenticationServer {
throws ConfigurationException, BuildException, AuthenticationException {
//Load SAML1 Parameter from OA config
- OASAML1 saml1parameter = oaParam.getSAML1Parameter();
+ SAML1ConfigurationParameters saml1parameter = oaParam.getSAML1Parameter();
boolean useCondition = saml1parameter.isUseCondition();
- int conditionLength = saml1parameter.getConditionLength().intValue();
+ int conditionLength = saml1parameter.getConditionLength();
try {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1Protocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1Protocol.java
index 9934c339d..7416dfb00 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1Protocol.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1Protocol.java
@@ -31,16 +31,17 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.InvalidProtocolRequestException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.ProtocolNotActiveException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.servlet.RedirectServlet;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.config.auth.data.SAML1ConfigurationParameters;
import at.gv.egovernment.moa.id.moduls.IAction;
import at.gv.egovernment.moa.id.moduls.IModulInfo;
import at.gv.egovernment.moa.id.moduls.IRequest;
@@ -50,7 +51,7 @@ import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
import at.gv.egovernment.moa.util.URLEncoder;
-public class SAML1Protocol implements IModulInfo, MOAIDAuthConstants {
+public class SAML1Protocol extends MOAIDAuthConstants implements IModulInfo {
public static final String NAME = SAML1Protocol.class.getName();
public static final String PATH = "id_saml1";
@@ -98,10 +99,11 @@ public class SAML1Protocol implements IModulInfo, MOAIDAuthConstants {
}
public IRequest preProcess(HttpServletRequest request,
- HttpServletResponse response, String action) throws MOAIDException {
+ HttpServletResponse response, String action,
+ String sessionId, String transactionId) throws MOAIDException {
SAML1RequestImpl config = new SAML1RequestImpl();
- if (!AuthConfigurationProvider.getInstance().getAllowedProtocols().isSAML1Active()) {
+ if (!AuthConfigurationProviderFactory.getInstance().getAllowedProtocols().isSAML1Active()) {
Logger.info("SAML1 is deaktivated!");
throw new ProtocolNotActiveException("auth.22", new Object[] { "SAML 1" });
@@ -142,21 +144,24 @@ public class SAML1Protocol implements IModulInfo, MOAIDAuthConstants {
//load Target only from OA config
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance()
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(oaURL);
if (oaParam == null)
throw new InvalidProtocolRequestException("auth.00",
new Object[] { null });
- OASAML1 saml1 = oaParam.getSAML1Parameter();
+ SAML1ConfigurationParameters saml1 = oaParam.getSAML1Parameter();
if (saml1 == null || !(saml1.isIsActive() != null && saml1.isIsActive()) ) {
Logger.info("Online-Application " + oaURL + " can not use SAML1 for authentication.");
throw new InvalidProtocolRequestException("auth.00",
new Object[] { null });
}
-
+ config.setOnlineApplicationConfiguration(oaParam);
config.setSourceID(sourceID);
+
+ MOAReversionLogger.getInstance().logEvent(sessionId, transactionId, MOAIDEventConstants.AUTHPROTOCOL_SAML1_AUTHNREQUEST);
+
if (MiscUtil.isNotEmpty(target))
config.setTarget(target);
@@ -172,7 +177,7 @@ public class SAML1Protocol implements IModulInfo, MOAIDAuthConstants {
IRequest protocolRequest)
throws Throwable{
- OAAuthParameter oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(protocolRequest.getOAURL());
if (!oa.getSAML1Parameter().isProvideAllErrors())
return false;
@@ -180,7 +185,7 @@ public class SAML1Protocol implements IModulInfo, MOAIDAuthConstants {
SAML1AuthenticationServer saml1authentication = SAML1AuthenticationServer.getInstace();
String samlArtifactBase64 = saml1authentication.BuildErrorAssertion(e, protocolRequest);
- String url = AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/RedirectServlet";
+ String url = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/RedirectServlet";
url = addURLParameter(url, RedirectServlet.REDIRCT_PARAM_URL, URLEncoder.encode(protocolRequest.getOAURL(), "UTF-8"));
url = addURLParameter(url, PARAM_SAMLARTIFACT, URLEncoder.encode(samlArtifactBase64, "UTF-8"));
url = response.encodeRedirectURL(url);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1RequestImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1RequestImpl.java
index 9bf88534f..5370573a7 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1RequestImpl.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1RequestImpl.java
@@ -27,10 +27,10 @@ import java.util.List;
import org.opensaml.saml2.core.Attribute;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OASAML1;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.config.auth.data.SAML1ConfigurationParameters;
import at.gv.egovernment.moa.id.moduls.RequestImpl;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.protocols.pvp2x.builder.AttributQueryBuilder;
@@ -70,8 +70,8 @@ public class SAML1RequestImpl extends RequestImpl {
reqAttr.addAll(SAML1Protocol.DEFAULTREQUESTEDATTRFORINTERFEDERATION);
try {
- OAAuthParameter oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(getOAURL());
- OASAML1 saml1 = oa.getSAML1Parameter();
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(getOAURL());
+ SAML1ConfigurationParameters saml1 = oa.getSAML1Parameter();
if (saml1 != null) {
if (saml1.isProvideAUTHBlock())
reqAttr.add(PVPConstants.EID_AUTH_BLOCK_NAME);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java
index 42e9bf25d..25cb952d7 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java
@@ -29,7 +29,7 @@ import java.util.List;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationImpl;
@@ -140,7 +140,7 @@ public class AttributeCollector implements IAction {
// read configuration parameters of OA
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(container.getRequest().getAssertionConsumerServiceURL());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(container.getRequest().getAssertionConsumerServiceURL());
if (oaParam == null)
throw new AuthenticationException("stork.12", new Object[]{container.getRequest().getAssertionConsumerServiceURL()});
@@ -297,7 +297,7 @@ public class AttributeCollector implements IAction {
Logger.info(e.getAp().getClass().getSimpleName() + " is going to ask an external service provider for the requested attributes");
// add container-key to redirect embedded within the return URL
- e.getAp().performRedirect(AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/stork2/ResumeAuthentication?" + ARTIFACT_ID + "=" + newArtifactId, request, response, oaParam);
+ e.getAp().performRedirect(AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/stork2/ResumeAuthentication?" + ARTIFACT_ID + "=" + newArtifactId, request, response, oaParam);
} catch (Exception e1) {
// TODO should we return the response as is to the PEPS?
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java
index a8a166a02..aadbbd959 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java
@@ -22,7 +22,8 @@
*******************************************************************************/
package at.gv.egovernment.moa.id.protocols.stork2;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
+import at.gv.egovernment.moa.id.commons.MOAIDConstants;
+import at.gv.egovernment.moa.id.config.stork.StorkAttributeProviderPlugin;
import at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.AttributeProvider;
import at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.EHvdAttributeProviderPlugin;
import at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.MandateAttributeRequestProvider;
@@ -32,6 +33,7 @@ import at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.StorkAttribu
import at.gv.egovernment.moa.logging.Logger;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.PriorityQueue;
@@ -47,13 +49,7 @@ public class AttributeProviderFactory {
* @return the available plugins
*/
public static List<String> getAvailablePlugins() {
- List<String> result = new ArrayList<String>();
- result.add("StorkAttributeRequestProvider");
- result.add("EHvdAttributeProvider");
- result.add("SignedDocAttributeRequestProvider");
- result.add("MandateAttributeRequestProvider");
- result.add("PVPAuthenticationProvider");
- return result;
+ return MOAIDConstants.ALLOWED_STORKATTRIBUTEPROVIDERS;
}
/**
@@ -87,14 +83,14 @@ public class AttributeProviderFactory {
/**
* Gets fresh instances of the configured plugins.
*
- * @param configuredAPs the configured a ps
+ * @param collection the configured a ps
* @return the configured plugins
*/
public static Iterator<AttributeProvider> getConfiguredPlugins(
- List<AttributeProviderPlugin> configuredAPs) {
+ Collection<StorkAttributeProviderPlugin> collection) {
PriorityQueue<AttributeProvider> result = new PriorityQueue<AttributeProvider>();
- for (AttributeProviderPlugin current : configuredAPs) {
+ for (StorkAttributeProviderPlugin current : collection) {
result.add(create(current.getName(), current.getUrl(), current.getAttributes()));
Logger.debug("Adding configured attribute provider: " + current.getClass().getName() + current.getName() + " at " + current.getUrl());
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java
index 01f84125f..59db5797d 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java
@@ -25,7 +25,7 @@ package at.gv.egovernment.moa.id.protocols.stork2;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
@@ -81,7 +81,7 @@ public class AuthenticationRequest implements IAction {
httpResp.reset();
//TODO: CHECK: req.getOAURL() should return the unique OA identifier
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(req.getOAURL());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(req.getOAURL());
if (oaParam == null)
throw new AuthenticationException("stork.12", new Object[]{req.getOAURL()});
@@ -205,7 +205,7 @@ public class AuthenticationRequest implements IAction {
//TODO: in case of Single LogOut -> SLO information has to be stored
// check if citizen country is configured in the system
- if (!(AuthConfigurationProvider.getInstance().getStorkConfig().getCpepsMap().containsKey(citizenCountryCode))) {
+ if (!(AuthConfigurationProviderFactory.getInstance().getStorkConfig().getCpepsMap().containsKey(citizenCountryCode))) {
Logger.error("Citizen country PEPS not configured in MOA instance: " + citizenCountryCode);
throw new MOAIDException("stork.05", null); // TODO
}
@@ -217,12 +217,12 @@ public class AuthenticationRequest implements IAction {
String destinationURL = null;
try {
- issuer = new URL(AuthConfigurationProvider.getInstance().getPublicURLPrefix()).toString();
- destinationURL = AuthConfigurationProvider.getInstance().getStorkConfig().getCPEPS(citizenCountryCode).getPepsURL().toString();
- publicURLPrefix = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ issuer = new URL(AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix()).toString();
+ destinationURL = AuthConfigurationProviderFactory.getInstance().getStorkConfig().getCPEPS(citizenCountryCode).getPepsURL().toString();
+ publicURLPrefix = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
assertionConsumerURL = publicURLPrefix + "/stork2/SendPEPSAuthnRequest";
} catch (MalformedURLException ex) {
- Logger.error("Wrong PublicURLPrefix setting of MOA instance: " + AuthConfigurationProvider.getInstance().getPublicURLPrefix(), ex);
+ Logger.error("Wrong PublicURLPrefix setting of MOA instance: " + AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix(), ex);
throw new MOAIDException("stork.05", null); // TODO
} catch (Exception ex) {
Logger.error("Problem with PEPS configuration of MOA instance.", ex);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/ConsentEvaluator.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/ConsentEvaluator.java
index 3acd1039f..bde0f362d 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/ConsentEvaluator.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/ConsentEvaluator.java
@@ -32,7 +32,7 @@ import java.util.Map.Entry;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationInterface;
@@ -91,7 +91,7 @@ public class ConsentEvaluator implements IAction {
}
//TODO: CHECK: req.getOAURL() should return the unique OA identifier
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(req.getOAURL());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(req.getOAURL());
if (oaParam == null)
throw new AuthenticationException("stork.12", new Object[]{req.getOAURL()});
@@ -145,7 +145,7 @@ public class ConsentEvaluator implements IAction {
Template template = velocityEngine.getTemplate("/resources/templates/stork2_consent.html");
VelocityContext context = new VelocityContext();
- context.put("action", AuthConfigurationProvider.getInstance().getPublicURLPrefix() + "/stork2/GetConsent?" + ARTIFACT_ID + "=" + newArtifactId);
+ context.put("action", AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix() + "/stork2/CompleteAuthentication?" + ARTIFACT_ID + "=" + newArtifactId);
// assemble table
String table = "";
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java
index a92d02e08..e9a1c2f1d 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java
@@ -30,7 +30,7 @@ import org.opensaml.saml2.core.Attribute;
import at.gv.egovernment.moa.id.auth.builder.DynamicOAAuthParameterBuilder;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.config.auth.data.DynamicOAAuthParameters;
@@ -235,7 +235,7 @@ public class MOASTORKRequest extends RequestImpl {
//TODO: only for testing with MOA-ID as PVP Stammportal
IOAAuthParameters oa;
try {
- oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(getOAURL());
+ oa = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(getOAURL());
oa = DynamicOAAuthParameterBuilder.buildFromAuthnRequest(oa, this);
DynamicOAAuthParameters tmp = (DynamicOAAuthParameters) oa;
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java
index c529a8465..e58fe804f 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java
@@ -27,7 +27,7 @@ import at.gv.egovernment.moa.id.auth.data.IdentityLink;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.data.SLOInformationInterface;
@@ -88,7 +88,7 @@ public class MandateRetrievalRequest implements IAction {
Logger.debug("Removing personal identification value and type from original mandate ");
originalContent = StringUtils.getBytesUtf8(originalMandate);
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(req.getOAURL());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(req.getOAURL());
if (oaParam == null)
throw new AuthenticationException("stork.12", new Object[]{req.getOAURL()});
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java
index 57531992d..071b5ae8a 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java
@@ -25,7 +25,7 @@ package at.gv.egovernment.moa.id.protocols.stork2;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.moduls.IAction;
import at.gv.egovernment.moa.id.moduls.IModulInfo;
@@ -45,7 +45,7 @@ import java.util.HashMap;
*
* @author bsuzic
*/
-public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {
+public class STORKProtocol extends MOAIDAuthConstants implements IModulInfo {
public static final String NAME = STORKProtocol.class.getName();
public static final String PATH = "id_stork2";
@@ -84,7 +84,8 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {
First request step - send it to BKU selection for user authentication. After the user credentials
and other info are obtained, in the second step the request will be processed and the user redirected
*/
- public IRequest preProcess(HttpServletRequest request, HttpServletResponse response, String action) throws MOAIDException {
+ public IRequest preProcess(HttpServletRequest request, HttpServletResponse response, String action,
+ String sessionId, String transactionId) throws MOAIDException {
Logger.info("Starting preprocessing for Stork2 protocol");
Logger.debug("Request method: " + request.getMethod());
Logger.debug("Request content length: " + request.getContentLength());
@@ -187,11 +188,12 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {
STORK2Request.setSTORKAttrRequest(attrRequest);
//check if OA is instance of VIDP or STORKPVPGateway
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(STORK2Request.getOAURL());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(STORK2Request.getOAURL());
if (oaParam == null)
throw new AuthenticationException("stork.12", new Object[]{STORK2Request.getOAURL()});
else {
+ STORK2Request.setOnlineApplicationConfiguration(oaParam);
if (oaParam.isSTORKPVPGateway()) {
if (MiscUtil.isNotEmpty(oaParam.getSTORKPVPForwardEntity())) {
Logger.info("Received request for STORK->PVP gateway. " +
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java
index 2c77db94e..def89d0d9 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java
@@ -31,32 +31,28 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Properties;
import javax.activation.DataSource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.BindingProvider;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.AttributeStatusType;
-import org.apache.commons.codec.binary.Base64;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.NotImplementedException;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
-import org.bouncycastle.util.encoders.UrlBase64;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.IAuthData;
import at.gv.egovernment.moa.id.protocols.stork2.ExternalAttributeRequestRequiredException;
@@ -64,11 +60,11 @@ import at.gv.egovernment.moa.id.protocols.stork2.MOASTORKRequest;
import at.gv.egovernment.moa.id.protocols.stork2.UnsupportedAttributeException;
import at.gv.egovernment.moa.id.util.VelocityProvider;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
import eu.stork.oasisdss.api.ApiUtils;
import eu.stork.oasisdss.api.LightweightSourceResolver;
import eu.stork.oasisdss.api.ResultMajor;
import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
-import eu.stork.oasisdss.api.exceptions.UtilsException;
import eu.stork.oasisdss.profile.AnyType;
import eu.stork.oasisdss.profile.Base64Data;
import eu.stork.oasisdss.profile.DocumentType;
@@ -84,7 +80,6 @@ import eu.stork.peps.auth.commons.STORKAttrQueryRequest;
import eu.stork.peps.auth.engine.STORKSAMLEngine;
import eu.stork.peps.exceptions.STORKSAMLEngineException;
import eu.stork.documentservice.DocumentService;
-import eu.stork.documentservice.data.DatabaseConnectorMySQLImpl;
/**
* Forwards a signedDoc attribute request to the oasis-dss service instance
*/
@@ -110,7 +105,7 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
this.oasisDssWebFormURL = oasisDssWebFormURL;
try {
- AuthConfigurationProvider authConfigurationProvider = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authConfigurationProvider = AuthConfigurationProviderFactory.getInstance();
dtlUrl = authConfigurationProvider.getDocumentServiceUrl();
Logger.info ("SignedDocAttributeRequestProvider, using dtlUrl:"+dtlUrl);
} catch (Exception e) {
@@ -174,7 +169,7 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
Logger.debug("signresponse method: " + httpReq.getMethod());
Logger.debug("signresponse content type: " + httpReq.getContentType());
Logger.debug("signresponse parameter:"+base64);
- String signResponseString = new String(Base64.decodeBase64(base64), "UTF8");
+ String signResponseString = new String(Base64Utils.decode(base64, false), "UTF8");
Logger.debug("RECEIVED signresponse:"+signResponseString);
//create SignResponse object
Source response = new StreamSource(new java.io.StringReader(signResponseString));
@@ -444,7 +439,7 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
e.printStackTrace();
}
- context.put("signrequest", Base64.encodeBase64String(signRequestString.getBytes("UTF8")));
+ context.put("signrequest", Base64Utils.encode(signRequestString.getBytes("UTF8")));
context.put("clienturl", url);
context.put("action", oasisDssWebFormURL);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilder.java
deleted file mode 100644
index 708eb3f2c..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilder.java
+++ /dev/null
@@ -1,110 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.Vector;
-
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Builder for {@link java.net.URLConnection} objects used to forward requests
- * to the remote online application.
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-
-public interface ConnectionBuilder {
-
- /**
- * Builds an HttpURLConnection to a {@link java.net.URL} which is derived
- * from an {@link HttpServletRequest} URL, by substitution of a
- * public URL prefix for the real URL prefix.<br>
- * The HttpURLConnection has been created by {@link java.net.URL#openConnection}, but
- * it has not yet been connected to by {@link java.net.URLConnection#connect}.<br>
- * The field settings of the HttpURLConnection are:
- * <ul>
- * <li><code>allowUserInteraction = false</code></li>
- * <li><code>doInput = true</code></li>
- * <li><code>doOutput = true</code></li>
- * <li><code>requestMethod = request.getMethod()</code></li>
- * <li><code>useCaches = false</code></li>
- * </ul>
- *
- * @param request the incoming request which shall be forwarded
- * @param publicURLPrefix the public URL prefix to be substituted by the real URL prefix
- * @param realURLPrefix the URL prefix to substitute the public URL prefix
- * @param sslSocketFactory factory to be used for creating an SSL socket in case
- * of a URL for scheme <code>"https:"</code>;
- * <br>if <code>null</code>, the default SSL socket factory would be used
- * @param parameters parameters to be forwarded
- * @return a URLConnection created by {@link java.net.URL#openConnection}, connecting to
- * the requested URL with <code>publicURLPrefix</code> substituted by <code>realURLPrefix</code>
- * @throws IOException if an I/O exception occurs during opening the connection
- * @see java.net.URL#openConnection()
- * @see com.sun.net.ssl.HttpsURLConnection#getDefaultSSLSocketFactory()
- */
- public HttpURLConnection buildConnection(
- HttpServletRequest request,
- String publicURLPrefix,
- String realURLPrefix,
- SSLSocketFactory sslSocketFactory,
- Vector parameters) throws IOException;
-
-
- /**
- * Disconnects the HttpURLConnection if necessary.
- * The implementation of the Connectionbuilder decides wether
- * if this should be happen or not.
- *
- * @param con the HttpURLConnection which is normaly to be closed
- */
- public void disconnect(HttpURLConnection con);
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilderFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilderFactory.java
deleted file mode 100644
index 6a268b061..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ConnectionBuilderFactory.java
+++ /dev/null
@@ -1,114 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.proxy.OAProxyParameter;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-
-/**
- * Factory delivering a {@link ConnectionBuilder} implementation for
- * an online application, initialized from configuration data.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class ConnectionBuilderFactory {
-
- /** default connection builder to be used for online application
- * where no special implementation of the <code>ConnectionBuilder</code>
- * interface is configured
- */
- private static ConnectionBuilder defaultConnectionBuilder;
- /** mapping from online application public URL prefix to an implementation
- * of the <code>ConnectionBuilder</code> interface to be used;
- * if no mapping is given for an online application, the
- * <code>DefaultConnectionBuilder</code> will be used */
- private static Map connectionBuilderMap;
-
- /**
- * Initializes the <code>ConnectionBuilder</code> map from the configuration data.
- * @throws ConfigurationException when the configuration cannot be read,
- * or when a class name configured cannot be instantiated
- */
- public static void initialize() throws ConfigurationException {
- defaultConnectionBuilder = new DefaultConnectionBuilder();
- connectionBuilderMap = new HashMap();
- ProxyConfigurationProvider proxyConf = ProxyConfigurationProvider.getInstance();
- for (int i = 0; i < proxyConf.getOnlineApplicationParameters().length; i++) {
- OAProxyParameter oaParam = proxyConf.getOnlineApplicationParameters()[i];
- String publicURLPrefix = oaParam.getPublicURLPrefix();
- String className = oaParam.getConnectionBuilderImpl();
- if (className != null) {
- try {
- ConnectionBuilder cb = (ConnectionBuilder)Class.forName(className).newInstance();
- connectionBuilderMap.put(publicURLPrefix, cb);
- }
- catch (Throwable ex) {
- throw new ConfigurationException("config.07", new Object[] {publicURLPrefix}, ex);
- }
- }
- }
- }
-
- /**
- * Gets the <code>ConnectionBuilder</code> implementation to be used for the given
- * online application.
- * @param publicURLPrefix public URL prefix of the online application
- * @return <code>ConnectionBuilder</code> implementation
- */
- public static ConnectionBuilder getConnectionBuilder(String publicURLPrefix) {
- ConnectionBuilder cb = (ConnectionBuilder) connectionBuilderMap.get(publicURLPrefix);
- if (cb == null)
- return defaultConnectionBuilder;
- else
- return cb;
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultConnectionBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultConnectionBuilder.java
deleted file mode 100644
index 59ef64357..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultConnectionBuilder.java
+++ /dev/null
@@ -1,229 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.http.HttpServletRequest;
-
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.BoolUtils;
-import at.gv.egovernment.moa.util.URLEncoder;
-
-
-
-/**
- * Defaultimplementierung von <code>ConnectionBuilder</code>.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class DefaultConnectionBuilder implements ConnectionBuilder {
-
- /** a boolean to disable the HostnameVerification (default = false)*/
- private static boolean cbDisableHostnameVerification = false;
-
- /**
- * Constructor for DefaultConnectionBuilder.
- * @throws ConfigurationException on any config error
- */
- public DefaultConnectionBuilder() throws ConfigurationException {
- //INFO: removed from MOA-ID 2.0 config
- cbDisableHostnameVerification = false;
-// cbDisableHostnameVerification = BoolUtils.valueOf(
-// ProxyConfigurationProvider.getInstance().getGenericConfigurationParameter(
-// "ProxyComponent.DisableHostnameVerification"));
- //TODO MOA-ID BRZ undocumented feature
- if (cbDisableHostnameVerification)
- Logger.warn("ProxyComponent.DisableHostnameVerification: " + cbDisableHostnameVerification);
- }
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.ConnectionBuilder#buildConnection
- */
- public HttpURLConnection buildConnection(
- HttpServletRequest req,
- String publicURLPrefix,
- String realURLPrefix,
- SSLSocketFactory sslSocketFactory,
- Vector parameters)
- throws IOException {
-
- // Bug [#540]
- //String requestedURL = req.getRequestURL().toString();
- String requestedURL = escapeUrl(req.getRequestURL().toString());
-
- // check whether requested URL starts with publicURLPrefix
-
- //Temporary allow http:// urls instead of the https:// in publicURLPrefix
- //if (req.getSession().getAttribute("authorizationkey")==null) {
- // if (! requestedURL.startsWith(publicURLPrefix))
- // throw new IOException(MOAIDMessageProvider.getInstance().getMessage(
- // "proxy.01", new Object[] {requestedURL, publicURLPrefix}));
- //}
-
- // in case of GET request, append query string to requested URL;
- // otherwise, HttpURLConnection would perform a POST request
- if ("get".equalsIgnoreCase(req.getMethod()) && ! parameters.isEmpty()) {
- requestedURL = appendQueryString(requestedURL, parameters);
- }
- // build real URL in online application
- String realURLString = realURLPrefix + requestedURL.substring(publicURLPrefix.length());
- URL url = new URL(realURLString);
- Logger.debug("OA Request: " + req.getMethod() + " " + url.toString());
-
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setRequestMethod(req.getMethod());
- conn.setDoInput(true);
- conn.setDoOutput(true);
- //conn.setUseCaches(false);
- //conn.setAllowUserInteraction(true);
- conn.setInstanceFollowRedirects(false);
-
- // JSSE Abhängigkeit
- if (conn instanceof HttpsURLConnection && sslSocketFactory != null) {
- HttpsURLConnection httpsConn = (HttpsURLConnection) conn;
- httpsConn.setSSLSocketFactory(sslSocketFactory);
- if (cbDisableHostnameVerification)
- httpsConn.setHostnameVerifier(new HostnameNonVerifier());
- }
-
- return conn;
- }
-
- private static String escapeUrl(String unescapedUrlString) throws RuntimeException {
- try {
- URL unescapedUrl = new URL(unescapedUrlString);
- String protocol = unescapedUrl.getProtocol();
- String fragment = unescapedUrl.getRef();
- String ssp = unescapedUrlString.substring(protocol.length() + 1, unescapedUrlString.length() - ((fragment == null) ? 0 : fragment.length() + 1));
-
- URL url2 = new URI(protocol, ssp, fragment).toURL();
- return url2.toExternalForm();
- } catch (MalformedURLException e) {
- throw new RuntimeException(e);
- } catch (URISyntaxException e) {
- throw new RuntimeException(e);
- }
- }
-
-
- /**
- * Disconnects the HttpURLConnection if necessary.
- * The implementation of the Connectionbuilder decides wether
- * if this should be happen or not.
- *
- * @param conn the HttpURLConnection which is normaly to be closed
- */
- public void disconnect(HttpURLConnection conn) {
- conn.disconnect();
- }
-
-
- /**
- * @param requestedURL
- * @param parameters
- * @return
- */
- private String appendQueryString(String requestedURL, Vector parameters) {
- String newURL = requestedURL;
- String parameter[] = new String[2];
- String paramValue ="";
- String paramName ="";
- String paramString ="";
- for (Iterator iter = parameters.iterator(); iter.hasNext();) {
- try {
- parameter = (String[]) iter.next();
- //next two lines work not with OWA-SSL-Login-form
- paramName = URLEncoder.encode((String) parameter[0], "UTF-8");
- paramValue = URLEncoder.encode((String) parameter[1], "UTF-8");
-
- } catch (UnsupportedEncodingException e) {
- //UTF-8 should be supported
- }
- paramString = "&" + paramName + "=" + paramValue + paramString;
- }
- if (paramString.length()>0) newURL = newURL + "?" + paramString.substring(1);
- return newURL;
- }
-
- /**
- * @author Stefan Knirsch
- * @version $Id$
- * A private class to change the standard HostName verifier to disable the
- * Hostname Verification Check
- */
-
- // JSSE Abhängigkeit
- private class HostnameNonVerifier implements HostnameVerifier {
-
- public boolean verify(String hostname, SSLSession session) {
- return true;
- }
-
- /**
- * @see com.sun.net.ssl.HostnameVerifier#verify(String, String)
- */
- /*public boolean verify(String arg0, String arg1) {
- return true;
- }*/
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultLoginParameterResolver.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultLoginParameterResolver.java
deleted file mode 100644
index f094dfabf..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/DefaultLoginParameterResolver.java
+++ /dev/null
@@ -1,187 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import at.gv.egovernment.moa.id.config.proxy.OAConfiguration;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.util.Base64Utils;
-import at.gv.egovernment.moa.util.URLEncoder;
-
-/**
- * Implementation of interface <code>LoginParameterResolver</code>
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class DefaultLoginParameterResolver implements LoginParameterResolver {
-
-
-
- /**
- * Configuration mehtod (not used)
- */
- public void configure(String configuration, Boolean businessService) throws LoginParameterResolverException {
- }
-
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.LoginParameterResolver#getAuthenticationHeaders(OAConfiguration, AuthenticationData, String, boolean, String)
- */
- public Map getAuthenticationHeaders(
- OAConfiguration oaConf,
- SAML1AuthenticationData authData,
- String clientIPAddress,
- boolean businessService,
- String publicURLPrefix) {
-
- Map result = new HashMap();
-
- if (oaConf.getAuthType().equals(OAConfiguration.BASIC_AUTH)) {
- String useridPredicate = oaConf.getBasicAuthUserIDMapping();
- String userid = resolveValue(useridPredicate, authData, clientIPAddress);
- String passwordPredicate = oaConf.getBasicAuthPasswordMapping();
- String password = resolveValue(passwordPredicate, authData, clientIPAddress);
-
- try {
- String userIDPassword = userid + ":" + password;
- String credentials = Base64Utils.encode(userIDPassword.getBytes());
- result.put("Authorization", "Basic " + credentials);
- }
- catch (IOException ignore) {
- }
- }
- else if (oaConf.getAuthType().equals(OAConfiguration.HEADER_AUTH)) {
- for (Iterator iter = oaConf.getHeaderAuthMapping().keySet().iterator(); iter.hasNext();) {
- String key = (String) iter.next();
- String predicate = (String) oaConf.getHeaderAuthMapping().get(key);
- String resolvedValue = resolveValue(predicate, authData, clientIPAddress);
- result.put(key, resolvedValue);
- }
- }
-
- return result;
- }
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.LoginParameterResolver#getAuthenticationParameters(OAConfiguration, AuthenticationData, String, boolean, String)
- */
- public Map getAuthenticationParameters(
- OAConfiguration oaConf,
- SAML1AuthenticationData authData,
- String clientIPAddress,
- boolean businessService,
- String publicURLPrefix) {
-
- Map result = new HashMap();
-
- if (oaConf.getAuthType().equals(OAConfiguration.PARAM_AUTH)) {
- for (Iterator iter = oaConf.getParamAuthMapping().keySet().iterator(); iter.hasNext();) {
- String key = (String) iter.next();
- String predicate = (String) oaConf.getParamAuthMapping().get(key);
- String resolvedValue;
- try {
- resolvedValue =
- URLEncoder.encode(resolveValue(predicate, authData, clientIPAddress), "ISO-8859-1");
- } catch (UnsupportedEncodingException e) {
- //ISO-8859-1 is supported
- resolvedValue = null;
- }
- result.put(key, resolvedValue);
- }
- }
-
- return result;
- }
-
- /**
- * Resolves a login header or parameter value.
- * @param predicate header or parameter predicate name from online application configuration
- * @param authData authentication data for current login
- * @param clientIPAddress client IP address
- * @return header or parameter value resolved; <code>null</code> if unknown name is given
- */
- private static String resolveValue(String predicate, SAML1AuthenticationData authData, String clientIPAddress) {
- if (predicate.equals(MOAGivenName))
- return authData.getGivenName();
- if (predicate.equals(MOAFamilyName))
- return authData.getFamilyName();
- if (predicate.equals(MOADateOfBirth))
- return authData.getFormatedDateOfBirth();
- if (predicate.equals(MOABPK))
- return authData.getBPK();
-
- //AuthData holdes the correct BPK/WBPK
- if (predicate.equals(MOAWBPK))
- return authData.getBPK();
- if (predicate.equals(MOAPublicAuthority))
- if (authData.isPublicAuthority())
- return "true";
- else
- return "false";
- if (predicate.equals(MOABKZ))
- return authData.getPublicAuthorityCode();
- if (predicate.equals(MOAQualifiedCertificate))
- if (authData.isQualifiedCertificate())
- return "true";
- else
- return "false";
- if (predicate.equals(MOAStammzahl))
- return authData.getIdentificationValue();
- if (predicate.equals(MOAIdentificationValueType))
- return authData.getIdentificationType();
- if (predicate.equals(MOAIPAddress))
- return clientIPAddress;
- else return null;
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ElakConnectionBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ElakConnectionBuilder.java
deleted file mode 100644
index 4d5511ef8..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/ElakConnectionBuilder.java
+++ /dev/null
@@ -1,303 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.http.HttpServletRequest;
-
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.BoolUtils;
-import at.gv.egovernment.moa.util.URLEncoder;
-
-import com.ibm.webdav.protocol.http.WebDAVURLConnection;
-
-
-/**
- * Defaultimplementierung von <code>ConnectionBuilder</code>.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class ElakConnectionBuilder implements ConnectionBuilder {
-
- /** a boolean to disable the HostnameVerification (default = false)*/
- private static boolean cbDisableHostnameVerification = false;
-
- /** a boolean to indicat if webdav protocol handler was already set */
- private static boolean webdavPHSet = false;
-
- /**
- * The system property name used to register a protocol handler.
- */
- public final static String PROTOCOL_HANDLER_PROPERTY_NAME = "java.protocol.handler.pkgs";
-
- /**
- * The package providing the ldap protocol handler.
- */
- public final static String WEBDAV_PROTOCOL_HANDLER = "com.ibm.webdav.protocol";
-
- /**
- * The pipe character used to sepearte different protocol handlers.
- */
- public final static char PIPE_CHAR = '|';
-
-
-
-
-
- /**
- * Constructor for ElakConnectionBuilder.
- * @throws ConfigurationException on any config error
- */
- public ElakConnectionBuilder() throws ConfigurationException {
-
- //INFO: removed from MOA-ID 2.0 config
- cbDisableHostnameVerification = false;
-// cbDisableHostnameVerification = BoolUtils.valueOf(
-// ProxyConfigurationProvider.getInstance().getGenericConfigurationParameter(
-// "ProxyComponent.DisableHostnameVerification"));
- //TODO MOA-ID BRZ undocumented feature
- if (cbDisableHostnameVerification)
- Logger.warn("ProxyComponent.DisableHostnameVerification: " + cbDisableHostnameVerification);
- }
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.ConnectionBuilder#buildConnection
- */
- public HttpURLConnection buildConnection(
- HttpServletRequest req,
- String publicURLPrefix,
- String realURLPrefix,
- SSLSocketFactory sslSocketFactory,
- Vector parameters)
- throws IOException {
-
- String requestedURL = req.getRequestURL().toString();
- // check whether requested URL starts with publicURLPrefix
- if (! requestedURL.startsWith(publicURLPrefix))
- throw new IOException(MOAIDMessageProvider.getInstance().getMessage(
- "proxy.01", new Object[] {requestedURL, publicURLPrefix}));
-
-
-
- // in case of GET request, append query string to requested URL;
- // otherwise, HttpURLConnection would perform a POST request
- //FIXME right parameters
- /*
- if ("get".equalsIgnoreCase(req.getMethod()) && ! parameters.isEmpty()) {
- requestedURL = appendQueryString(requestedURL, parameters);
- }
- */
- //TODO RSCH check functionality
- if (null != req.getQueryString() && 0 != req.getQueryString().length() ) {
- String query = req.getQueryString();
- requestedURL = requestedURL + "?" + query;
-
- String parameter[] = new String[2];
- for (Iterator iter = parameters.iterator(); iter.hasNext();) {
- parameter = (String[]) iter.next();
-
- if(query.indexOf(parameter[0]) >= 0) iter.remove();
- }
- }
-
- // build real URL in online application
- String realURLString = realURLPrefix + requestedURL.substring(publicURLPrefix.length());
-
-
- Logger.info("Registering WebDAV protocol handler");
- String protocolHandlers = System.getProperty(ElakConnectionBuilder.PROTOCOL_HANDLER_PROPERTY_NAME);
- if (protocolHandlers == null) {
- protocolHandlers = ElakConnectionBuilder.WEBDAV_PROTOCOL_HANDLER;
- System.setProperty(ElakConnectionBuilder.PROTOCOL_HANDLER_PROPERTY_NAME, protocolHandlers);
- } else {
- // check, if WEBDAV protocol handler is already configured
- boolean isConfigured = false;
- StringTokenizer tokenizer = new StringTokenizer(protocolHandlers, "| ");
- while (tokenizer.hasMoreTokens()) {
- String protocolHandler = tokenizer.nextToken();
- if (protocolHandler.equals(ElakConnectionBuilder.WEBDAV_PROTOCOL_HANDLER)) {
- isConfigured = true;
- break;
- }
- }
- // if it has not been configured yet, configure it
- if (!isConfigured) {
- protocolHandlers = ElakConnectionBuilder.WEBDAV_PROTOCOL_HANDLER + ElakConnectionBuilder.PIPE_CHAR + protocolHandlers;
- System.setProperty(ElakConnectionBuilder.PROTOCOL_HANDLER_PROPERTY_NAME, protocolHandlers);
- }
- }
- Logger.info("Registered protocol handlers: " + protocolHandlers);
- Class webdavSH = null;
- try
- {
- webdavSH = Class.forName(ElakConnectionBuilder.WEBDAV_PROTOCOL_HANDLER + ".http.Handler");
- }
- catch (ClassNotFoundException e)
- {
- e.printStackTrace();
- }
- URLStreamHandler urlStreamHandler = null;
- try
- {
- urlStreamHandler = (URLStreamHandler) webdavSH.newInstance();
- }
- catch (InstantiationException e1)
- {
- e1.printStackTrace();
- }
- catch (IllegalAccessException e1)
- {
- e1.printStackTrace();
- }
- //URL testURL = new URL("http", realURLString.substring("http://localhost:82".length()), 82, "", urlStreamHandler);
- //WebDAVURLConnection webDavTest = (WebDAVURLConnection) testURL.openConnection();
-
-
- URL testURL = new URL(realURLString);
- Logger.debug("TEST URL ist von der Klasse: " + testURL.getClass().getName());
-
- //URL url = new URL(realURLString);
- URL testURL2 = new URL(realURLString);
-
- URL url = new URL("http", "localhost", 82, realURLString.substring("http://localhost:82".length()), urlStreamHandler);
-
- Logger.debug("OA Request: " + req.getMethod() + " " + url.toString());
- WebDAVURLConnection webDavConn = (WebDAVURLConnection) url.openConnection();
- HttpURLConnection conn = (HttpURLConnection)webDavConn;
- webDavConn.setRequestMethod(req.getMethod());
- webDavConn.setDoInput(true);
- webDavConn.setDoOutput(true);
- //conn.setUseCaches(false);
- webDavConn.setAllowUserInteraction(true);
- webDavConn.setInstanceFollowRedirects(false);
- // JSSE Abhängigkeit
- if (conn instanceof HttpsURLConnection && sslSocketFactory != null) {
- HttpsURLConnection httpsConn = (HttpsURLConnection) conn;
- httpsConn.setSSLSocketFactory(sslSocketFactory);
- if (cbDisableHostnameVerification)
- httpsConn.setHostnameVerifier(new HostnameNonVerifier());
- }
- return conn;
- }
-
- /**
- * Disconnects the HttpURLConnection if necessary.
- * The implementation of the Connectionbuilder decides wether
- * if this should be happen or not.
- *
- * @param conn the HttpURLConnection which is normaly to be closed
- */
- public void disconnect(HttpURLConnection conn) {
- conn.disconnect();
- }
-
- /**
- * @param requestedURL
- * @param parameters
- * @return
- */
- private String appendQueryString(String requestedURL, Vector parameters) {
- String newURL = requestedURL;
- String parameter[] = new String[2];
- String paramValue ="";
- String paramName ="";
- String paramString ="";
- for (Iterator iter = parameters.iterator(); iter.hasNext();) {
- try {
- parameter = (String[]) iter.next();
- //Following two lines do not work with OWA-SSL-Login-form
- paramName = URLEncoder.encode((String) parameter[0], "UTF-8");
- paramValue = URLEncoder.encode((String) parameter[1], "UTF-8");
-
- } catch (UnsupportedEncodingException e) {
- //UTF-8 should be supported
- }
- paramString = "&" + paramName + "=" + paramValue + paramString;
- }
- if (paramString.length()>0) newURL = newURL + "?" + paramString.substring(1);
- return newURL;
- }
-
- /**
- * @author Stefan Knirsch
- * @version $Id$
- * A private class to change the standard HostName verifier to disable the
- * Hostname Verification Check
- */
-//JSSE Abhängigkeit
- private class HostnameNonVerifier implements HostnameVerifier {
-
-
- public boolean verify(String hostname, SSLSession session) {
- return true;
- }
- /**
- * @see com.sun.net.ssl.HostnameVerifier#verify(String, String)
- */
-// public boolean verify(String arg0, String arg1) {
-// return true;
-// }
-
-
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/EnhancedConnectionBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/EnhancedConnectionBuilder.java
deleted file mode 100644
index 2bc0fe131..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/EnhancedConnectionBuilder.java
+++ /dev/null
@@ -1,266 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.http.HttpServletRequest;
-
-import HTTPClient.HTTPConnection;
-import HTTPClient.HttpURLConnection;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.BoolUtils;
-
-
-/**
- * Outlook Web Access (OWA) Implementierung von <code>ConnectionBuilder</code>.
- * uses the HTTP(s)Client from Ronald Tschalär.
- * origin version (without https support) is available at http://www.innovation.ch/java/HTTPClient/
- *
- * @author pdanner
- */
-public class EnhancedConnectionBuilder implements ConnectionBuilder {
-
- /** a boolean to disable the HostnameVerification (default = false)*/
- private static boolean cbDisableHostnameVerification = false;
- /** Name of the Parameter for the Target */
- private static final String PARAM_TARGET = "Target";
- /** Name of the Parameter for the SAMLArtifact */
- private static final String PARAM_SAMLARTIFACT = "SAMLArtifact";
- /** Name of the Attribute for marking the session as authenticated*/
- private static final String ATT_AUTHDATAFETCHED = "AuthDataFetched";
-
- static {
- HTTPConnection.setDefaultTimeout(0);
- try {
- HTTPConnection.removeDefaultModule(Class.forName("HTTPClient.AuthorizationModule"));
- HTTPConnection.removeDefaultModule(Class.forName("HTTPClient.RedirectionModule"));
- HTTPConnection.removeDefaultModule(Class.forName("HTTPClient.CookieModule"));
- //HTTPConnection.removeDefaultModule(Class.forName("HTTPClient.RetryModule"));
- } catch (ClassNotFoundException e) {
-
- }
- }
-
- /**
- * Constructor for OWAConnectionBuilder.
- * @throws ConfigurationException on any config error
- */
- public EnhancedConnectionBuilder() throws ConfigurationException {
-
- //INFO: removed from MOA-ID 2.0 config
- cbDisableHostnameVerification = false;
-// cbDisableHostnameVerification = BoolUtils.valueOf(
-// ProxyConfigurationProvider.getInstance().getGenericConfigurationParameter(
-// "ProxyComponent.DisableHostnameVerification"));
- //TODO MOA-ID BRZ undocumented feature
- if (cbDisableHostnameVerification)
- Logger.warn("ProxyComponent.DisableHostnameVerification: " + cbDisableHostnameVerification);
- }
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.ConnectionBuilder#buildConnection
- */
- public java.net.HttpURLConnection buildConnection(HttpServletRequest req, String publicURLPrefix, String realURLPrefix, SSLSocketFactory sslSocketFactory, Vector parameters) throws IOException {
-
- String requestedURL = req.getRequestURL().toString();
- // check whether requested URL starts with publicURLPrefix
-
- if (! requestedURL.startsWith(publicURLPrefix.substring(0,5)))
- throw new IOException(MOAIDMessageProvider.getInstance().getMessage(
- "proxy.01", new Object[] {requestedURL, publicURLPrefix}));
-
- String query = req.getQueryString();
- if (req.getSession().getAttribute(ATT_AUTHDATAFETCHED)!=null) {
- query = removeParameter(query, PARAM_SAMLARTIFACT);
- query = removeParameter(query, PARAM_TARGET);
- req.getSession().removeAttribute(ATT_AUTHDATAFETCHED);
- }
- if (null != query && 0 != query.length() ) {
- requestedURL = requestedURL + "?" + query;
-
- String parameter[] = new String[2];
- for (Iterator iter = parameters.iterator(); iter.hasNext();) {
- parameter = (String[]) iter.next();
- if(query.indexOf(parameter[0]) >= 0) iter.remove();
- }
- }
-
- // build real URL in online application
- String realURLString = realURLPrefix + requestedURL.substring(publicURLPrefix.length());
-
- // build real URL in online application
- URLStreamHandler urlStreamHandler = null;
-
- //URL url = new URL(realURLString);
- if (realURLString.startsWith("https")) {
- urlStreamHandler = new HTTPClient.https.Handler();
- } else{
- urlStreamHandler = new HTTPClient.http.Handler();
- }
- URL url = new URL(null, realURLString, urlStreamHandler);
- Logger.debug("OA Request: " + req.getMethod() + " " + url.toString());
-
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
-
- conn.setRequestMethod(req.getMethod());
- conn.setDoInput(true);
- conn.setDoOutput(true);
- //conn.setUseCaches(false);
- //conn.setAllowUserInteraction(true);
- conn.setInstanceFollowRedirects(false);
-
- if (realURLString.startsWith("https") && sslSocketFactory != null) {
- conn.setSSLSocketFactory(sslSocketFactory);
- //Not available in HTTPClient
- //if (cbDisableHostnameVerification)
- // conn.setHostnameVerifier(new HostnameNonVerifier());
- }
-
- return conn;
-
- }
-
- /**
- * Disconnects the HttpURLConnection if necessary.
- * The implementation of the Connectionbuilder decides wether
- * if this should be happen or not.
- *
- * @param conn the HttpURLConnection which is normaly to be closed
- */
- public void disconnect(java.net.HttpURLConnection conn) {
- // In HTTPClient there must not be an diconnect!
- // conn.disconnect();
- }
-
- /**
- * @author Stefan Knirsch
- * @version $Id$
- * A private class to change the standard HostName verifier to disable the
- * Hostname Verification Check
- */
- // JSSE Abhängigkeit
- private class HostnameNonVerifier implements HostnameVerifier {
-
-
- public boolean verify(String hostname, SSLSession session) {
- return true;
- }
-
- /**
- * @see com.sun.net.ssl.HostnameVerifier#verify(String, String)
- */
-// public boolean verify(String arg0, String arg1) {
-// return true;
-// }
-
- }
-
- /**
- * Removes parameters from the query-URL recursively
- *
- * @param query the query from which the parameter is to be removed
- * @param parameter the parameter to be removed
- * @return the parameterclean query
- */
- private String removeParameter(String query, String parameter) {
- return removeParameter(query, parameter, true);
- }
-
- /**
- * Removes one parameter from the query-URL recursively
- *
- * @param query the query from which the parameter is to be removed
- * @param parameter the parameter to be removed
- * @param remove. Boolean value wether a parameter was removed in last call or not. In initial call set to true to check for new occurrences
- * @return the parameterclean query
- */
- private String removeParameter(String query, String parameter, boolean remove) {
- String result = query;
- if (remove && query!=null && !query.equals("") && parameter!=null && !parameter.equals("")) {
- String param = parameter;
- int capEnd=0;
- if (!param.endsWith("=")) param=param+"=";
- if (query.startsWith(param)) {
- //remove leading
- result="";
- } else {
- if (!param.startsWith("&")) param="&"+param;
- capEnd = query.indexOf(param);
- if (capEnd!=-1) {
- //leading part
- result=query.substring(0, capEnd);
- }
- }
- if (capEnd!=-1) {
- //trailing part
- capEnd += param.length();
- int capBegin = -1;
- if (capEnd <query.length()) capBegin = query.indexOf("&", capEnd);
- if (capBegin!=-1) {
- if (capBegin<query.length()) {
- result=result + query.substring(capBegin);
- if (result.startsWith("&")) result = result.substring(1); //if now is leading part
- }
- }
- }
- result = removeParameter(result, parameter, !query.equals(result));
- }
- return result;
- }
-
- }
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolver.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolver.java
deleted file mode 100644
index d432f8c41..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolver.java
+++ /dev/null
@@ -1,133 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.util.Map;
-
-import at.gv.egovernment.moa.id.config.proxy.OAConfiguration;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-
-/**
- * Determines authentication parameters and headers to be added to a {@link java.net.URLConnection}
- * to the remote online application.
- * Utilizes {@link OAConfiguration} and {@link AuthenticationData}.
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-public interface LoginParameterResolver {
-
- /** Constants used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code>,
- * naming predicates used by the <code>LoginParameterResolver</code>. */
- public static final String MOAGivenName = "MOAGivenName";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAFamilyName = "MOAFamilyName";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOADateOfBirth = "MOADateOfBirth";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOABPK = "MOABPK";
- /** Constant used in <code>MOAIDConfiguration-1.3.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAWBPK = "MOAWBPK";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAPublicAuthority = "MOAPublicAuthority";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOABKZ = "MOABKZ";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAQualifiedCertificate = "MOAQualifiedCertificate";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAStammzahl = "MOAStammzahl";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAIdentificationValueType = "MOAIdentificationValueType";
- /** Constant used in <code>MOAIDConfiguration-1.2.xsd</code>, type <code>MOAAuthDataType</code> */
- public static final String MOAIPAddress = "MOAIPAddress";
-
- /**
- * Returns authentication headers to be added to a URLConnection.
- *
- * @param oaConf configuration data
- * @param authData authentication data
- * @param clientIPAddress client IP address
- * @param businessService boolean value for recognizing (w)bPK-mode
- * @param publicURLPrefix to distinguish different online applications
- * @return A map, the keys being header names and values being corresponding header values.
- * <br>In case of authentication type <code>"basic-auth"</code>, header fields
- * <code>username</code> and <code>password</code>.
- * <br>In case of authentication type <code>"header-auth"</code>, header fields
- * derived from parameter mapping and authentication data provided.
- * <br>Otherwise, an empty map.
- */
- public Map getAuthenticationHeaders(
- OAConfiguration oaConf,
- SAML1AuthenticationData authData,
- String clientIPAddress,
- boolean businessService,
- String publicURLPrefix) throws LoginParameterResolverException, NotAllowedException;
-
- /**
- * Returns request parameters to be added to a URLConnection.
- *
- * @param oaConf configuration data
- * @param authData authentication data
- * @param clientIPAddress client IP address
- * @param businessService boolean value for recognizing (w)bPK-mode
- * @param publicURLPrefix to distinguish different online applications
- * @return A map, the keys being parameter names and values being corresponding parameter values.
- * <br>In case of authentication type <code>"param-auth"</code>, parameters
- * derived from parameter mapping and authentication data provided.
- * <br>Otherwise, an empty map.
- */
- public Map getAuthenticationParameters(
- OAConfiguration oaConf,
- SAML1AuthenticationData authData,
- String clientIPAddress,
- boolean businessService,
- String publicURLPrefix) throws LoginParameterResolverException, NotAllowedException;
-
- public void configure(String configuration, Boolean businessService) throws LoginParameterResolverException;
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverException.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverException.java
deleted file mode 100644
index 1767185c8..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverException.java
+++ /dev/null
@@ -1,88 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-
-/**
- * Exception thrown while proxying a request to the online application
- *
- * @author Rudolf Schamberger
- * @version $Id$
- */
-public class LoginParameterResolverException extends MOAIDException {
-
- /**
- *
- */
- private static final long serialVersionUID = 3924645289077681081L;
-
- /**
- * Constructor for LoginParameterResolverException.
- * @param messageId
- * @param parameters
- */
- public LoginParameterResolverException(
- String messageId,
- Object[] parameters) {
- super(messageId, parameters);
- }
-
- /**
- * Constructor for LoginParameterResolverException.
- * @param messageId
- * @param parameters
- * @param wrapped
- */
- public LoginParameterResolverException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
- super(messageId, parameters, wrapped);
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverFactory.java
deleted file mode 100644
index 0b43630ee..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/LoginParameterResolverFactory.java
+++ /dev/null
@@ -1,128 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.proxy.OAProxyParameter;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-
-/**
- * Factory delivering a {@link LoginParameterResolver} implementation for
- * an online application, initialized from configuration data.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class LoginParameterResolverFactory {
-
- /** default login parameter resolver to be used for online application
- * where no special implementation of the <code>LoginParameterResolver</code>
- * interface is configured
- */
- private static LoginParameterResolver defaultLoginParameterResolver;
- /** mapping from online application public URL prefix to an implementation
- * of the <code>LoginParameterResolver</code> interface to be used;
- * if no mapping is given for an online application, the
- * <code>DefaultLoginParameterResolver</code> will be used */
- private static Map loginParameterResolverMap;
-
- /**
- * Initializes the <code>LoginParameterResolver</code> map from the configuration data.
- * @throws ConfigurationException when the configuration cannot be read,
- * or when a class name configured cannot be instantiated
- */
- public static void initialize() throws ConfigurationException {
- defaultLoginParameterResolver = new DefaultLoginParameterResolver();
- loginParameterResolverMap = new HashMap();
- ProxyConfigurationProvider proxyConf = ProxyConfigurationProvider.getInstance();
- for (int i = 0; i < proxyConf.getOnlineApplicationParameters().length; i++) {
- OAProxyParameter oaParam = proxyConf.getOnlineApplicationParameters()[i];
- String publicURLPrefix = oaParam.getPublicURLPrefix();
- String className = oaParam.getLoginParameterResolverImpl();
- String configuration = oaParam.getLoginParameterResolverConfiguration();
- if (className != null) {
- try {
- Class lprClass = Class.forName(className);
- LoginParameterResolver lpr = (LoginParameterResolver)Class.forName(className).newInstance();
-
- Class[] argumentTypes = { String.class, Boolean.class };
- Method confMethod = lprClass.getMethod( "configure", argumentTypes );
-
- Object[] arguments = { new String(configuration), new Boolean(oaParam.getBusinessService()) };
- confMethod.invoke( lpr, arguments );
-
- loginParameterResolverMap.put(publicURLPrefix, lpr);
- }
- catch (InvocationTargetException lpex) {
- throw new ConfigurationException("config.11", new Object[] {className}, lpex);
- }
- catch (Throwable ex) {
- throw new ConfigurationException("config.07", new Object[] {publicURLPrefix}, ex);
- }
- }
- }
- }
-
- /**
- * Gets the <code>LoginParameterResolver</code> implementation to be used for the given
- * online application.
- * @param publicURLPrefix public URL prefix of the online application
- * @return <code>LoginParameterResolver</code> implementation
- */
- public static LoginParameterResolver getLoginParameterResolver(String publicURLPrefix) {
- LoginParameterResolver lpr = (LoginParameterResolver) loginParameterResolverMap.get(publicURLPrefix);
- if (lpr == null)
- return defaultLoginParameterResolver;
- else
- return lpr;
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/MOAIDProxyInitializer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/MOAIDProxyInitializer.java
deleted file mode 100644
index 91df96027..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/MOAIDProxyInitializer.java
+++ /dev/null
@@ -1,141 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import iaik.pki.PKIException;
-import iaik.pki.jsse.IAIKX509TrustManager;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-
-import javax.net.ssl.SSLSocketFactory;
-
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.legacy.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.proxy.OAProxyParameter;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-import at.gv.egovernment.moa.id.iaik.config.LoggerConfigImpl;
-import at.gv.egovernment.moa.id.util.AxisSecureSocketFactory;
-import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
-import at.gv.egovernment.moa.id.util.SSLUtils;
-import at.gv.egovernment.moa.logging.Logger;
-
-/**
- * Web application initializer
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class MOAIDProxyInitializer {
-
- /**
- * Initializes the web application components which need initialization:
- * logging, JSSE, MOA-ID Auth configuration, Axis, session cleaner.
- */
- public static void initialize()
- throws ConfigurationException, IOException, GeneralSecurityException, PKIException {
-
- Logger.setHierarchy("moa.id.proxy");
-
- // Restricts TLS cipher suites
- System.setProperty("https.cipherSuites", "SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_3DES_EDE_CBC_SHA");
-
- // load some jsse classes so that the integrity of the jars can be verified
- // before the iaik jce is installed as the security provider
- // this workaround is only needed when sun jsse is used in conjunction with
- // iaik-jce (on jdk1.3)
- ClassLoader cl = MOAIDProxyInitializer.class.getClassLoader();
- try {
- cl.loadClass("javax.security.cert.Certificate"); // from jcert.jar
- }
- catch (ClassNotFoundException e) {
- Logger.warn(MOAIDMessageProvider.getInstance().getMessage("init.01", null), e);
- }
-
- // Initializes the SSLSocketFactory store
- SSLUtils.initialize();
-
- // Initializes IAIKX509TrustManager logging
- String log4jConfigURL = System.getProperty("log4j.configuration");
- if (log4jConfigURL != null) {
- IAIKX509TrustManager.initLog(new LoggerConfigImpl(log4jConfigURL));
- }
-
- // Loads the configuration
- ProxyConfigurationProvider proxyConf = ProxyConfigurationProvider.reload();
-
- // Initializes the Axis secure socket factory for use in calling the MOA-Auth web service,
- // using configuration data
- ConnectionParameter connParamAuth = proxyConf.getAuthComponentConnectionParameter();
- if (connParamAuth!=null) {
- if (connParamAuth.isHTTPSURL()) {
- SSLSocketFactory ssf = SSLUtils.getSSLSocketFactory(proxyConf, connParamAuth);
- AxisSecureSocketFactory.initialize(ssf);
- }
- } else {
- throw new ConfigurationException("config.16", null);
- }
-
- // Initializes the Axis secure socket factories for use in calling the online applications,
- // using configuration data
- OAProxyParameter[] oaParams = proxyConf.getOnlineApplicationParameters();
- for (int i = 0; i < oaParams.length; i++) {
- OAProxyParameter oaParam = oaParams[i];
- ConnectionParameter oaConnParam = oaParam.getConnectionParameter();
- if (oaConnParam.isHTTPSURL());
- SSLUtils.getSSLSocketFactory(proxyConf, oaConnParam);
- }
-
- // Initializes the ConnectionBuilderFactory from configuration data
- ConnectionBuilderFactory.initialize();
-
- // Initializes the LoginParameterResolverFactory from configuration data
- LoginParameterResolverFactory.initialize();
-
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/NotAllowedException.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/NotAllowedException.java
deleted file mode 100644
index df8a9bd4e..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/NotAllowedException.java
+++ /dev/null
@@ -1,90 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-
-/**
- * Exception thrown while proxying a request to the online application
- * Reason for this exception: the dedicated LoginParameterResolver does
- * not allow access to the desired ressource.
- *
- * @author Rudolf Schamberger
- * @version $Id$
- */
-public class NotAllowedException extends MOAIDException {
-
- /**
- *
- */
- private static final long serialVersionUID = -265024674370936886L;
-
- /**
- * Constructor for NotAllowedException.
- * @param messageId
- * @param parameters
- */
- public NotAllowedException(
- String messageId,
- Object[] parameters) {
- super(messageId, parameters);
- }
-
- /**
- * Constructor for NotAllowedException.
- * @param messageId
- * @param parameters
- * @param wrapped
- */
- public NotAllowedException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
- super(messageId, parameters, wrapped);
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverEncryptedData.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverEncryptedData.java
deleted file mode 100644
index a5c632077..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverEncryptedData.java
+++ /dev/null
@@ -1,727 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import iaik.security.provider.IAIK;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.Key;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Security;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.NoSuchPaddingException;
-import javax.crypto.spec.IvParameterSpec;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.proxy.OAConfiguration;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.Base64Utils;
-import at.gv.egovernment.moa.util.Constants;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.FileUtils;
-import at.gv.egovernment.moa.util.URLEncoder;
-
-/**
- * XMLLoginParameterResolver an implementation of implementation of interface
- * <code>LoginParameterResolver</code>
- * This implementation used to map identities stored in an XML file to parameters
- * which are given to OAs.
- *
- * @author Rudolf Schamberger
- * @version $Id$
- */
-public class XMLLoginParameterResolverEncryptedData implements LoginParameterResolver {
-
- //file which is parsed and interpreted for paremeter resolving.
- private String identityFile;
-
- private Cipher blowfishCipher;
- private Key key;
- /**
- * inner class used to store mapped parameters
- */
- class LPRParams {
-
- /**
- * getter method for parameter Enabled.
- * Parameter Enabled decides if mapped parameters should be used by XMLLoginParameterResolver
- */
- public boolean getEnabled() {
- return enabled.booleanValue();
- }
-
- /**
- * getter method for parameter UN (username)
- * @return Parameter UN or <code>null</code> not set.
- */
- public String getUN() {
- return UN;
- }
-
- /**
- * getter method for parameter UN (username)
- * @return Parameter UN or <code>null</code> not set.
- */
- //TODO XMLLPR decrypt
- public String getPlainUN() {
- //Security.addProvider();
-
-
- return UN;
- }
-
-
- /**
- * getter method for parameter PW (password)
- * @return Parameter PW or <code>null</code> not set.
- */
- public String getPW() {
- return PW;
- }
-
- /**
- * getter method for generic parameter Param1
- * @return Parameter Param1 or <code>null</code> not set.
- */
- public String getParam1() {
- return Param1;
- }
-
- /**
- * getter method for generic parameter Param2
- * @return Parameter Param2 or <code>null</code> not set.
- */
- public String getParam2() {
- return Param2;
- }
-
- /**
- * getter method for generic parameter Param3
- * @return Parameter Param3 or <code>null</code> not set.
- */
- public String getParam3() {
- return Param3;
- }
-
- /**
- * Returns a string representation of LPRParams
- *
- * @return a <code>String</code> representation of this object.
- * @see XMLLoginParameterResolver.LPRParams
- */
- public String toString() {
- return "Enabled: "
- + enabled.toString()
- + "UN: '"
- + UN
- + "' PW: '"
- + PW
- + "' Param1: '"
- + Param1
- + "' Param2: '"
- + Param2
- + "' Param3: '"
- + Param3
- + "'\n";
- }
-
- //private member variables used to store the parameters
- private Boolean enabled = null;
- private String UN = null;
- private String PW = null;
- private String Param1 = null;
- private String Param2 = null;
- private String Param3 = null;
-
- /**
- * Constructs a newly allocated <code>XMLLoginParameterResolver.LPRParams</code> object.
- *
- * @param enabled enable user mapping to parameter set for the parameter set.
- * @param UN username used in HTTP 401 - BasicAuthentication
- * @param PW password used in HTTP 401 - BasicAuthentication
- * @param Param1 generic parameter1 used in HeaderAuthentication and ParameterAuthentication
- * @param Param2 generic parameter2 used in HeaderAuthentication and ParameterAuthentication
- * @param Param3 generic parameter3 used in HeaderAuthentication and ParameterAuthentication
- **/
- LPRParams(boolean enabled, String UN, String PW, String Param1, String Param2, String Param3) {
- this.enabled = new Boolean(enabled);
- this.UN = UN;
- this.PW = PW;
- this.Param1 = Param1;
- this.Param2 = Param2;
- this.Param3 = Param3;
- }
-
- /**
- * Constructs a newly allocated <code>XMLLoginParameterResolver.LPRParams</code> object.
- *
- * @param enabled enable user mapping to parameter set for the parameter set.
- * @param UN username used in HTTP 401 - BasicAuthentication
- * @param PW password used in HTTP 401 - BasicAuthentication
- **/
- LPRParams(boolean enabled, String UN, String PW) {
- this(enabled, UN, PW, null, null, null);
- }
- }
-
- /**
- * Constructs a newly allocated <code>XMLLoginParameterResolver</code> object.
- **/
- public XMLLoginParameterResolverEncryptedData() {
- bPKMap = new HashMap();
- namedMap = new HashMap();
- }
-
- /**
- * configuration method
- * @param configuration enabled enable user mapping to parameter set for the parameter set.
- */
- public void configure(String configuration, Boolean businessService) throws LoginParameterResolverException {
- File idFile;
- Element rootElement;
-
- Security.addProvider(new IAIK());
- try {
- blowfishCipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding", "IAIK");
-
- } catch (NoSuchPaddingException e) {
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: NoSuchPaddingException \n" + e.toString()});
- } catch (NoSuchProviderException e) {
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: NoSuchProviderException \n" + e.toString()});
- } catch (NoSuchAlgorithmException e) {
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: NoSuchAlgorithmException \n" + e.toString()});
- }
-
- String plaintext = "start";
- String encrypted = encryptData(plaintext, "1234567890123456", "123hochgeheim");
- String decrypted = decryptData(encrypted, "1234567890123456", "123hochgeheim");
- Logger.debug("plaintext: " + plaintext);
- Logger.debug("encrypted: " + encrypted);
- Logger.debug("decrypted: " + decrypted);
-
- //make file name absolut (if it is relative to main config file)
- //TODO MOAID XMLLPR check
- String moaIDConfigFileName = System.getProperty(ConfigurationProvider.PROXY_CONFIG_PROPERTY_NAME);
- String rootConfigFileDir = new File(moaIDConfigFileName).getParent();
- this.identityFile = FileUtils.makeAbsoluteURL(configuration, rootConfigFileDir);
-
- if (null == identityFile || false == (idFile = new File(identityFile)).canRead()) {
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: could not read '" + identityFile + "' " });
- }
- try {
- rootElement = readXMLFile(identityFile);
- } catch (IOException lex) {
- Logger.error(lex.toString());
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: could not read '" + identityFile + "' " });
-
- } catch (SAXException sex) {
- Logger.error(sex.toString());
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: parsing problem in file:'" + identityFile + "' ", sex.toString() });
- } catch (ParserConfigurationException e) {
- // TODO XMLPR Auto-generated catch block
- Logger.error(e.toString());
- throw new LoginParameterResolverException("config.11",
- new Object[] { "XMLLoginParameterResolver: parsing problem in file:'" + identityFile + "' ", e.toString() });
- }
- buildInfo(rootElement, businessService.booleanValue());
- isConfigured = true;
- }
-
- /**
- * encryptData method uses parameters masterSecret and bPK as key information to encrypt plaintext
- * @param plaintext
- * @param bPK
- * @param masterSecret
- * @return encrypted data (blowfish encrypted, base64 encoded)
- * @throws LoginParameterResolverException
- */
- public String encryptData(String plaintext, String bPK, String masterSecret) throws LoginParameterResolverException
- {
- try {
- String keyString = bPK + masterSecret;
- key = new iaik.security.cipher.SecretKey(keyString.getBytes("UTF-8"), "Blowfish");
- IvParameterSpec param = new IvParameterSpec(new byte [] {0,0,0,0,0,0,0,0});
-
- blowfishCipher.init(Cipher.ENCRYPT_MODE, key, param);
- byte [] cipherText = blowfishCipher.doFinal(plaintext.getBytes("UTF-8"));
- return Base64Utils.encode(cipherText);
- } catch (UnsupportedEncodingException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (InvalidKeyException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (BadPaddingException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (IllegalBlockSizeException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (IllegalStateException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (InvalidAlgorithmParameterException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (IOException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- }
- }
-
-
- /**
- * encryptData method uses parameters masterSecret and bPK as key information to decrypt ciphertext
- * @param ciphertext (blowfish encrypted, base64encoded)
- * @param bPK
- * @param masterSecret
- * @return decrypted Data (plaintext)
- * @throws LoginParameterResolverException
- */
- public String decryptData(String ciphertext, String bPK, String masterSecret) throws LoginParameterResolverException
- {
- try {
- String keyString = bPK + masterSecret;
- key = new iaik.security.cipher.SecretKey(keyString.getBytes("UTF-8"), "Blowfish");
- IvParameterSpec param = new IvParameterSpec(new byte [] {0,0,0,0,0,0,0,0});
- blowfishCipher.init(Cipher.DECRYPT_MODE, key, param);
- byte [] plaintext = blowfishCipher.doFinal(Base64Utils.decode(ciphertext, true));
- return new String(plaintext);
- } catch (UnsupportedEncodingException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (InvalidKeyException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (BadPaddingException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (IllegalBlockSizeException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (IllegalStateException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (InvalidAlgorithmParameterException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- } catch (IOException e) {
- throw new LoginParameterResolverException("config.14", new Object [] {"Blowfish: " + e.toString()});
- }
- }
-
-
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.LoginParameterResolver#getAuthenticationHeaders(OAConfiguration, AuthenticationData, String, boolean, String)
- */
- public Map getAuthenticationHeaders(
- OAConfiguration oaConf,
- SAML1AuthenticationData authData,
- String clientIPAddress,
- boolean businessService,
- String publicURLPrefix) throws LoginParameterResolverException, NotAllowedException {
- Map result = new HashMap();
-
- if (!isConfigured) {
- //TODO XMLLPR
- throw new LoginParameterResolverException("XMLLoginParameterResolver with configuration '" +
- identityFile + "' is not configured!", null);
- }
-
- //get the Identity of the user
- String famName = resolveValue("MOAFamilyName", authData, clientIPAddress);
- String givenName = resolveValue("MOAGivenName", authData, clientIPAddress);
- String dateOfBirth = resolveValue("MOADateOfBirth", authData, clientIPAddress);
- String bPK ="";
- String wType= "";
- if (businessService) {
- bPK = resolveValue(MOAWBPK, authData, clientIPAddress);
- wType = "w";
- } else {
- bPK = resolveValue(MOABPK, authData, clientIPAddress);
- }
- String userid = "";
- String password = "";
- LPRParams params = null;
- boolean userFound = false;
-
- //try (w)bPK and named search
- params = bPKIdentitySearch(bPK, wType);
-
- if (null == params)
- params = namedIdentitySearch(famName, givenName, dateOfBirth);
-
- //if both searches failed, report error.
- if(null == params)
- throw new NotAllowedException("User:_" + wType + "bPK:'" +bPK+ ", " + famName + ", " + givenName + "' not authorized.", null);
-
- //HTTP 401 - Basic Authentication
- if (oaConf.getAuthType().equals("basic")) {
- userid = (null != params.getUN()) ? params.getUN() : "";
- password = (null != params.getPW()) ? params.getPW() : "";
-
- try {
- String userIDPassword = userid + ":" + password;
- String credentials = Base64Utils.encode(userIDPassword.getBytes("UTF-8"));
- Logger.debug("XMLLoginParameterResolver: calculated credentials: " + credentials);
- result.put("Authorization", "Basic " + credentials);
- } catch (IOException ignore) {
- throw new LoginParameterResolverException("config.14", new Object[] {"internal error while encoding in Base64"});
- }
- } else if (oaConf.getAuthType().equals("header")) { //HTTP Authentication
- String key;
- String resolvedValue;
- //TODO MOAID XMLLPR select value through OA-ConfigFile;
- if(null != params.getUN()) result.put("UN", params.getUN());
- if(null != params.getPW()) result.put("UN", params.getPW());
- if(null != params.getParam1()) result.put("UN", params.getParam1());
- if(null != params.getParam2()) result.put("UN", params.getParam2());
- if(null != params.getParam3()) result.put("UN", params.getParam3());
-
- } else {
- throw new LoginParameterResolverException("config.14", new Object[] {"AuthType not supported"});
- }
-
- return result;
- }
-
- /**
- * @see at.gv.egovernment.moa.id.proxy.LoginParameterResolver#getAuthenticationParameters(OAConfiguration, AuthenticationData, String, boolean, String)
- */
- public Map getAuthenticationParameters(
- OAConfiguration oaConf,
- SAML1AuthenticationData authData,
- String clientIPAddress,
- boolean businessService,
- String publicURLPrefix) throws LoginParameterResolverException, NotAllowedException {
-
- Map result = new HashMap();
-
- if (!isConfigured) {
- Logger.warn("XMLLoginParameterResolver with configuration '" + identityFile + " is not configured");
- return result;
- }
-
- String famName = resolveValue("MOAFamilyName", authData, clientIPAddress);
- String givenName = resolveValue("MOAGivenName", authData, clientIPAddress);
- String dateOfBirth = resolveValue("MOADateOfBirth", authData, clientIPAddress);
- String bPK ="";
- String wType= "";
- if (businessService) {
- bPK = resolveValue(MOAWBPK, authData, clientIPAddress);
- wType = "w";
- } else {
- bPK = resolveValue(MOABPK, authData, clientIPAddress);
- }
- String userid = "";
- String password = "";
- LPRParams params = null;
-
- //try (w)bPK and named search
- params = bPKIdentitySearch(bPK, wType);
-
- if (null == params)
- params = namedIdentitySearch(famName, givenName, dateOfBirth);
-
- //if both searches failed, report error.
- if(null == params)
- throw new NotAllowedException("User:_" + wType + "bPK:'" +bPK+ ", " + famName + ", " + givenName + "' not authorized.", null);
-
- //TODO MOAID XMLLPR URLEncoder.encode
- if (oaConf.getAuthType().equals("param")) {
- try {
- if(null != params.getUN()) result.put(XSD_UNATTR, URLEncoder.encode(params.getUN(),"ISO-8859-1"));
- if(null != params.getPW()) result.put(XSD_PWATTR, URLEncoder.encode(params.getPW(),"ISO-8859-1"));
- if(null != params.getParam1()) result.put(XSD_PARAM1ATTR, URLEncoder.encode(params.getParam1(),"ISO-8859-1"));
- if(null != params.getParam2()) result.put(XSD_PARAM2ATTR, URLEncoder.encode(params.getParam2(),"ISO-8859-1"));
- if(null != params.getParam3()) result.put(XSD_PARAM3ATTR, URLEncoder.encode(params.getParam3(),"ISO-8859-1"));
- } catch (UnsupportedEncodingException e) {
- // ISO-8859-1 is supported
- throw new LoginParameterResolverException("URLEncoder error", null);
- }
- } else {
- throw new LoginParameterResolverException("AuthType not supported", null);
- }
- return result;
- }
-
- /**
- * Resolves a login header or parameter value.
- * @param predicate header or parameter predicate name from online application configuration
- * @param authData authentication data for current login
- * @param clientIPAddress client IP address
- * @return header or parameter value resolved; <code>null</code> if unknown name is given
- */
- private static String resolveValue(
- String predicate,
- SAML1AuthenticationData authData,
- String clientIPAddress) {
- if (predicate.equals("MOAGivenName"))
- return authData.getGivenName();
- if (predicate.equals("MOAFamilyName"))
- return authData.getFamilyName();
- if (predicate.equals("MOADateOfBirth"))
- return authData.getFormatedDateOfBirth();
- if (predicate.equals("MOABPK"))
- return authData.getBPK();
-
- //AuthData holdes the correct BPK/WBPK
- if (predicate.equals("MOAWBPK"))
- return authData.getBPK();
- if (predicate.equals("MOAPublicAuthority"))
- if (authData.isPublicAuthority())
- return "true";
- else
- return "false";
- if (predicate.equals("MOABKZ"))
- return authData.getPublicAuthorityCode();
- if (predicate.equals("MOAQualifiedCertificate"))
- if (authData.isQualifiedCertificate())
- return "true";
- else
- return "false";
- if (predicate.equals("MOAStammzahl"))
- return authData.getIdentificationValue();
- if (predicate.equals(MOAIdentificationValueType))
- return authData.getIdentificationType();
- if (predicate.equals("MOAIPAddress"))
- return clientIPAddress;
- else
- return null;
- }
-
- /**
- * reads, parses the configuration file of XMLLoginParameterResolver and returns the document element.
- * @param fileName of the configuration file.
- */
- private Element readXMLFile(String fileName) throws ParserConfigurationException, SAXException, IOException {
- Logger.info("XMLLoginParameterResolver: Loading and parsing XMLPLoginParameterConfiguration configuration: " + fileName);
-
- InputStream stream = null;
- Element configElem;
-
- stream = new BufferedInputStream(new FileInputStream(fileName));
- configElem = DOMUtils.parseDocument(stream, true, Constants.ALL_SCHEMA_LOCATIONS, null).getDocumentElement();
- return configElem;
- }
-
- /**
- * buildInfo builds up the internal data mapping between the "Identities" and the "Parameters" from the parsed XML file.
- * @param root document root element.
- */
- private void buildInfo(Element root, boolean businessService) {
- NodeList idList = root.getElementsByTagName(XSD_IDELEM);
- NodeList paramList = root.getElementsByTagName(XSD_PARAMELEM);
- String wType ="";
- if (businessService) wType = "w";
- for (int i = 0; i < idList.getLength(); i++)
- Logger.debug("XMLLoginParameterResolver: LocalName idList: " + idList.item(i).getLocalName());
-
- for (int i = 0; i < paramList.getLength(); i++)
- Logger.debug("XMLLoginParameterResolver: LocalName paramList: " + paramList.item(i).getLocalName());
-
- for (int i = 0; i < idList.getLength(); i++) {
- Element tmpElem = (Element) idList.item(i);
- NodeList tmpList = tmpElem.getElementsByTagName(XSD_NAMEDIDELEM);
- for (int j = 0; j < tmpList.getLength(); j++)
- Logger.debug("XMLLoginParameterResolver: LocalName tmp: " + tmpList.item(j).getLocalName());
-
- //Search for NamedIdentity Elements
- if (1 == tmpList.getLength()) {
- tmpElem = (Element) tmpList.item(0);
- String tmpStr = tmpElem.getAttribute(XSD_SURNAMEATTR) + "," +
- tmpElem.getAttribute(XSD_GIVENNAMEATTR) + "," +
- tmpElem.getAttribute(XSD_BIRTHDATEATTR);
- boolean tmpBool = false;
- if (tmpElem.getFirstChild() != null
- && "1".compareTo(tmpElem.getFirstChild().getNodeValue()) == 0)
- tmpBool = true;
- //TODO XMLLPR remove
- Logger.debug("XMLLoginParameterResolver: tmpStr: " + tmpStr + " value: " + (new Boolean(tmpBool)).toString());
- tmpElem = (Element) paramList.item(i);
- Logger.debug("XMLLoginParameterResolver: attribute UN: " + tmpElem.getAttribute(XSD_UNATTR) +
- " attribute PW: " + tmpElem.getAttribute(XSD_PWATTR) +
- " attribute Param1: " + tmpElem.getAttribute(XSD_PARAM1ATTR) +
- " attribute Param2: " + tmpElem.getAttribute(XSD_PARAM2ATTR) +
- " attribute Param3: " + tmpElem.getAttribute(XSD_PARAM3ATTR) );
- namedMap.put(tmpStr, new LPRParams(tmpBool, tmpElem.getAttribute(XSD_UNATTR), tmpElem.getAttribute(XSD_PWATTR),
- tmpElem.getAttribute(XSD_PARAM1ATTR), tmpElem.getAttribute(XSD_PARAM2ATTR),
- tmpElem.getAttribute(XSD_PARAM3ATTR)) );
- } else {
-
- //(w)bPKIdentity Elements
- if (businessService) {
- tmpList = tmpElem.getElementsByTagName(XSD_WBPKIDELEM);
- } else {
- tmpList = tmpElem.getElementsByTagName(XSD_BPKIDELEM);
- }
- if (1 == tmpList.getLength()) {
- tmpElem = (Element) tmpList.item(0);
- String tmpStr = "";
- if (businessService) {
- tmpStr = tmpElem.getAttribute(XSD_WBPKATTR);
- } else {
- tmpStr = tmpElem.getAttribute(XSD_BPKATTR);
- }
- boolean tmpBool = false;
- if (tmpElem.getFirstChild() != null
- && "1".compareTo(tmpElem.getFirstChild().getNodeValue()) == 0)
- tmpBool = true;
- Logger.debug("XMLLoginParameterResolver: tmpStr: " + tmpStr + " value: " + (new Boolean(tmpBool)).toString());
- tmpElem = (Element) paramList.item(i);
- Logger.debug("XMLLoginParameterResolver: attribute UN: " + tmpElem.getAttribute(XSD_UNATTR) +
- " attribute PW: " + tmpElem.getAttribute(XSD_PWATTR) +
- " attribute Param1: " + tmpElem.getAttribute(XSD_PARAM1ATTR) +
- " attribute Param2: " + tmpElem.getAttribute(XSD_PARAM2ATTR) +
- " attribute Param3: " + tmpElem.getAttribute(XSD_PARAM3ATTR) );
- namedMap.put(tmpStr, new LPRParams(tmpBool, tmpElem.getAttribute(XSD_UNATTR), tmpElem.getAttribute(XSD_PWATTR),
- tmpElem.getAttribute(XSD_PARAM1ATTR), tmpElem.getAttribute(XSD_PARAM2ATTR),
- tmpElem.getAttribute(XSD_PARAM3ATTR)) );
- } else {
- if (businessService) {
- Logger.warn("XMLLoginParameterResolver: wrong format no Elements " + XSD_NAMEDIDELEM + " or " + XSD_WBPKIDELEM + " found");
- } else {
- Logger.warn("XMLLoginParameterResolver: wrong format no Elements " + XSD_NAMEDIDELEM + " or " + XSD_BPKIDELEM + " found");
- }
- }
- }
- }
-
- Logger.debug("namedMap:" + namedMap.toString());
- Logger.debug(wType + "bPKMap:" + bPKMap.toString());
- }
-
-
-
-
- /**
- * searches for a given bPK and returns the appropriate LPRParams structure
- * @param bPK search argument
- * @return LPRParams if bPK could be found in internal mappings or null otherwise.
- */
- LPRParams bPKIdentitySearch(String bPK, String wType) {
- //search for mapping with (w)bPK of the user
- Logger.info("XMLLoginParameterResolver: search for login data mapped to " + wType + "bPK:" + bPK);
- LPRParams params = (LPRParams) bPKMap.get(bPK);
- if (null == params) {
- Logger.info("XMLLoginParameterResolver: params for " + wType + "bPK: " + bPK + " not found!");
- return null;
- } else if (params.getEnabled()) {
- Logger.info("XMLLoginParameterResolver: " + wType + "bPK: " + bPK + "found in list; user is enabled");
- Logger.debug("XMLLoginParameterResolver: using: " + params.toString());
- return params;
- }
- Logger.info("XMLLoginParameterResolver: " + wType + "bPK: " + bPK + "found in list but user is NOT enabled");
- return null;
- }
-
- /**
- * searches for a given namedIdentity and returns the appropriate LPRParams structure
- * @param surName surname search argument
- * @param givenName givenname search argument
- * @param dateOfBirth dateofbirth search argument
- * @return LPRParams if (w)bPK could be found in internal mappings or null otherwise.
- */
- LPRParams namedIdentitySearch(String surName, String givenName, String dateOfBirth) {
- Logger.info("XMLLoginParameterResolver: search for login data for SurName:" + surName + " GivenName: " + givenName + " DateOfBirth" + dateOfBirth);
- //try first a search with surname, givenname and birthdate
- LPRParams params = (LPRParams) namedMap.get(surName + "," + givenName + "," + dateOfBirth);
- if (null == params) {
- Logger.debug("XMLLoginParameterResolver: params for Surname: " + surName + " GivenName: " + givenName + "BirthDate: " + dateOfBirth + " not found!");
- //try a search with surname, givenname only
- params = (LPRParams) namedMap.get(surName + "," + givenName + "," + XSD_BIRTHDATEBLANKATTR);
- if(null == params) {
- Logger.debug("XMLLoginParameterResolver: params for Surname: " + surName + " GivenName: " + givenName + " not found!");
- return null;
- }
- }
-
- if (params.getEnabled()) {
- Logger.info("XMLLoginParameterResolver: Surname:" + surName + " GivenName: " + givenName + " found in list; user is enabled");
- Logger.debug("XMLLoginParameterResolver: using: " + params.toString());
- return params;
- }
- Logger.info("XMLLoginParameterResolver: SurName:" + surName + " GivenName: " + givenName + "found in list; user is NOT enabled");
- return null;
- }
-
- //public static final String XSD_MAPPING = "Mapping";
- //public static final String XSD_DOCELEM = "MOAIdentities";
- public static final String XSD_IDELEM = "Identity";
- public static final String XSD_NAMEDIDELEM = "NamedIdentity";
- public static final String XSD_BPKIDELEM = "bPKIdentity";
- public static final String XSD_WBPKIDELEM = "wbPKIdentity";
- public static final String XSD_PARAMELEM = "Parameters";
- public static final String XSD_SURNAMEATTR = "SurName";
- public static final String XSD_GIVENNAMEATTR = "GivenName";
- public static final String XSD_BIRTHDATEATTR = "BirthDate";
- public static final String XSD_BIRTHDATEBLANKATTR = "any";
- public static final String XSD_BPKATTR = "bPK";
- public static final String XSD_WBPKATTR = "wbPK";
- public static final String XSD_UNATTR = "UN";
- public static final String XSD_PWATTR = "PW";
- public static final String XSD_PARAM1ATTR = "Param1";
- public static final String XSD_PARAM2ATTR = "Param2";
- public static final String XSD_PARAM3ATTR = "Param3";
- private Map bPKMap;
- private Map namedMap;
- private boolean isConfigured = false;
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverPlainData.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverPlainData.java
deleted file mode 100644
index 740421024..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/XMLLoginParameterResolverPlainData.java
+++ /dev/null
@@ -1,472 +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.
- ******************************************************************************/
-/*
- * 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.proxy;
-
-import at.gv.egovernment.moa.id.config.proxy.OAConfiguration;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.Base64Utils;
-import java.io.IOException;
-import java.util.*;
-
-import org.apache.xerces.parsers.DOMParser;
-import org.w3c.dom.*;
-
-// Referenced classes of package at.gv.egovernment.moa.id.proxy:
-//
-// TODO MOA-ID test full functionality
-
-public class XMLLoginParameterResolverPlainData
- implements LoginParameterResolver
-{
- private String configuration;
-
- /**
- * inner class used to store mapped parameters
- */
- class LPRParams {
-
- /**
- * getter method for parameter Enabled.
- * Parameter Enabled decides if mapped parameters should be used by XMLLoginParameterResolver
- */
- public boolean getEnabled() {
- return enabled.booleanValue();
- }
-
- /**
- * getter method for parameter UN (username)
- * @return Parameter UN or <code>null</code> not set.
- */
- public String getUN() {
- return UN;
- }
-
- /**
- * getter method for parameter UN (username)
- * @return Parameter UN or <code>null</code> not set.
- */
- public String getPlainUN() {
- return UN;
- }
-
-
- /**
- * getter method for parameter PW (password)
- * @return Parameter PW or <code>null</code> not set.
- */
- public String getPW() {
- return PW;
- }
-
- /**
- * getter method for generic parameter Param1
- * @return Parameter Param1 or <code>null</code> not set.
- */
- public String getParam1() {
- return Param1;
- }
-
- /**
- * getter method for generic parameter Param2
- * @return Parameter Param2 or <code>null</code> not set.
- */
- public String getParam2() {
- return Param2;
- }
-
- /**
- * getter method for generic parameter Param3
- * @return Parameter Param3 or <code>null</code> not set.
- */
- public String getParam3() {
- return Param3;
- }
-
- /**
- * Returns a string representation of LPRParams
- *
- * @return a <code>String</code> representation of this object.
- * @see XMLLoginParameterResolver.LPRParams
- */
- public String toString() {
- return "Enabled: "
- + enabled.toString()
- + "UN: '"
- + UN
- + "' PW: '"
- + PW
- + "' Param1: '"
- + Param1
- + "' Param2: '"
- + Param2
- + "' Param3: '"
- + Param3
- + "'\n";
- }
-
- //private member variables used to store the parameters
- private Boolean enabled = null;
- private String UN = null;
- private String PW = null;
- private String Param1 = null;
- private String Param2 = null;
- private String Param3 = null;
-
- /**
- * Constructs a newly allocated <code>XMLLoginParameterResolver.LPRParams</code> object.
- *
- * @param enabled enable user mapping to parameter set for the parameter set.
- * @param UN username used in HTTP 401 - BasicAuthentication
- * @param PW password used in HTTP 401 - BasicAuthentication
- * @param Param1 generic parameter1 used in HeaderAuthentication and ParameterAuthentication
- * @param Param2 generic parameter2 used in HeaderAuthentication and ParameterAuthentication
- * @param Param3 generic parameter3 used in HeaderAuthentication and ParameterAuthentication
- **/
- LPRParams(boolean enabled, String UN, String PW, String Param1, String Param2, String Param3) {
- this.enabled = new Boolean(enabled);
- this.UN = UN;
- this.PW = PW;
- this.Param1 = Param1;
- this.Param2 = Param2;
- this.Param3 = Param3;
- }
-
- /**
- * Constructs a newly allocated <code>XMLLoginParameterResolver.LPRParams</code> object.
- *
- * @param enabled enable user mapping to parameter set for the parameter set.
- * @param UN username used in HTTP 401 - BasicAuthentication
- * @param PW password used in HTTP 401 - BasicAuthentication
- **/
- LPRParams(boolean enabled, String UN, String PW) {
- this(enabled, UN, PW, null, null, null);
- }
- }
-
- //TODO document
- public XMLLoginParameterResolverPlainData()
- {
- bPKMap = new HashMap();
- namedMap = new HashMap();
-
- }
-
- //TODO document
- public Map getAuthenticationHeaders(OAConfiguration oaConf, SAML1AuthenticationData authData, String clientIPAddress, boolean businessService, String publicURLPrefix) throws NotAllowedException
- {
- Map result = new HashMap();
- if(oaConf.getAuthType().equals("basic"))
- {
- String famName = resolveValue(MOAFamilyName, authData, clientIPAddress);
- String givenName = resolveValue(MOAGivenName, authData, clientIPAddress);
- String dateOfBirth = resolveValue(MOADateOfBirth, authData, clientIPAddress);
- String bPK ="";
- String wType= "";
- if (businessService) {
- bPK = resolveValue(MOAWBPK, authData, clientIPAddress);
- wType = "w";
- } else {
- bPK = resolveValue(MOABPK, authData, clientIPAddress);
- }
- String userid = "";
- String password = "";
- String param1 = "";
- String param2 = "";
- String param3 = "";
-
- LPRParams params = null;
- boolean userFound = false;
-
- //first step: search for (w)bPK entry in user list
- Logger.debug("XMLLoginParameterResolverPlainData: search for automatic login data for "+ wType + "bPK:" + bPK);
- params = (LPRParams)bPKMap.get(bPK);
- if(params == null)
- Logger.debug("XMLLoginParameterResolverPlainData: params for "+ wType + "bPK: " + bPK + " not found in file!");
- else
- if(params.getEnabled())
- { //if user is enabled: get related parameters
- Logger.debug("XMLLoginParameterResolverPlainData: "+ wType + "bPK: " + bPK + " found in list; user is enabled");
- Logger.debug("XMLLoginParameterResolverPlainData: using: " + params.toString());
- userid = params.getUN();
- password = params.getPW();
- param1 = params.getParam1();
- param2 = params.getParam2();
- param3 = params.getParam3();
- userFound = true;
- } else
- {
- Logger.info("XMLLoginParameterResolverPlainData: "+ wType + "bPK: " + bPK + " found in list; user is NOT enabled");
- }
- if(!userFound) //secound step: search for name entry in user list
- {
- Logger.debug("XMLLoginParameterResolverPlainData: search for automatic login data for SurName:" + famName + " GivenName: " + givenName + " DateOfBirth: " + dateOfBirth);
- params = (LPRParams)namedMap.get(famName + "," + givenName + "," + dateOfBirth);
- if(params == null) {
- Logger.debug("XMLLoginParameterResolverPlainData: params for Surname: " + famName + " GivenName: " + givenName + " DateOfBirth: " + dateOfBirth + " not found in file!");
- //try also with wildcard ("*") birthdate
- params = (LPRParams)namedMap.get(famName + "," + givenName + "," + "*");
- if(params != null) Logger.debug("XMLLoginParameterResolverPlainData: params for Surname: " + famName + " GivenName: " + givenName + " DateOfBirth: " + "*" + " found!");
- }
-
- if(null != params && params.getEnabled())
- {
- Logger.debug("XMLLoginParameterResolverPlainData: SurName:" + famName + " GivenName: " + givenName + " DateOfBirth: " + dateOfBirth + " found in file; user is enabled");
- Logger.debug("XMLLoginParameterResolverPlainData: using: " + params.toString());
- userid = params.getUN();
- password = params.getPW();
- param1 = params.getParam1();
- param2 = params.getParam2();
- param3 = params.getParam3();
- userFound = true;
- }
- }
- if(!userFound) //third step: search for default user in user list
- {
- //third step: search for (w)bPK for the default user entry in user list
- Logger.debug("XMLLoginParameterResolverPlainData: search for automatic login data for default user");
- params = (LPRParams)bPKMap.get("default");
- if(params == null)
- Logger.debug("XMLLoginParameterResolverPlainData: params for default user not found in file!");
- else
- if(params.getEnabled())
- { //if user is enabled: get related parameters
- Logger.debug("XMLLoginParameterResolverPlainData: default user found in list; user is enabled");
- Logger.debug("XMLLoginParameterResolverPlainData: using: " + params.toString());
- userid = params.getUN();
- password = params.getPW();
- param1 = params.getParam1();
- param2 = params.getParam2();
- param3 = params.getParam3();
- userFound = true;
- } else
- {
- Logger.info("XMLLoginParameterResolverPlainData: default user found in list; user is NOT enabled");
- }
- }
-
- if(!userFound) //if user is not found then throw NotAllowedException exception
- {
- //TODO MOA-ID proove this with testcases!
- Logger.info("XMLLoginParameterResolverPlainData: Person is not allowed No automatic login");
- throw new NotAllowedException("XMLLoginParameterResolverPlainData: Person is not allowed No automatic login ", new Object[] { });
- }
- try //if user was found: generate Authorization header entry with associated credemtials
- {
- String userIDPassword = userid + ":" + password;
- String credentials = Base64Utils.encode(userIDPassword.getBytes());
- Logger.debug("XMLLoginParameterResolverPlainData: calculated credentials: " + credentials);
- result.put("Authorization", "Basic " + credentials);
- }
- catch(IOException ignore) { }
- } else
- if(oaConf.getAuthType().equals("header"))
- {
- String key;
- String resolvedValue;
- for(Iterator iter = oaConf.getHeaderAuthMapping().keySet().iterator(); iter.hasNext(); result.put(key, resolvedValue))
- {
- key = (String)iter.next();
- String predicate = (String)oaConf.getHeaderAuthMapping().get(key);
- resolvedValue = resolveValue(predicate, authData, clientIPAddress);
- }
-
- }
- return result;
- }
-
- public Map getAuthenticationParameters(OAConfiguration oaConf, SAML1AuthenticationData authData, String clientIPAddress, boolean businessService, String publicURLPrefix)
- {
- Map result = new HashMap();
- if(oaConf.getAuthType().equals("param"))
- {
- String key;
- String resolvedValue;
- for(Iterator iter = oaConf.getParamAuthMapping().keySet().iterator(); iter.hasNext(); result.put(key, resolvedValue))
- {
- key = (String)iter.next();
- String predicate = (String)oaConf.getParamAuthMapping().get(key);
- resolvedValue = resolveValue(predicate, authData, clientIPAddress);
- }
-
- }
- return result;
- }
-
- private static String resolveValue(String predicate, SAML1AuthenticationData authData, String clientIPAddress)
- {
- if(predicate.equals(MOAGivenName))
- return authData.getGivenName();
- if(predicate.equals(MOAFamilyName))
- return authData.getFamilyName();
- if(predicate.equals(MOADateOfBirth))
- return authData.getFormatedDateOfBirth();
- if(predicate.equals(MOABPK))
- return authData.getBPK();
-
- //AuthData holds the correct BPK/WBPK
- if(predicate.equals(MOAWBPK))
- return authData.getBPK();
- if(predicate.equals(MOAPublicAuthority))
- if(authData.isPublicAuthority())
- return "true";
- else
- return "false";
- if(predicate.equals(MOABKZ))
- return authData.getPublicAuthorityCode();
- if(predicate.equals(MOAQualifiedCertificate))
- if(authData.isQualifiedCertificate())
- return "true";
- else
- return "false";
- if(predicate.equals(MOAStammzahl))
- return authData.getIdentificationValue();
- if (predicate.equals(MOAIdentificationValueType))
- return authData.getIdentificationType();
- if(predicate.equals(MOAIPAddress))
- return clientIPAddress;
- else
- return null;
- }
-
- private Document readXMLFile(String fileName) throws LoginParameterResolverException
- {
- Logger.info("XMLLoginParameterResolverPlainData: Loading MOA-OA configuration " + fileName);
- DOMParser parser = new DOMParser();
- try
- {
- parser.setFeature("http://xml.org/sax/features/validation", true);
- parser.setFeature("http://apache.org/xml/features/validation/schema", true);
- parser.parse(fileName);
- return parser.getDocument();
- }
- catch(Exception e)
- {
- String msg = e.toString();
- throw new LoginParameterResolverException("proxy.13", new Object[] {"<noURL>: XMLLoginParameterResolverPlainData: Error parsing file " + fileName, "detail problem: " + msg});
- }
- }
-
- private void buildInfo(Document doc, boolean businessService)
- {
- Element root = doc.getDocumentElement();
- NodeList idList = root.getElementsByTagName("Identity");
- NodeList paramList = root.getElementsByTagName("Parameters");
- String wType ="";
- if (businessService) wType = "w";
- for(int i = 0; i < idList.getLength(); i++)
- Logger.debug("XMLLoginParameterResolverPlainData: LocalName idList: " + idList.item(i).getLocalName());
-
- for(int i = 0; i < paramList.getLength(); i++)
- Logger.debug("XMLLoginParameterResolverPlainData: LocalName paramList: " + paramList.item(i).getLocalName());
-
- for(int i = 0; i < idList.getLength(); i++)
- {
- Element tmpElem = (Element)idList.item(i);
- NodeList tmpList = tmpElem.getElementsByTagName("NamedIdentity");
- for(int j = 0; j < tmpList.getLength(); j++)
- Logger.debug("XMLLoginParameterResolverPlainData: LocalName tmp: " + tmpList.item(j).getLocalName());
-
- if(1 == tmpList.getLength())
- {
- tmpElem = (Element)tmpList.item(0);
- String tmpStr = tmpElem.getAttribute("SurName") + "," + tmpElem.getAttribute("GivenName") + "," + tmpElem.getAttribute("BirthDate");
- boolean tmpBool = false;
- if(tmpElem.getFirstChild() != null && "1".compareTo(tmpElem.getFirstChild().getNodeValue()) == 0)
- tmpBool = true;
- Logger.debug("XMLLoginParameterResolverPlainData: tmpStr: " + tmpStr + " value: " + (new Boolean(tmpBool)).toString());
- tmpElem = (Element)paramList.item(i);
- Logger.debug("XMLLoginParameterResolverPlainData: attribute UN: " + tmpElem.getAttribute("UN") + " attribute PW: " + tmpElem.getAttribute("PW"));
- namedMap.put(tmpStr, new LPRParams(tmpBool, tmpElem.getAttribute("UN"), tmpElem.getAttribute("PW")));
- } else
- {
- tmpList = tmpElem.getElementsByTagName(wType + "bPKIdentity");
- if(1 == tmpList.getLength())
- {
- tmpElem = (Element)tmpList.item(0);
- String tmpStr = tmpElem.getAttribute(wType + "bPK");
- boolean tmpBool = false;
- if(tmpElem.getFirstChild() != null && "1".compareTo(tmpElem.getFirstChild().getNodeValue()) == 0)
- tmpBool = true;
- Logger.debug("XMLLoginParameterResolverPlainData: tmpStr: " + tmpStr + " value: " + (new Boolean(tmpBool)).toString());
- tmpElem = (Element)paramList.item(i);
- Logger.debug("XMLLoginParameterResolverPlainData: attribute UN: " + tmpElem.getAttribute("UN") + " attribute PW: " + tmpElem.getAttribute("PW") + " attribute Param1: " + tmpElem.getAttribute("Param1"));
- bPKMap.put(tmpStr, new LPRParams(tmpBool, tmpElem.getAttribute("UN"), tmpElem.getAttribute("PW")));
- } else
- {
- Logger.warn("XMLLoginParameterResolverPlainData: wrong format or incorrect mode; no NamedIdentity or " + wType + "bPKIdentity found");
- }
- }
- }
-
- Logger.debug("namedMap:" + namedMap.toString());
- Logger.debug(wType + "bPKMap:" + bPKMap.toString());
- }
-
- //public static final String XSD_DOCELEM = "MOAIdentities";
- //public static final String XSD_IDELEM = "Identity";
- //public static final String XSD_NAMEDIDELEM = "NamedIdentity";
- //public static final String XSD_BPKIDELEM = "bPKIdentity";
- //public static final String XSD_PARAMELEM = "Parameters";
- //public static final String XML_LPR_CONFIG_PROPERTY_NAME1 = "moa.id.xmllpr1.configuration";
- private Map bPKMap;
- private Map namedMap;
-
-
- public void configure(String configuration, Boolean businessService) throws LoginParameterResolverException {
- Logger.info("XMLLoginParameterResolverPlainData: initialization string: " + configuration);
- this.configuration = configuration;
- String fileName = configuration;
- if(fileName == null) {
- fileName = "file:conf/moa-id/Identities.xml";
- Logger.info("XMLLoginParameterResolverPlainData: used file name string: " + fileName);
- }
- Document doc = readXMLFile(fileName);
- buildInfo(doc, businessService.booleanValue() );
- }
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilder.java
deleted file mode 100644
index 73f4d1f1f..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilder.java
+++ /dev/null
@@ -1,101 +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.
- ******************************************************************************/
-/*
- * 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.proxy.builder;
-
-import java.text.MessageFormat;
-import java.util.Calendar;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.exception.BuildException;
-import at.gv.egovernment.moa.util.Constants;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.DateTimeUtils;
-
-/**
- * Builder for the <code>&lt;samlp:Request&gt;</code> used for querying
- * the authentication data <code>&lt;saml:Assertion&gt;</code>.
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class SAMLRequestBuilder implements Constants {
- /** samlp-Request template */
- private static final String REQUEST =
- "<samlp:Request xmlns:samlp=\"urn:oasis:names:tc:SAML:1.0:protocol\" RequestID=\"{0}\" MajorVersion=\"1\" MinorVersion=\"0\" IssueInstant=\"{1}\">" +
- "<samlp:AssertionArtifact>{2}</samlp:AssertionArtifact>" +
- "</samlp:Request>";
-
- /**
- * Constructor for SAMLRequestBuilder.
- */
- public SAMLRequestBuilder() {
- super();
- }
-
- /**
- * Builds the <code>&lt;samlp:Request&gt;</code>.
- * @param requestID request ID
- * @param samlArtifactBase64 SAML artifact, encoded BASE64
- * @return the DOM element
- */
- public Element build(String requestID, String samlArtifactBase64) throws BuildException {
- try {
- String issueInstant = DateTimeUtils.buildDateTimeUTC(Calendar.getInstance());
- String request = MessageFormat.format(REQUEST, new Object[] {requestID, issueInstant, samlArtifactBase64});
- Element requestElem = DOMUtils.parseDocument(request, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement();
- return requestElem;
- }
- catch (Throwable ex) {
- throw new BuildException(
- "builder.00",
- new Object[] {"samlp:Request", ex.toString()},
- ex);
- }
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/invoke/GetAuthenticationDataInvoker.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/invoke/GetAuthenticationDataInvoker.java
deleted file mode 100644
index 26da33e34..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/invoke/GetAuthenticationDataInvoker.java
+++ /dev/null
@@ -1,206 +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.
- ******************************************************************************/
-/*
- * 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.proxy.invoke;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Vector;
-
-import javax.xml.namespace.QName;
-import javax.xml.rpc.Call;
-import javax.xml.rpc.Service;
-import javax.xml.rpc.ServiceFactory;
-
-import org.apache.axis.message.SOAPBodyElement;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.BuildException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.auth.exception.ServiceException;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.legacy.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.data.SAMLStatus;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.id.proxy.builder.SAMLRequestBuilder;
-import at.gv.egovernment.moa.id.proxy.parser.SAMLResponseParser;
-import at.gv.egovernment.moa.id.proxy.servlet.ProxyException;
-import at.gv.egovernment.moa.id.util.Random;
-import at.gv.egovernment.moa.logging.Logger;
-
-/**
- * Invoker of
- * <ul>
- * <li>either the GetAuthenticationData web service of MOA-ID Auth</li>
- * <li>or the API call {@link at.gv.egovernment.moa.id.auth.AuthenticationServer#getAuthenticationData},</li>
- * </ul>
- * depending of the configuration.
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class GetAuthenticationDataInvoker {
- /** Create a new QName object for the webservice endpoint */
- private static final QName SERVICE_QNAME = new QName("GetAuthenticationData");
-
- /** invoked object for API call of MOA-ID Auth */
- private static Object apiServer = null;
- /** invoked method for API call of MOA-ID Auth */
- private static Method apiMethod = null;
-
- /**
- * Invokes the service passing domain model objects.
- * @param samlArtifact SAML artifact
- * @return AuthenticationData object
- * @throws ServiceException on any exception thrown
- */
- /**
- * Get authentication data from the MOA-ID Auth component,
- * either via API call or via web service call.
- * @param samlArtifact SAML artifact to be used as a parameter
- * @return AuthenticationData
- * @throws MOAIDException
- */
- public SAML1AuthenticationData getAuthenticationData(String samlArtifact)
- throws MOAIDException {
-
- ConnectionParameter authConnParam =
- ProxyConfigurationProvider.getInstance().getAuthComponentConnectionParameter();
-
- //Removed for MOA-ID 2.x
-// if (authConnParam == null) {
-// try {
-// if (apiServer == null) {
-// Class serverClass = Class.forName("at.gv.egovernment.moa.id.auth.AuthenticationServer");
-// Method getInstanceMethod = serverClass.getMethod("getInstance", (Class[]) null);
-// apiServer = getInstanceMethod.invoke(null, (Object[]) null);
-// apiMethod = serverClass.getMethod(
-// "getAuthenticationData", new Class[] {String.class});
-// }
-// AuthenticationData authData = (AuthenticationData)apiMethod.invoke(apiServer, new Object[] {samlArtifact});
-// return authData;
-// }
-// catch (InvocationTargetException ex) {
-// Throwable targetEx = ex.getTargetException();
-// if (targetEx instanceof AuthenticationException)
-// throw (AuthenticationException) targetEx;
-// else
-// throw new ProxyException("proxy.09", new Object[] {targetEx.toString()});
-// }
-// catch (Throwable ex) {
-// throw new ProxyException("proxy.09", new Object[] {ex.toString()});
-// }
-// }
-// else {
- Element samlpRequest = new SAMLRequestBuilder().build(Random.nextRandom(), samlArtifact);
- Element samlpResponse = getAuthenticationData(samlpRequest);
- SAMLResponseParser srp = new SAMLResponseParser(samlpResponse);
- SAMLStatus status = srp.parseStatusCode();
- if (! "samlp:Success".equals(status.getStatusCode())) {
- if ("samlp:Responder".equals(status.getStatusCode())) {
- Logger.info("MOA-ID authentication process failed.");
- String code = status.getStatusCode();
- if (status.getSubStatusCode() != null && status.getSubStatusCode().length() > 0)
- code += "(" + status.getSubStatusCode() + ")";
-
- throw new MOAIDException("proxy.17", new Object[] {status.getStatusMessage()});
-
- } else {
- // on error status throw exception
- String code = status.getStatusCode();
- if (status.getSubStatusCode() != null && status.getSubStatusCode().length() > 0)
- code += "(" + status.getSubStatusCode() + ")";
-
- throw new ServiceException("service.02", new Object[] {code, status.getStatusMessage()});
- }
- }
- return srp.parseAuthenticationData();
-// }
- }
-
- /**
- * Invokes the service passing DOM elements.
- * @param request request DOM element
- * @return response DOM element
- * @throws ServiceException on any exception thrown
- */
- public Element getAuthenticationData(Element request) throws ServiceException {
- try {
- Service service = ServiceFactory.newInstance().createService(SERVICE_QNAME);
- Call call = service.createCall();
- SOAPBodyElement body =
- new SOAPBodyElement(request);
- SOAPBodyElement[] params = new SOAPBodyElement[] {body};
- Vector responses;
- SOAPBodyElement response;
-
- String endPoint;
- ConnectionParameter authConnParam =
- ProxyConfigurationProvider.getInstance().getAuthComponentConnectionParameter();
-
- //If the ConnectionParameter do NOT exist, we throw an exception ....
- if (authConnParam!=null) {
- endPoint = authConnParam.getUrl();
- call.setTargetEndpointAddress(endPoint);
- responses = (Vector) call.invoke(SERVICE_QNAME, params);
- response = (SOAPBodyElement) responses.get(0);
- return response.getAsDOM();
- }
- else
- {
- throw new ServiceException("service.01", null);
- }
- }
- catch (Exception ex) {
- throw new ServiceException("service.00", new Object[] {ex.toString()}, ex);
- }
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/AuthenticationDataAssertionParser.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/AuthenticationDataAssertionParser.java
deleted file mode 100644
index ebda8dae0..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/AuthenticationDataAssertionParser.java
+++ /dev/null
@@ -1,210 +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.
- ******************************************************************************/
-/*
- * 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.proxy.parser;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.util.BoolUtils;
-import at.gv.egovernment.moa.util.Constants;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.XPathUtils;
-
-/**
- * Parser for the <code>&lt;saml:Assertion&gt;</code> returned by the
- * <code>GetAuthenticationData</code> web service.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class AuthenticationDataAssertionParser implements Constants {
-
- /** Prefix for SAML-Xpath-expressions */
- private static String SAML = SAML_PREFIX + ":";
- /** Prefix for PersonData-Xpath-expressions */
- private static String PR = PD_PREFIX + ":";
- /** Prefix for Attribute MajorVersion in an Xpath-expression */
- private static String MAJOR_VERSION_XPATH =
- "@MajorVersion";
- /** Prefix for Attribute MinorVersion in an Xpath-expression */
- private static String MINOR_VERSION_XPATH =
- "@MinorVersion";
- /** Prefix for Attribute AssertionID in an Xpath-expression */
- private static String ASSERTION_ID_XPATH =
- "@AssertionID";
- /** Prefix for Attribute Issuer in an Xpath-expression */
- private static String ISSUER_XPATH =
- "@Issuer";
- /** Prefix for Attribute IssueInstant in an Xpath-expression */
- private static String ISSUE_INSTANT_XPATH =
- "@IssueInstant";
- /** Prefix for Element AttributeStatement in an Xpath-expression */
- private static String ATTRIBUTESTATEMENT_XPATH =
- SAML + "AttributeStatement/";
- /** Prefix for Element NameIdentifier in an Xpath-expression */
- private static String PK_XPATH =
- ATTRIBUTESTATEMENT_XPATH +
- SAML + "Subject/" +
- SAML + "NameIdentifier";
- private static String NAME_QUALIFIER_XPATH =
- PK_XPATH + "/@NameQualifier";
- /** Prefix for Element Person in an Xpath-expression */
- private static String PERSONDATA_XPATH =
- ATTRIBUTESTATEMENT_XPATH +
- SAML + "Attribute[@AttributeName=\"PersonData\"]/" +
- SAML + "AttributeValue/" +
- PR + "Person/";
- /** Prefix for Element Value in an Xpath-expression */
- private static String IDENTIFICATION_VALUE_XPATH =
- PERSONDATA_XPATH +
- PR + "Identification/" +
- PR + "Value";
- private static String IDENTIFICATION_TYPE_XPATH =
- PERSONDATA_XPATH +
- PR + "Identification/" +
- PR + "Type";
- /** Prefix for Element GivenName in an Xpath-expression */
- private static String GIVEN_NAME_XPATH =
- PERSONDATA_XPATH +
- PR + "Name/" +
- PR + "GivenName";
- /** Prefix for Element FamilyName in an Xpath-expression */
- private static String FAMILY_NAME_XPATH =
- PERSONDATA_XPATH +
- PR + "Name/" +
- PR + "FamilyName";
- /** Prefix for Element DateOfBirth in an Xpath-expression */
- private static String DATE_OF_BIRTH_XPATH =
- PERSONDATA_XPATH +
- PR + "DateOfBirth";
- /** Prefix for Element AttributeValue in an Xpath-expression */
- private static String IS_QUALIFIED_CERT_XPATH =
- ATTRIBUTESTATEMENT_XPATH +
- SAML + "Attribute[@AttributeName=\"isQualifiedCertificate\"]/" +
- SAML + "AttributeValue";
- /** Prefix for Element AttributeValue in an Xpath-expression */
- private static String PUBLIC_AUTHORITY_XPATH =
- ATTRIBUTESTATEMENT_XPATH +
- SAML + "Attribute[@AttributeName=\"isPublicAuthority\"]/" +
- SAML + "AttributeValue";
- /** Element samlAssertion represents the SAML:Assertion */
- private Element samlAssertion;
-
- /**
- * Constructor
- * @param samlAssertion samlpResponse the <code>&lt;samlp:Response&gt;</code> as a DOM element
- */
- public AuthenticationDataAssertionParser(Element samlAssertion) {
- this.samlAssertion = samlAssertion;
- }
-
- /**
- * Parses the <code>&lt;saml:Assertion&gt;</code>.
- * @return <code>AuthenticationData</code> object
- * @throws ParseException on any error
- */
- public SAML1AuthenticationData parseAuthenticationData()
- throws ParseException {
-
- try {
- SAML1AuthenticationData authData = new SAML1AuthenticationData();
- //ÄNDERN: NUR der Identification-Teil
- authData.setSamlAssertion(DOMUtils.serializeNode(samlAssertion));
- authData.setMajorVersion(new Integer(
- XPathUtils.getAttributeValue(samlAssertion, MAJOR_VERSION_XPATH, "-1")).intValue());
- authData.setMinorVersion(new Integer(
- XPathUtils.getAttributeValue(samlAssertion, MINOR_VERSION_XPATH, "-1")).intValue());
- authData.setAssertionID(
- XPathUtils.getAttributeValue(samlAssertion, ASSERTION_ID_XPATH, ""));
- authData.setIssuer(
- XPathUtils.getAttributeValue(samlAssertion, ISSUER_XPATH, ""));
- authData.setIssueInstant(
- XPathUtils.getAttributeValue(samlAssertion, ISSUE_INSTANT_XPATH, ""));
- String pkValue = XPathUtils.getElementValue(samlAssertion, PK_XPATH, "");
-
- if (XPathUtils.getAttributeValue(samlAssertion, NAME_QUALIFIER_XPATH, "").equalsIgnoreCase(URN_PREFIX_BPK)) {
- //bPK
- authData.setBPK(pkValue);
- authData.setBPKType(Constants.URN_PREFIX_BPK);
-
- } else {
- //wbPK
- authData.setBPK(pkValue);
- authData.setBPKType(XPathUtils.getElementValue(samlAssertion, IDENTIFICATION_TYPE_XPATH, ""));
- }
- authData.setIdentificationValue(
- XPathUtils.getElementValue(samlAssertion, IDENTIFICATION_VALUE_XPATH, ""));
- authData.setIdentificationType(
- XPathUtils.getElementValue(samlAssertion, IDENTIFICATION_TYPE_XPATH, ""));
- authData.setGivenName(
- XPathUtils.getElementValue(samlAssertion, GIVEN_NAME_XPATH, ""));
- authData.setFamilyName(
- XPathUtils.getElementValue(samlAssertion, FAMILY_NAME_XPATH, ""));
- authData.setDateOfBirth(
- XPathUtils.getElementValue(samlAssertion, DATE_OF_BIRTH_XPATH, ""));
- authData.setQualifiedCertificate(BoolUtils.valueOf(
- XPathUtils.getElementValue(samlAssertion, IS_QUALIFIED_CERT_XPATH, "")));
- String publicAuthority =
- XPathUtils.getElementValue(samlAssertion, PUBLIC_AUTHORITY_XPATH, null);
- if (publicAuthority == null) {
- authData.setPublicAuthority(false);
- authData.setPublicAuthorityCode("");
- }
- else {
- authData.setPublicAuthority(true);
- if (! publicAuthority.equalsIgnoreCase("true"))
- authData.setPublicAuthorityCode(publicAuthority);
- }
- return authData;
- }
- catch (Throwable t) {
- throw new ParseException("parser.01", new Object[] { t.toString() }, t);
- }
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParser.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParser.java
deleted file mode 100644
index cec8dbe6c..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParser.java
+++ /dev/null
@@ -1,147 +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.
- ******************************************************************************/
-/*
- * 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.proxy.parser;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.data.SAMLStatus;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.util.Constants;
-import at.gv.egovernment.moa.util.XPathUtils;
-
-/**
- * Parser for the <code>&lt;samlp:Response&gt;</code> returned by the
- * <code>GetAuthenticationData</code> web service.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class SAMLResponseParser implements Constants {
- /** Element containing the samlResponse */
- private Element samlResponse;
- /** Xpath prefix for reaching SAMLP Namespaces */
- private static String SAMLP = SAMLP_PREFIX + ":";
- /** Xpath prefix for reaching SAML Namespaces */
- private static String SAML = SAML_PREFIX + ":";
- /** Xpath prefix for reaching PersonData Namespaces */
- private static String PR = PD_PREFIX + ":";
- /** Xpath expression for reaching the SAMLP:Response element */
- private static final String ROOT =
- "/" + SAMLP + "Response/";
- /** Xpath expression for reaching the SAMLP:Status element */
- private static final String STATUS_XPATH =
- ROOT +
- SAMLP + "Status/";
- /** Xpath expression for reaching the SAMLP:StatusCode_Value attribute */
- private static final String STATUSCODE_XPATH =
- STATUS_XPATH +
- SAMLP + "StatusCode/@Value";
- /** Xpath expression for reaching the SAMLP:SubStatusCode_Value attribute */
- private static final String SUBSTATUSCODE_XPATH =
- STATUS_XPATH +
- SAMLP + "StatusCode/" +
- SAMLP + "StatusCode/@Value";
- /** Xpath expression for reaching the SAMLP:StatusMessage element */
- private static final String STATUSMESSAGE_XPATH =
- STATUS_XPATH +
- SAMLP + "StatusMessage";
- /** Xpath expression for reaching the SAML:Assertion element */
- private static String ASSERTION_XPATH =
- ROOT +
- SAML + "Assertion";
-
- /**
- * Constructor
- * @param samlResponse the <code>&lt;samlp:Response&gt;</code> as a DOM element
- */
- public SAMLResponseParser(Element samlResponse) {
- this.samlResponse = samlResponse;
- }
-
- /**
- * Parses the <code>&lt;samlp:StatusCode&gt;</code> from the <code>&lt;samlp:Response&gt;</code>.
- * @return <code>AuthenticationData</code> object
- * @throws ParseException on any parsing error
- */
- public SAMLStatus parseStatusCode()
- throws ParseException {
-
- SAMLStatus status = new SAMLStatus();
- try {
- status.setStatusCode(
- XPathUtils.getAttributeValue(samlResponse, STATUSCODE_XPATH, ""));
- status.setSubStatusCode(
- XPathUtils.getAttributeValue(samlResponse, SUBSTATUSCODE_XPATH, ""));
- status.setStatusMessage(
- XPathUtils.getElementValue(samlResponse, STATUSMESSAGE_XPATH, ""));
- }
- catch (Throwable t) {
- throw new ParseException("parser.01", new Object[] { t.toString() }, t);
- }
- return status;
- }
-
- /**
- * Parses the <code>&lt;saml:Assertion&gt;</code> from the <code>&lt;samlp:Response&gt;</code>.
- * @return <code>AuthenticationData</code> object
- * @throws ParseException on any parsing error
- */
- public SAML1AuthenticationData parseAuthenticationData()
- throws ParseException {
-
- Element samlAssertion;
- try {
- samlAssertion = (Element)XPathUtils.selectSingleNode(samlResponse, ASSERTION_XPATH);
- }
- catch (Throwable t) {
- throw new ParseException("parser.01", new Object[] { t.toString() }, t);
- }
- return new AuthenticationDataAssertionParser(samlAssertion).parseAuthenticationData();
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ConfigurationServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ConfigurationServlet.java
deleted file mode 100644
index e7340850c..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ConfigurationServlet.java
+++ /dev/null
@@ -1,122 +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.
- ******************************************************************************/
-/*
- * 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.proxy.servlet;
-
-import java.io.IOException;
-import java.text.DateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import at.gv.egovernment.moa.id.proxy.MOAIDProxyInitializer;
-import at.gv.egovernment.moa.id.util.HTTPRequestJSPForwarder;
-import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
-import at.gv.egovernment.moa.logging.Logger;
-
-/**
- * Servlet requested for updating the MOA-ID Auth configuration from configuration file
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class ConfigurationServlet extends HttpServlet {
-
- /**
- *
- */
- private static final long serialVersionUID = -886733697373217942L;
-
-/**
- * Handle a HTTP GET request, used to indicated that the MOA
- * configuration needs to be updated (reloaded).
- *
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
- */
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- MOAIDMessageProvider msg = MOAIDMessageProvider.getInstance();
- try {
- MOAIDProxyInitializer.initialize();
-
- String message = msg.getMessage("config.00", new Object[]
- { DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.GERMAN).format(new Date())} );
- Logger.info(message);
-
- HTTPRequestJSPForwarder.forwardNamed(message, "/message-proxy.jsp", getServletContext(), request, response);
- } catch (Throwable t) {
- String errorMessage = msg.getMessage("config.04", null);
- Logger.error(errorMessage, t);
- HTTPRequestJSPForwarder.forwardNamed(errorMessage, "/message-proxy.jsp", getServletContext(), request, response);
- }
- }
-
- /**
- * Do the same as <code>doGet</code>.
- *
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
- */
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doGet(request, response);
- }
-
-/**
- * Calls the web application initializer.
- *
- * @see javax.servlet.Servlet#init(ServletConfig)
- */
-public void init(ServletConfig servletConfig) throws ServletException {
- super.init(servletConfig);
-}
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyException.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyException.java
deleted file mode 100644
index d4d4fa7a1..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyException.java
+++ /dev/null
@@ -1,86 +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.
- ******************************************************************************/
-/*
- * 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.proxy.servlet;
-
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-
-/**
- * Exception thrown while proxying a request to the online application
- *
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class ProxyException extends MOAIDException {
-
- /**
- *
- */
- private static final long serialVersionUID = -2498996404868930153L;
-
-/**
- * Constructor for ProxyException.
- * @param messageId
- * @param parameters
- */
- public ProxyException(String messageId, Object[] parameters) {
- super(messageId, parameters);
- }
-
- /**
- * Constructor for ProxyException.
- * @param messageId
- * @param parameters
- * @param wrapped
- */
- public ProxyException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
- super(messageId, parameters, wrapped);
- }
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyServlet.java
deleted file mode 100644
index 9447f2e35..000000000
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/proxy/servlet/ProxyServlet.java
+++ /dev/null
@@ -1,1008 +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.
- ******************************************************************************/
-/*
- * 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.proxy.servlet;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
-
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import org.apache.commons.lang.StringEscapeUtils;
-
-import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
-import at.gv.egovernment.moa.id.auth.exception.BuildException;
-import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
-import at.gv.egovernment.moa.id.auth.exception.ParseException;
-import at.gv.egovernment.moa.id.auth.exception.ServiceException;
-import at.gv.egovernment.moa.id.auth.servlet.RedirectServlet;
-import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.legacy.ConnectionParameter;
-import at.gv.egovernment.moa.id.config.proxy.OAConfiguration;
-import at.gv.egovernment.moa.id.config.proxy.OAProxyParameter;
-import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider;
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.id.proxy.ConnectionBuilder;
-import at.gv.egovernment.moa.id.proxy.ConnectionBuilderFactory;
-import at.gv.egovernment.moa.id.proxy.LoginParameterResolver;
-import at.gv.egovernment.moa.id.proxy.LoginParameterResolverException;
-import at.gv.egovernment.moa.id.proxy.LoginParameterResolverFactory;
-import at.gv.egovernment.moa.id.proxy.MOAIDProxyInitializer;
-import at.gv.egovernment.moa.id.proxy.NotAllowedException;
-import at.gv.egovernment.moa.id.proxy.invoke.GetAuthenticationDataInvoker;
-import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
-import at.gv.egovernment.moa.id.util.SSLUtils;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.Base64Utils;
-import at.gv.egovernment.moa.util.MiscUtil;
-import at.gv.egovernment.moa.util.URLEncoder;
-
-/**
- * Servlet requested for logging in at an online application,
- * and then for proxying requests to the online application.
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class ProxyServlet extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = 6838184868735988125L;
-/** Name of the Parameter for the Target */
- private static final String PARAM_TARGET = "Target";
- /** Name of the Parameter for the SAMLArtifact */
- private static final String PARAM_SAMLARTIFACT = "SAMLArtifact";
- /** Name of the Parameter for the ErrorMessage */
- private static final String PARAM_ERRORMASSAGE = "error";
-
- /** Name of the Attribute for marking the session as authenticated*/
- private static final String ATT_AUTHDATAFETCHED = "AuthDataFetched";
- /** Name of the Attribute for the PublicURLPrefix */
- private static final String ATT_PUBLIC_URLPREFIX = "PublicURLPrefix";
- /** Name of the Attribute for the RealURLPrefix */
- private static final String ATT_REAL_URLPREFIX = "RealURLPrefix";
- /** Name of the Attribute for the SSLSocketFactory */
- private static final String ATT_SSL_SOCKET_FACTORY = "SSLSocketFactory";
- /** Name of the Attribute for the LoginHeaders */
- private static final String ATT_LOGIN_HEADERS = "LoginHeaders";
- /** Name of the Attribute for the LoginParameters */
- private static final String ATT_LOGIN_PARAMETERS = "LoginParameters";
- /** Name of the Attribute for the SAMLARTIFACT */
- private static final String ATT_SAML_ARTIFACT = "SamlArtifact";
- /** Name of the Attribute for the state of the browser request for login dialog*/
- private static final String ATT_BROWSERREQU = "BrowserLoginRequest";
- /** Name of the Attribute for the state of the browser request for login dialog*/
- private static final String ATT_OA_CONF = "oaConf";
- /** Name of the Attribute for the Logintype of the OnlineApplication*/
- private static final String ATT_OA_LOGINTYPE = "LoginType";
- /** Name of the Attribute for the number of the try to login into the OnlineApplication*/
- private static final String ATT_OA_LOGINTRY = "LoginTry";
- /** Maximum permitted login tries */
- private static final int MAX_OA_LOGINTRY = 3;
- /** Name of the Attribute for authorization value for further connections*/
- private static final String ATT_OA_AUTHORIZATION_HEADER = "authorizationkey";
- /** Name of the Attribute for user binding */
- private static final String ATT_OA_USER_BINDING = "UserBinding";
- /** For extended internal debug messages */
- private static final boolean INTERNAL_DEBUG = false;
- /** Message to be given if browser login failed */
- private static final String RET_401_MSG = "<html><head><title>Ein Fehler ist aufgetreten</title></head><body><h1>Fehler bei der Anmeldung</h1><p>Bei der Anmeldung ist ein Fehler aufgetreten.</p><p>Fehler bei der Anmeldung. <br>Pr&uuml;fen Sie bitte ihre Berechtigung.<br><b>Abbruch durch den Benutzer.</b><br></p></body></html>";
-
- /**
- * @see javax.servlet.http.HttpServlet#service(HttpServletRequest, HttpServletResponse)
- */
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
- Logger.debug("getRequestURL:" + req.getRequestURL().toString());
-
- String artifact = req.getParameter(PARAM_SAMLARTIFACT);
- artifact = StringEscapeUtils.escapeHtml(artifact);
-
- try {
- if (artifact != null) {
- // check if SAML Artifact was already used in this session (in case of page reload)
- HttpSession session = req.getSession();
- if (null != session && artifact.equals(session.getAttribute(ATT_SAML_ARTIFACT))) {
- if (session.getAttribute(ATT_BROWSERREQU)==null) {
- tunnelRequest(req, resp);
- }else{
- login(req, resp); //login after browser login dialog
- }
- } else
- // it is the first time that the SAML Artifact was used
- login(req, resp);
- }
- else
- tunnelRequest(req, resp);
- }
- catch (MOAIDException ex) {
- handleError(ex.getMessage(), ex, req, resp);
- }
- catch (Throwable ex) {
- handleError(ex.getMessage(), ex, req, resp);
- }
- }
-
- /**
- * Login to online application at first call of servlet for a user session.<br/>
- * <ul>
- * <li>Acquires authentication data from the MOA-ID Auth component.</li>
- * <li>Reads configuration data for the online application.</li>
- * <li>Resolves login parameters.</li>
- * <li>Sets up an SSLSocketFactory in case of a secure connection to the online application.</li>
- * <li>For a stateless online application, stores data in the HttpSession.</li>
- * <li>Tunnels the request to the online application.</li>
- * </ul>
- * @param req
- * @param resp
- * @throws ConfigurationException when wrong configuration is encountered
- * @throws ProxyException when wrong configuration is encountered
- * @throws BuildException while building the request for MOA-ID Auth
- * @throws ServiceException while invoking MOA-ID Auth
- * @throws ParseException while parsing the response from MOA-ID Auth
- */
- private void login(HttpServletRequest req, HttpServletResponse resp) throws ConfigurationException, ProxyException, BuildException, ServiceException, ParseException, AuthenticationException {
-
- HttpSession session = req.getSession();
- String samlArtifact = "";
- Map loginHeaders = null;
- Map loginParameters = null;
- String publicURLPrefix = "";
- String realURLPrefix = "";
- SSLSocketFactory ssf = null;
- String urlRequested = req.getRequestURL().toString();
- OAConfiguration oaConf = null;
- String loginType = "";
- String binding = "";
-
- if (session.getAttribute(ATT_BROWSERREQU)==null) {
-
- // read configuration data
- ProxyConfigurationProvider proxyConf = ProxyConfigurationProvider.getInstance();
- OAProxyParameter oaParam = proxyConf.getOnlineApplicationParameter(urlRequested);
- if (oaParam == null) {
- throw new ProxyException("proxy.02", new Object[] { urlRequested });
- }
-
- samlArtifact = req.getParameter(PARAM_SAMLARTIFACT);
- Logger.debug("moa-id-proxy login " + PARAM_SAMLARTIFACT + ": " + samlArtifact);
- // String target = req.getParameter(PARAM_TARGET); parameter given but not processed
- // boolean targetprovided = req.getParameter(PARAM_TARGET) != null;
-
- // get authentication data from the MOA-ID Auth component
- SAML1AuthenticationData authData;
- try {
- authData = new GetAuthenticationDataInvoker().getAuthenticationData(samlArtifact);
-
- } catch (ServiceException ex) {
- throw new ProxyException("proxy.14", new Object[] {ex.getMessage()}, ex);
-
- } catch (ProxyException ex) {
- throw new ProxyException("proxy.14", new Object[] {ex.getMessage()}, ex);
-
- } catch (MOAIDException ex) {
- String errorURL = oaParam.getErrorRedirctURL();
- if (MiscUtil.isNotEmpty(errorURL)) {
- generateErrorAndRedirct(resp, errorURL, ex.getMessage());
- return;
-
- } else {
- Logger.info("No ErrorRedirectURL defined. The error is shown on MOA-ID Proxy errorpage.");
- throw new ProxyException("proxy.14", new Object[] {ex.getMessage()}, ex);
- }
- }
- session.setAttribute(ATT_AUTHDATAFETCHED, "true");
-
- publicURLPrefix = oaParam.getPublicURLPrefix();
- Logger.debug("OA: " + publicURLPrefix);
- oaConf = oaParam.getOaConfiguration();
- ConnectionParameter oaConnParam = oaParam.getConnectionParameter();
- realURLPrefix = oaConnParam.getUrl();
-
- // resolve login parameters to be forwarded to online application
- LoginParameterResolver lpr = LoginParameterResolverFactory.getLoginParameterResolver(publicURLPrefix);
- String clientIPAddress = req.getRemoteAddr();
- boolean businessService = oaParam.getBusinessService();
- try {
- if (oaConf.getAuthType().equals(OAConfiguration.PARAM_AUTH)) {
- loginParameters = lpr.getAuthenticationParameters(oaConf, authData, clientIPAddress, businessService, publicURLPrefix);
- } else {
- loginHeaders = lpr.getAuthenticationHeaders(oaConf, authData, clientIPAddress, businessService, publicURLPrefix);
- for (Iterator iter = loginHeaders.keySet().iterator(); iter.hasNext();) {
- //extract user-defined bindingValue
- String headerKey = (String) iter.next();
- String headerKeyValue = (String) loginHeaders.get(headerKey);
- if (headerKey.equalsIgnoreCase("binding")) {
- binding = (String) loginHeaders.get(headerKey);
- }
- for (int i = 1; i <= 3; i++) {
- if (headerKey.equalsIgnoreCase("param" + i)) {
- int sep = headerKeyValue.indexOf("=");
- if (sep>-1) {
- if (sep>0) {
- String value = "";
- if (headerKeyValue.length()>sep+1) value = headerKeyValue.substring(sep+1);
- if (loginParameters == null) loginParameters = new HashMap();
- loginParameters.put(headerKeyValue.substring(0,sep) , value);
- }
- } else {
- loginParameters.put(headerKey, "");
- }
- }
- }
- }
- loginHeaders.remove("binding");
- loginHeaders.remove("param1");
- loginHeaders.remove("param2");
- loginHeaders.remove("param3");
- }
- } catch (LoginParameterResolverException ex) {
- String errorURL = oaParam.getErrorRedirctURL();
- if (MiscUtil.isNotEmpty(errorURL)) {
- generateErrorAndRedirct(resp, errorURL,
- MOAIDMessageProvider.getInstance().getMessage("proxy.13",
- new Object[] { publicURLPrefix }));
- return;
-
- } else
- throw new ProxyException("proxy.13", new Object[] { publicURLPrefix });
-
- } catch (NotAllowedException e) {
- String errorURL = oaParam.getErrorRedirctURL();
- if (MiscUtil.isNotEmpty(errorURL)) {
- generateErrorAndRedirct(resp, errorURL,
- MOAIDMessageProvider.getInstance().getMessage("proxy.15",
- new Object[] { }));
- return;
-
- } else
- throw new ProxyException("proxy.15", new Object[] { });
- }
-
- // setup SSLSocketFactory for communication with the online application
- if (oaConnParam.isHTTPSURL()) {
- try {
- ssf = SSLUtils.getSSLSocketFactory(proxyConf, oaConnParam);
- } catch (Throwable ex) {
- throw new ProxyException(
- "proxy.05",
- new Object[] { oaConnParam.getUrl(), ex.toString()},
- ex);
- }
- }
-
- // for stateless online application, store data in HttpSession
- loginType = oaConf.getLoginType();
- if ("".equalsIgnoreCase(binding)) {
- binding = oaConf.getBinding();
- if ("".equalsIgnoreCase(binding)) binding = "full";
- }
- Logger.debug("Login type: " + loginType);
- if (loginType.equals(OAConfiguration.LOGINTYPE_STATELESS)) {
- int sessionTimeOut = oaParam.getSessionTimeOut();
- if (sessionTimeOut == 0)
- sessionTimeOut = 60 * 60; // default 1 h
-
- session.setMaxInactiveInterval(sessionTimeOut);
- session.setAttribute(ATT_PUBLIC_URLPREFIX, publicURLPrefix);
- session.setAttribute(ATT_REAL_URLPREFIX, realURLPrefix);
- session.setAttribute(ATT_SSL_SOCKET_FACTORY, ssf);
- session.setAttribute(ATT_LOGIN_HEADERS, loginHeaders);
- session.setAttribute(ATT_LOGIN_PARAMETERS, loginParameters);
- session.setAttribute(ATT_SAML_ARTIFACT, samlArtifact);
- session.setAttribute(ATT_OA_CONF, oaConf);
- session.setAttribute(ATT_OA_LOGINTYPE, loginType);
- session.setAttribute(ATT_OA_USER_BINDING, binding);
- session.removeAttribute(ATT_BROWSERREQU);
- session.removeAttribute(ATT_OA_AUTHORIZATION_HEADER);
- session.removeAttribute(ATT_OA_LOGINTRY);
- Logger.debug("moa-id-proxy: HTTPSession " + session.getId() + " angelegt");
- }
-
- } else {
- loginHeaders = (Map) session.getAttribute(ATT_LOGIN_HEADERS);
- publicURLPrefix = (String) session.getAttribute(ATT_PUBLIC_URLPREFIX);
- realURLPrefix = (String) session.getAttribute(ATT_REAL_URLPREFIX);
- ssf = (SSLSocketFactory) session.getAttribute(ATT_SSL_SOCKET_FACTORY);
- loginHeaders = (Map) session.getAttribute(ATT_LOGIN_HEADERS);
- loginParameters = (Map) session.getAttribute(ATT_LOGIN_PARAMETERS);
- samlArtifact = (String) session.getAttribute(ATT_SAML_ARTIFACT);
- oaConf = (OAConfiguration) session.getAttribute(ATT_OA_CONF);
- loginType = (String) session.getAttribute(ATT_OA_LOGINTYPE);
- binding = (String) session.getAttribute(ATT_OA_USER_BINDING);
- session.removeAttribute(ATT_BROWSERREQU);
- Logger.debug("moa-id-proxy: HTTPSession " + session.getId() + " aufgenommen");
- }
-
- try {
- int respcode = 0;
-
- // tunnel request to the online application
- respcode = tunnelRequest(req, resp, loginHeaders, loginParameters, publicURLPrefix, realURLPrefix, ssf, binding);
- if (respcode == 401) {
- if (OAConfiguration.BINDUNG_FULL.equals(binding) && oaConf.getLoginType().equals(OAConfiguration.LOGINTYPE_STATELESS)) {
- throw new ProxyException("proxy.12", new Object[] { realURLPrefix });
- }
- }
- } catch (ProxyException ex) {
- throw new ProxyException("proxy.12", new Object[] { realURLPrefix });
- } catch (Throwable ex) {
- throw new ProxyException("proxy.04", new Object[] { urlRequested, ex.toString()}, ex);
- }
- }
-
- /**
- * Tunnels a request to the stateless online application using data stored in the HTTP session.
- * @param req HTTP request
- * @param resp HTTP response
- * @throws IOException if an I/O error occurs
- */
- private void tunnelRequest(HttpServletRequest req, HttpServletResponse resp) throws ProxyException, IOException {
-
- //Logger.debug("Tunnel request (stateless)");
- HttpSession session = req.getSession(false);
-
- if (session == null)
- throw new ProxyException("proxy.07", null);
- String publicURLPrefix = (String) session.getAttribute(ATT_PUBLIC_URLPREFIX);
- //A session is automatically created when forwarded 1st time to errorpage-proxy.jsp (with the handleError method)
- //additional check if publicURLPrefix is OK, if not throw an Exception
- if (publicURLPrefix == null)
- throw new ProxyException("proxy.07", null);
-
- String realURLPrefix = (String) session.getAttribute(ATT_REAL_URLPREFIX);
- SSLSocketFactory ssf = (SSLSocketFactory) session.getAttribute(ATT_SSL_SOCKET_FACTORY);
- Map loginHeaders = (Map) session.getAttribute(ATT_LOGIN_HEADERS);
- Map loginParameters = (Map) session.getAttribute(ATT_LOGIN_PARAMETERS);
- String binding = (String) session.getAttribute(ATT_OA_USER_BINDING);
- if (publicURLPrefix == null || realURLPrefix == null)
- throw new ProxyException("proxy.08", new Object[] { req.getRequestURL().toString()});
-
- int respcode = tunnelRequest(req, resp, loginHeaders, loginParameters, publicURLPrefix, realURLPrefix, ssf, binding);
- if (respcode == -401) // #tries to login exceeded
- throw new ProxyException("proxy.16", new Object[] {realURLPrefix, Integer.toString(MAX_OA_LOGINTRY)});
- }
-
-/**
- * Tunnels a request to the online application using given URL mapping and SSLSocketFactory.
- * This method returns the ResponseCode of the request to the online application.
- * @param req HTTP request
- * @param resp HTTP response
- * @param loginHeaders header field/values to be inserted for purposes of authentication;
- * may be <code>null</code>
- * @param loginParameters parameter name/values to be inserted for purposes of authentication;
- * may be <code>null</code>
- * @param publicURLPrefix prefix of request URL to be substituted for the <code>realURLPrefix</code>
- * @param realURLPrefix prefix of online application URL to substitute the <code>publicURLPrefix</code>
- * @param ssf SSLSocketFactory to use
- * @throws IOException if an I/O error occurs
- */
-private int tunnelRequest(HttpServletRequest req, HttpServletResponse resp, Map loginHeaders, Map loginParameters, String publicURLPrefix, String realURLPrefix, SSLSocketFactory ssf, String binding)
- throws IOException {
-
- String originBinding = binding;
- String browserUserID = "";
- String browserPassword = "";
- //URL url = new URL(realURLPrefix);
- //String realURLHost = url.getHost();
- if (INTERNAL_DEBUG && !binding.equals("")) Logger.debug("Binding: " + binding);
-
- // collect headers from request
- Map headers = new HashMap();
- for (Enumeration enu = req.getHeaderNames(); enu.hasMoreElements();) {
- String headerKey = (String) enu.nextElement();
- String headerKeyValue = req.getHeader(headerKey);
- if (INTERNAL_DEBUG) Logger.debug("Incoming:" + headerKey + "=" + headerKeyValue);
- //Analyze Basic-Auth-Headers from the client
- if (headerKey.equalsIgnoreCase("Authorization")) {
- if (headerKeyValue.substring(0,6).equalsIgnoreCase("Basic ")) {
- String credentials = headerKeyValue.substring(6);
- byte [] bplaintextcredentials = Base64Utils. decode(credentials, true);
- String plaintextcredentials = new String(bplaintextcredentials);
- browserUserID = plaintextcredentials.substring(0,plaintextcredentials.indexOf(":"));
- browserPassword = plaintextcredentials.substring(plaintextcredentials.indexOf(":")+1);
- //deactivate following line for security
- //if (INTERNAL_DEBUG) Logger.debug("Analyzing authorization-header from browser: " + headerKeyValue + "gives UN:PW=" + browserUserID + ":" + browserPassword );
- }
- if (headerKeyValue.substring(0,9).equalsIgnoreCase("Negotiate")) {
- //deactivate following line for security
- //if (INTERNAL_DEBUG) Logger.debug("Analyzing authorization-header from browser: Found NTLM Aut.: " + headerKeyValue + "gives UN:PW=" + browserUserID + ":" + browserPassword );
- }
- }
- else
- {
- /* Headers MUST NOT be repaced according to our Spec.
- if (headerKey.equalsIgnoreCase("Host")) {
- headerKeyValue = realURLHost;
- //headerKeyValue= realURLPrefix.substring(hoststartpos);
- if (INTERNAL_DEBUG) Logger.debug("replaced:" + headerKey + "=" + headerKeyValue);
- }
- */
- headers.put(headerKey, headerKeyValue);
- }
- }
-
-
- // collect login headers, possibly overwriting headers from request
- String authorizationvalue="";
- if (req.getSession().getAttribute(ATT_OA_AUTHORIZATION_HEADER)==null) {
-
- if (OAConfiguration.BINDUNG_NOMATCH.equals(binding)) {
- int loginTry = getLoginTry(req);
- Logger.debug("Binding: mode = " + OAConfiguration.BINDUNG_NOMATCH + "(try #" + Integer.toString(loginTry) + ")");
- if (loginTry==1) {
- binding = OAConfiguration.BINDUNG_FULL;
- } else {
- binding = OAConfiguration.BINDUNG_USERNAME;
- }
- }
-
- /* Soll auch bei anderen bindings zuerst ein passwort probiert werden k�nnen:
- //if we have the first Login-Try and we have Binding to Username and a predefined Password we try this one first
- // full binding will be covered by next block
- if (loginTry==1 && !OAConfiguration.BINDUNG_FULL.equals(binding)) {
- //1st try: if we have a password, try this one first
- for (Iterator iter = loginHeaders.keySet().iterator(); iter.hasNext();) {
- String headerKey = (String) iter.next();
- String headerKeyValue = (String) loginHeaders.get(headerKey);
- if (isBasicAuthenticationHeader(headerKey, headerKeyValue)) {
- String credentials = headerKeyValue.substring(6);
- byte [] bplaintextcredentials = Base64Utils.decode(credentials, true);
- String plaintextcredentials = new String(bplaintextcredentials);
- String password = plaintextcredentials.substring(plaintextcredentials.indexOf(":")+1);
- if (password!=null && !password.equals("")) {
- Logger.debug("Binding: found predefined password. Trying full binding first");
- binding = OAConfiguration.BINDUNG_FULL;
- break;
- }
- }
- }
- }
- */
-
-
-
- //we have a connection with not having logged on
- if (loginHeaders != null && (browserPassword.length()!=0 || browserUserID.length()!=0 || OAConfiguration.BINDUNG_FULL.equals(binding))) {
- for (Iterator iter = loginHeaders.keySet().iterator(); iter.hasNext();) {
- String headerKey = (String) iter.next();
- String headerKeyValue = (String) loginHeaders.get(headerKey);
- //customize loginheaders if necessary
- if (isBasicAuthenticationHeader(headerKey, headerKeyValue))
- {
- if (OAConfiguration.BINDUNG_FULL.equals(binding)) {
- authorizationvalue = headerKeyValue;
- Logger.debug("Binding: full binding to user established");
- } else {
- String credentials = headerKeyValue.substring(6);
- byte [] bplaintextcredentials = Base64Utils.decode(credentials, true);
- String plaintextcredentials = new String(bplaintextcredentials);
- String userID = plaintextcredentials.substring(0,plaintextcredentials.indexOf(":"));
- String password = plaintextcredentials.substring(plaintextcredentials.indexOf(":")+1);
- String userIDPassword = ":";
- if (OAConfiguration.BINDUNG_USERNAME.equals(binding)) {
- Logger.debug("Binding: Access with necessary binding to user");
- userIDPassword = userID + ":" + browserPassword;
- } else if (OAConfiguration.BINDUNG_NONE.equals(binding)) {
- Logger.debug("Binding: Access without binding to user");
- //If first time
- if (browserUserID.length()==0) browserUserID = userID;
- if (browserPassword.length()==0) browserPassword = password;
- userIDPassword = browserUserID + ":" + browserPassword;
- } else {
- userIDPassword = userID + ":" + password;
- }
- credentials = Base64Utils.encode(userIDPassword.getBytes());
- authorizationvalue = "Basic " + credentials;
- headerKeyValue = authorizationvalue;
- }
- }
- headers.put(headerKey, headerKeyValue);
- }
- }
- }else{
- //if OA needs Authorization header in each further request
- authorizationvalue = (String) req.getSession().getAttribute(ATT_OA_AUTHORIZATION_HEADER);
- if (loginHeaders != null) headers.put("Authorization", authorizationvalue);
- }
-
-
- Vector parameters = new Vector();
- for (Enumeration enu = req.getParameterNames(); enu.hasMoreElements();) {
- String paramName = (String) enu.nextElement();
- if (!(paramName.equals(PARAM_SAMLARTIFACT) || paramName.equals(PARAM_TARGET))) {
- if (INTERNAL_DEBUG) Logger.debug("Req Parameter-put: " + paramName + ":" + req.getParameter(paramName));
- String parameter[] = new String[2];
- parameter[0]= paramName;
- parameter[1]= req.getParameter(paramName);
- parameters.add(parameter);
- }
- }
- // collect login parameters, possibly overwriting parameters from request
- if (loginParameters != null) {
- for (Iterator iter = loginParameters.keySet().iterator(); iter.hasNext();) {
- String paramName = (String) iter.next();
- if (!(paramName.equals(PARAM_SAMLARTIFACT) || paramName.equals(PARAM_TARGET))) {
- if (INTERNAL_DEBUG) Logger.debug("Req Login-Parameter-put: " + paramName + ":" + loginParameters.get(paramName));
- String parameter[] = new String[2];
- parameter[0]= paramName;
- parameter[1]= (String) loginParameters.get(paramName);
- parameters.add(parameter);
- }
- }
- }
-
- ConnectionBuilder cb = ConnectionBuilderFactory.getConnectionBuilder(publicURLPrefix);
- HttpURLConnection conn = cb.buildConnection(req, publicURLPrefix, realURLPrefix, ssf, parameters);
-
- // set headers as request properties of URLConnection
- for (Iterator iter = headers.keySet().iterator(); iter.hasNext();) {
- String headerKey = (String) iter.next();
- String headerValue = (String) headers.get(headerKey);
- String LogStr = "Req header " + headerKey + ": " + headers.get(headerKey);
- if (isBasicAuthenticationHeader(headerKey, headerValue)) {
- String credentials = headerValue.substring(6);
- byte [] bplaintextcredentials = Base64Utils. decode(credentials, true);
- String plaintextcredentials = new String(bplaintextcredentials);
- String uid = plaintextcredentials.substring(0,plaintextcredentials.indexOf(":"));
- String pwd = plaintextcredentials.substring(plaintextcredentials.indexOf(":")+1);
- //Sollte AuthorizationInfo vom HTTPClient benutzt werden: cb.addBasicAuthorization(publicURLPrefix, uid, pwd);
- //deactivate following line for security
- //if (INTERNAL_DEBUG && Logger.isDebugEnabled()) LogStr = LogStr + " >UserID:Password< >" + uid + ":" + pwd + "<";
- }
- conn.setRequestProperty(headerKey, headerValue);
- if (INTERNAL_DEBUG) Logger.debug(LogStr);
- }
-
- StringWriter sb = new StringWriter();
-
- // Write out parameters into output stream of URLConnection.
- // On GET request, do not send parameters in any case,
- // otherwise HttpURLConnection would send a POST.
- if (!"get".equalsIgnoreCase(req.getMethod()) && !parameters.isEmpty()) {
- boolean firstParam = true;
- String parameter[] = new String[2];
- for (Iterator iter = parameters.iterator(); iter.hasNext();) {
- parameter = (String[]) iter.next();
- String paramName = parameter[0];
- String paramValue = parameter[1];
- if (firstParam)
- firstParam = false;
- else
- sb.write("&");
- sb.write(paramName);
- sb.write("=");
- sb.write(paramValue);
- if (INTERNAL_DEBUG) Logger.debug("Req param " + paramName + ": " + paramValue);
- }
- }
-
- // For WebDAV and POST: copy content
- if (!"get".equalsIgnoreCase(req.getMethod())) {
- if (INTERNAL_DEBUG && !"post".equalsIgnoreCase(req.getMethod())) Logger.debug("---- WEBDAV ---- copying content");
- try {
- OutputStream out = conn.getOutputStream();
- InputStream in = req.getInputStream();
- if (!parameters.isEmpty()) out.write(sb.toString().getBytes()); //Parameter nicht mehr mittels Printwriter schreiben
- copyStream(in, out, null, req.getMethod());
- out.flush();
- out.close();
- } catch (IOException e) {
- if (!"post".equalsIgnoreCase(req.getMethod()))
- Logger.debug("---- WEBDAV ---- streamcopy problem");
- else
- Logger.debug("---- POST ---- streamcopy problem");
- }
- }
-
- // connect
- if (INTERNAL_DEBUG) Logger.debug("Connect Request");
- conn.connect();
- if (INTERNAL_DEBUG) Logger.debug("Connect Response");
-
- // check login tries
- if (conn.getResponseCode()==HttpURLConnection.HTTP_UNAUTHORIZED) {
- int loginTry = getLoginTry(req);
- req.getSession().setAttribute(ATT_OA_LOGINTRY, Integer.toString(loginTry));
- if (loginTry > MAX_OA_LOGINTRY) {
- Logger.debug("Found 401 UNAUTHORIZED, maximum tries exceeded; leaving...");
- cb.disconnect(conn);
- return -401;
- }
- }
-
-
-
- if (conn.getResponseCode()==HttpURLConnection.HTTP_UNAUTHORIZED && OAConfiguration.BINDUNG_FULL.equals(originBinding)) {
- Logger.debug("Found 401 UNAUTHORIZED, leaving...");
- cb.disconnect(conn);
- return conn.getResponseCode();
- }
-
-
- resp.setStatus(conn.getResponseCode());
- //Issue by Gregor Karlinger - content type was annotated twice
- //resp.setContentType(conn.getContentType());
-
- if (loginHeaders != null && (conn.getResponseCode()==HttpURLConnection.HTTP_OK || conn.getResponseCode()==HttpURLConnection.HTTP_MOVED_TEMP) && req.getSession().getAttribute(ATT_OA_AUTHORIZATION_HEADER)==null) {
- req.getSession().setAttribute(ATT_OA_AUTHORIZATION_HEADER, authorizationvalue);
- Logger.debug("Login OK. Saving authorization header to remember in further requests");
- }
-
- // Read response headers
- // Omit response header "content-length" if response header "Transfer-encoding: chunked" is set.
- // Otherwise, the connection will not be kept alive, resulting in subsequent missing requests.
- // See JavaDoc of javax.servlet.http.HttpServlet:
- // When using HTTP 1.1 chunked encoding (which means that the response has a Transfer-Encoding header), do not set the Content-Length header.
- Vector respHeaders = new Vector();
-
- boolean chunked = false;
- String contentLengthKey = null;
- String transferEncodingKey = null;
- int i = 1;
- String headerKey;
- String loginType = (String) req.getSession().getAttribute(ATT_OA_LOGINTYPE);
- while ((headerKey = conn.getHeaderFieldKey(i)) != null) {
- String headerValue = conn.getHeaderField(i);
-
- if (headerKey.equalsIgnoreCase("WWW-Authenticate")) {
- int start = headerValue.indexOf("Basic realm=\"");
- boolean requestsBasicAuth = headerValue.substring(start).startsWith("Basic realm=\"");
- if (requestsBasicAuth) {
- headerValue = "Basic realm=\"" + publicURLPrefix + "\"";
-
- if ( OAConfiguration.BINDUNG_USERNAME.equals(originBinding) || OAConfiguration.BINDUNG_NOMATCH.equals(originBinding))
- headerValue = "Basic realm=\"Bitte Passwort eingeben\"";
- else if ("none".equals(originBinding)) {
- headerValue = "Basic realm=\"Bitte Benutzername und Passwort eingeben\"";
- }
- }
- }
-
-// // Ãœberschrift im Browser-Passworteingabedialog setzen (sonst ist der reale host eingetragen)
-// if (headerKey.equalsIgnoreCase("WWW-Authenticate") && headerValue.startsWith("Basic realm=\"")) {
-// headerValue = "Basic realm=\"" + publicURLPrefix + "\"";
-// if (OAConfiguration.BINDUNG_USERNAME.equals(originBinding) || OAConfiguration.BINDUNG_NOMATCH.equals(originBinding)) {
-// headerValue = "Basic realm=\"Bitte Passwort eingeben\"";
-// } else if (OAConfiguration.BINDUNG_NONE.equals(originBinding)) {
-// headerValue = "Basic realm=\"Bitte Benutzername und Passwort eingeben\"";
-// }
-// }
-
- String respHeader[] = new String[2];
- if ((conn.getResponseCode()==HttpURLConnection.HTTP_UNAUTHORIZED) && headerKey.equalsIgnoreCase("content-length")) {
- //alter the unauthorized message with template for login
- //TODO: supply a special login form on unauthorized messages with bindings!=full
- headerValue = Integer.toString(RET_401_MSG.length());
- }
- respHeader[0]= headerKey;
- respHeader[1]= headerValue;
-
- if (!(OAConfiguration.BINDUNG_FULL.equals(originBinding) && OAConfiguration.LOGINTYPE_STATELESS.equals(loginType) && headerKey.equalsIgnoreCase("WWW-Authenticate") && headerValue.startsWith("Basic realm=\""))) {
- respHeaders.add(respHeader);
- if (INTERNAL_DEBUG) Logger.debug("Resp header " + headerKey + ": " + headerValue);
- } else {
- Logger.debug("Resp header ---REMOVED--- " + headerKey + ": " + headerValue);
- }
- if (isTransferEncodingChunkedHeader(headerKey, headerValue) || "content-length".equalsIgnoreCase(headerKey)) {
- respHeaders.remove(respHeader);
- Logger.debug("Resp header " + headerKey + " REMOVED");
- }
-
- i++;
- }
-
-
- String headerValue;
- String respHeader[] = new String[2];
-
- //write out all Responseheaders
- for (Iterator iter = respHeaders.iterator(); iter.hasNext();) {
- respHeader = (String[]) iter.next();
- headerKey = respHeader[0];
- headerValue = respHeader[1];
- resp.addHeader(headerKey, headerValue);
- }
-
- //Logger.debug(">>>> Copy Content");
- //Logger.debug(" from ()" + conn.getURL());
- //Logger.debug(" to (" + req.getRemoteAddr() + ":"+ ") " +req.getRequestURL());
-
- // read response stream
- Logger.debug("Resp from " + conn.getURL().toString() + ": status " + conn.getResponseCode());
- // Load content unless the server lets us know that the content is NOT MODIFIED...
- if (conn.getResponseCode()!=HttpURLConnection.HTTP_NOT_MODIFIED ) {
- BufferedInputStream respIn = new BufferedInputStream(conn.getInputStream());
- //Logger.debug("Got Inputstream");
- BufferedOutputStream respOut = new BufferedOutputStream(resp.getOutputStream());
- //Logger.debug("Got Outputstream");
-
- byte [] buffer = new byte[4096];
- if (respOut != null) {
- int bytesRead;
- while ((bytesRead = respIn.read(buffer)) >= 0) {
- if (conn.getResponseCode()!=HttpURLConnection.HTTP_UNAUTHORIZED) respOut.write(buffer, 0, bytesRead);
- }
- } else {
- while (respIn.read(buffer) >= 0);
- }
-
-
- /*
- int ch;
- StringBuffer strBuf = new StringBuffer("");
- while ((ch = respIn.read()) >= 0) {
- if (conn.getResponseCode()!=HttpURLConnection.HTTP_UNAUTHORIZED) respOut.write(ch);
- strBuf.append((char)ch);
- }
- Logger.debug("Resp Content:");
- if (strBuf.toString().length()>500)
- Logger.debug(strBuf.toString().substring(0,500));
- else
- Logger.debug(strBuf.toString());
- */
-
-
- if (conn.getResponseCode()==HttpURLConnection.HTTP_UNAUTHORIZED) {
- respOut.write(RET_401_MSG.getBytes());
- }
- respOut.flush();
- respOut.close();
- respIn.close();
- if (conn.getResponseCode()==HttpURLConnection.HTTP_UNAUTHORIZED) {
- Logger.debug("Found 401 UNAUTHORIZED...");
- cb.disconnect(conn);
- return conn.getResponseCode();
- }
- } else {
- //if (conn.getResponseCode()==HttpURLConnection.HTTP_NOT_MODIFIED)
- Logger.debug("Found 304 NOT MODIFIED...");
- }
-
- cb.disconnect(conn);
- Logger.debug("Request done");
-
- return conn.getResponseCode();
-}
-
-/**
- * Gets the current amount of the login try at the online application
- *
- * @param req the HttpServletRequest
- * @return the number off the current login try
- */
-private int getLoginTry(HttpServletRequest req) {
- String oa_loginTry = (String) req.getSession().getAttribute(ATT_OA_LOGINTRY);
- int loginTry = 1;
- if (oa_loginTry!=null) loginTry = Integer.parseInt(oa_loginTry)+1;
- return loginTry;
-}
-/**
- * Determines whether a HTTP header is a basic authentication header of the kind "Authorization: Basic ..."
- *
- * @param headerKey header name
- * @param headerValue header value
- * @return true for a basic authentication header
- */
-private boolean isBasicAuthenticationHeader(String headerKey, String headerValue) {
- if (!"authorization".equalsIgnoreCase(headerKey))
- return false;
- if (headerValue.length() < "basic".length())
- return false;
- String authenticationSchema = headerValue.substring(0, "basic".length());
- return "basic".equalsIgnoreCase(authenticationSchema);
-}
-/**
- * Determines whether a basic authentication header of the kind "Authorization: Basic ..."
- * is included in a HTTP request
- * @param req HTTP request
- * @return true for a basic authentication header provided
- */
-private boolean isBasicAuthenticationHeaderProvided(HttpServletRequest req) {
- for (Enumeration enu = req.getHeaderNames(); enu.hasMoreElements();) {
- String headerKey = (String) enu.nextElement();
- String headerValue = req.getHeader(headerKey);
- if (isBasicAuthenticationHeader(headerKey, headerValue))
- return true;
- }
- return false;
-}
-/**
- * Determines whether a HTTP header is "Transfer-encoding" header with value containing "chunked"
- *
- * @param headerKey header name
- * @param headerValue header value
- * @return true for a "Transfer-encoding: chunked" header
- */
-private boolean isTransferEncodingChunkedHeader(String headerKey, String headerValue) {
- if (!"transfer-encoding".equalsIgnoreCase(headerKey))
- return false;
- return headerValue.indexOf("chunked") >= 0 || headerValue.indexOf("Chunked") >= 0 || headerValue.indexOf("CHUNKED") >= 0;
-}
-
-/**
- * Calls the web application initializer.
- *
- * @see javax.servlet.Servlet#init(ServletConfig)
- */
-public void init(ServletConfig servletConfig) throws ServletException {
- super.init(servletConfig);
- try {
- MOAIDProxyInitializer.initialize();
- Logger.info(MOAIDMessageProvider.getInstance().getMessage("proxy.00", null));
- }
- catch (Exception ex) {
- Logger.fatal(MOAIDMessageProvider.getInstance().getMessage("proxy.06", null), ex);
- throw new ServletException(ex);
- }
-}
-
-/**
- * Handles an error. <br>
- * <ul>
- * <li>Logs the error</li>
- * <li>Places error message and exception thrown into the request
- * as request attributes (to be used by <code>"/errorpage-proxy.jsp"</code>)</li>
- * <li>Sets HTTP status 500 (internal server error)</li>
- * </ul>
- *
- * @param errorMessage error message
- * @param exceptionThrown exception thrown
- * @param req servlet request
- * @param resp servlet response
- */
-protected void handleError(
- String errorMessage, Throwable exceptionThrown, HttpServletRequest req, HttpServletResponse resp) {
-
-
- if(null != errorMessage) {
- Logger.error(errorMessage);
- req.setAttribute("ErrorMessage", errorMessage );
- }
-
- if (null != exceptionThrown) {
- if(null == errorMessage) errorMessage = exceptionThrown.getMessage();
- Logger.error(errorMessage, exceptionThrown);
- //req.setAttribute("ExceptionThrown", exceptionThrown);
- }
-
- if (Logger.isDebugEnabled()) {
- req.setAttribute("LogLevel", "debug");
- }
-
- //forward this to errorpage-proxy.jsp where the HTML error page is generated
- ServletContext context = getServletContext();
- RequestDispatcher dispatcher = context.getRequestDispatcher("/errorpage-proxy.jsp");
- try {
- dispatcher.forward(req, resp);
- } catch (ServletException e) {
- Logger.error(e);
- } catch (IOException e) {
- Logger.error(e);
- }
-
-}
-
-
-// * taken from iaik.utils.util.copyStream:
-/**
- * Reads all data (until EOF is reached) from the given source to the
- * destination stream. If the destination stream is null, all data is dropped.
- * It uses the given buffer to read data and forward it. If the buffer is
- * null, this method allocates a buffer.
- *
- * @param source The stream providing the data.
- * @param destination The stream that takes the data. If this is null, all
- * data from source will be read and discarded.
- * @param buffer The buffer to use for forwarding. If it is null, the method
- * allocates a buffer.
- * @exception IOException If reading from the source or writing to the
- * destination fails.
- */
-private static void copyStream(InputStream source, OutputStream destination, byte[] buffer, String method) throws IOException {
- if (source == null) {
- throw new NullPointerException("Argument \"source\" must not be null.");
- }
- if (buffer == null) {
- buffer = new byte[4096];
- }
-
- if (destination != null) {
- int bytesRead;
- while ((bytesRead = source.read(buffer)) >= 0) {
- destination.write(buffer, 0, bytesRead);
- //if (method.equalsIgnoreCase("POST")) Logger.debug(buffer.toString());
- }
- } else {
- while (source.read(buffer) >= 0);
- }
-}
-
-private static void generateErrorAndRedirct(HttpServletResponse resp, String errorURL, String message) {
- try {
- errorURL = addURLParameter(errorURL, PARAM_ERRORMASSAGE,
- URLEncoder.encode(message, "UTF-8"));
-
- } catch (UnsupportedEncodingException e) {
- errorURL = addURLParameter(errorURL, PARAM_ERRORMASSAGE, "Fehlermeldung%20konnte%20nicht%20%C3%BCbertragen%20werden.");
- }
-
- errorURL = resp.encodeRedirectURL(errorURL);
- resp.setContentType("text/html");
- resp.setStatus(302);
- resp.addHeader("Location", errorURL);
-}
-
-protected static String addURLParameter(String url, String paramname,
- String paramvalue) {
- String param = paramname + "=" + paramvalue;
- if (url.indexOf("?") < 0)
- return url + "?" + param;
- else
- return url + "&" + param;
-}
-
-}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AssertionStorage.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AssertionStorage.java
index 2dbcc912b..704adc80d 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AssertionStorage.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AssertionStorage.java
@@ -75,8 +75,7 @@ public class AssertionStorage {
//store AssertionStore element to Database
try {
MOASessionDBUtils.saveOrUpdate(element);
- Logger.info("Sessioninformation with ID=" + artifact + " is stored in Database");
-
+ Logger.info(assertion.getClass().getName() + " with ID: " + artifact + " is stored in Database");
} catch (MOADatabaseException e) {
Logger.warn("Sessioninformation could not be stored.");
throw new MOADatabaseException(e);
@@ -152,7 +151,7 @@ public class AssertionStorage {
for(AssertionStore result : results) {
try {
cleanDelete(result);
- Logger.info("Remove sessioninformation with ID=" + result.getArtifact()
+ Logger.info("Remove stored information with ID: " + result.getArtifact()
+ " after timeout.");
} catch (HibernateException e){
@@ -169,7 +168,7 @@ public class AssertionStorage {
try {
AssertionStore element = searchInDatabase(artifact);
cleanDelete(element);
- Logger.info("Remove sessioninformation with ID" + artifact);
+ Logger.info("Remove stored information with ID: " + artifact);
} catch (MOADatabaseException e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AuthenticationSessionStoreage.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AuthenticationSessionStoreage.java
index 4288f48ad..4b4b5ddc5 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AuthenticationSessionStoreage.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/AuthenticationSessionStoreage.java
@@ -33,7 +33,10 @@ import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
+import com.fasterxml.jackson.core.JsonProcessingException;
+
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
+import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionExtensions;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
@@ -42,8 +45,9 @@ import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionSto
import at.gv.egovernment.moa.id.commons.db.dao.session.OASessionStore;
import at.gv.egovernment.moa.id.commons.db.dao.session.OldSSOSessionIDStore;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.commons.utils.JsonMapper;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.data.EncryptedData;
import at.gv.egovernment.moa.id.data.SLOInformationInterface;
@@ -60,6 +64,8 @@ public class AuthenticationSessionStoreage {
//private static HashMap<String, AuthenticationSession> sessionStore = new HashMap<String, AuthenticationSession>();
+ private static JsonMapper mapper = new JsonMapper();
+
public static boolean isAuthenticated(String moaSessionID) {
AuthenticatedSessionStore session;
@@ -73,34 +79,44 @@ public class AuthenticationSessionStoreage {
}
}
- public static AuthenticationSession createSession(String pendingRequestID) throws MOADatabaseException, BuildException {
+ public static AuthenticationSession createSession(IRequest target) throws MOADatabaseException, BuildException {
String id = Random.nextRandom();
-
- AuthenticatedSessionStore dbsession = new AuthenticatedSessionStore();
- dbsession.setSessionid(id);
- dbsession.setAuthenticated(false);
+ try {
+ AuthenticatedSessionStore dbsession = new AuthenticatedSessionStore();
+ dbsession.setSessionid(id);
+ dbsession.setAuthenticated(false);
- //set Timestamp in this state, because automated timestamp generation is buggy in Hibernate 4.2.1
- Date now = new Date();
- dbsession.setCreated(now);
- dbsession.setUpdated(now);
+ //set Timestamp in this state, because automated timestamp generation is buggy in Hibernate 4.2.1
+ Date now = new Date();
+ dbsession.setCreated(now);
+ dbsession.setUpdated(now);
- dbsession.setPendingRequestID(pendingRequestID);
+ dbsession.setPendingRequestID(target.getRequestID());
- AuthenticationSession session = new AuthenticationSession(id, now);
- encryptSession(session, dbsession);
+ //set additional session informations
+ AuthenticationSessionExtensions sessionExt = new AuthenticationSessionExtensions();
+ sessionExt.setUniqueSessionId(target.getSessionIdentifier());
+ dbsession.setAdditionalInformation(mapper.serialize(sessionExt));
- //store AssertionStore element to Database
- try {
+ AuthenticationSession session = new AuthenticationSession(id, now);
+ encryptSession(session, dbsession);
+
+ //store AssertionStore element to Database
MOASessionDBUtils.saveOrUpdate(dbsession);
- Logger.info("MOASession with sessionID=" + id + " is stored in Database");
+ Logger.info("Create MOASession with sessionID: " + id);
+
+ return session;
} catch (MOADatabaseException e) {
Logger.warn("MOASession could not be created.");
throw new MOADatabaseException(e);
+
+ } catch (JsonProcessingException e) {
+ Logger.warn("Extended session information can not be stored.", e);
+ throw new MOADatabaseException(e);
+
}
-
- return session;
+
}
public static AuthenticationSession getSession(String sessionID) throws MOADatabaseException {
@@ -118,6 +134,45 @@ public class AuthenticationSessionStoreage {
throw new MOADatabaseException("MOASession deserialization-exception");
}
}
+
+ public static AuthenticationSessionExtensions getAuthenticationSessionExtensions(String sessionID) throws MOADatabaseException {
+ AuthenticatedSessionStore dbsession = searchInDatabase(sessionID, true);
+
+ if (MiscUtil.isNotEmpty(dbsession.getAdditionalInformation())) {
+ try {
+ return (AuthenticationSessionExtensions)mapper.deserialize(dbsession.getAdditionalInformation(),
+ AuthenticationSessionExtensions.class);
+
+ } catch (Exception e) {
+ Logger.warn("Extended session information extraction FAILED!", e);
+ }
+ }
+ return null;
+
+ }
+
+ public static void setAuthenticationSessionExtensions(String sessionID, AuthenticationSessionExtensions sessionExtensions) throws MOADatabaseException {
+ try {
+ AuthenticatedSessionStore dbsession = searchInDatabase(sessionID, true);
+
+ dbsession.setAdditionalInformation(
+ mapper.serialize(sessionExtensions));
+
+ MOASessionDBUtils.saveOrUpdate(dbsession);
+ Logger.debug("MOASession with sessionID=" + sessionID + " is stored in Database");
+
+
+ } catch (MOADatabaseException e) {
+ Logger.warn("MOASession could not be stored.");
+ throw new MOADatabaseException(e);
+
+ } catch (JsonProcessingException e) {
+ Logger.warn("Extended session information can not be stored.", e);
+ throw new MOADatabaseException("Extended session information can not be stored.", e);
+
+ }
+
+ }
public static void storeSession(AuthenticationSession session) throws MOADatabaseException, BuildException {
storeSession(session, null);
@@ -385,8 +440,12 @@ public class AuthenticationSessionStoreage {
//send transaction
tx.commit();
- Logger.debug("Add SSO-Session login information for OA: " + OAUrl
- + " and AssertionID: " + SLOInfo.getSessionIndex());
+ if (SLOInfo != null)
+ Logger.info("Add SSO-Session login information for OA: " + OAUrl
+ + " and AssertionID: " + SLOInfo.getSessionIndex());
+ else
+ Logger.info("Add SSO-Session login information for OA: " + OAUrl);
+
}
} catch (MOADatabaseException e) {
@@ -750,7 +809,7 @@ public class AuthenticationSessionStoreage {
idp.setIdpurlprefix(req.getInterfederationResponse().getEntityID());
try {
- OAAuthParameter oa = AuthConfigurationProvider.getInstance().
+ OAAuthParameter oa = AuthConfigurationProviderFactory.getInstance().
getOnlineApplicationParameter(idp.getIdpurlprefix());
idp.setStoreSSOInformation(oa.isInterfederationSSOStorageAllowed());
@@ -772,7 +831,7 @@ public class AuthenticationSessionStoreage {
//store AssertionStore element to Database
try {
MOASessionDBUtils.saveOrUpdate(dbsession);
- Logger.info("MOASession with sessionID=" + id + " is stored in Database");
+ Logger.debug("MOASession with sessionID=" + id + " is stored in Database");
} catch (MOADatabaseException e) {
Logger.warn("MOASession could not be created.");
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/AbstractEncrytionUtil.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/AbstractEncrytionUtil.java
index f246c55e1..b0d166951 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/AbstractEncrytionUtil.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/AbstractEncrytionUtil.java
@@ -42,7 +42,6 @@ import javax.crypto.spec.SecretKeySpec;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.id.auth.exception.DatabaseEncryptionException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
import at.gv.egovernment.moa.id.data.EncryptedData;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ConfigurationEncrytionUtil.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ConfigurationEncrytionUtil.java
index 10221604c..19da7ed9e 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ConfigurationEncrytionUtil.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ConfigurationEncrytionUtil.java
@@ -23,7 +23,7 @@
package at.gv.egovernment.moa.id.util;
import at.gv.egovernment.moa.id.auth.exception.DatabaseEncryptionException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
public class ConfigurationEncrytionUtil extends AbstractEncrytionUtil {
@@ -34,7 +34,7 @@ public class ConfigurationEncrytionUtil extends AbstractEncrytionUtil {
public static ConfigurationEncrytionUtil getInstance() {
if (instance == null) {
try {
- key = AuthConfigurationProvider.getInstance().getMOAConfigurationEncryptionKey();
+ key = AuthConfigurationProviderFactory.getInstance().getMOAConfigurationEncryptionKey();
instance = new ConfigurationEncrytionUtil();
} catch (Exception e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java
index 520b81b17..0b517e783 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java
@@ -37,7 +37,7 @@ import org.w3c.dom.NodeList;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java
index 5eb55317a..47010a735 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java
@@ -64,16 +64,15 @@ import org.xml.sax.SAXException;
import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
-import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
import at.gv.egovernment.moa.util.StringUtils;
-public class ParamValidatorUtils implements MOAIDAuthConstants{
+public class ParamValidatorUtils extends MOAIDAuthConstants{
/**
* Checks if the given target is valid
@@ -261,7 +260,7 @@ public class ParamValidatorUtils implements MOAIDAuthConstants{
* @param template
* @return
*/
- public static boolean isValidTemplate(HttpServletRequest req, String template, List<TemplateType> oaSlTemplates) {
+ public static boolean isValidTemplate(HttpServletRequest req, String template, List<String> oaSlTemplates) {
Logger.debug("Ueberpruefe Parameter Template bzw. bkuSelectionTemplateURL");
@@ -289,14 +288,14 @@ public class ParamValidatorUtils implements MOAIDAuthConstants{
}
else {
//check against configured trustet template urls
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authConf = AuthConfigurationProviderFactory.getInstance();
List<String> trustedTemplateURLs = authConf.getSLRequestTemplates();
//get OA specific template URLs
if (oaSlTemplates != null && oaSlTemplates.size() > 0) {
- for (TemplateType el : oaSlTemplates)
- if (MiscUtil.isNotEmpty(el.getURL()))
- trustedTemplateURLs.add(el.getURL());
+ for (String el : oaSlTemplates)
+ if (MiscUtil.isNotEmpty(el))
+ trustedTemplateURLs.add(el);
}
boolean b = trustedTemplateURLs.contains(template);
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java
index 2d9fb9196..22a021d99 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java
@@ -83,7 +83,7 @@ public class Random {
ByteBuffer bb = ByteBuffer.wrap(b);
long l = bb.getLong();
- return "" + l;
+ return "" + Math.abs(l);
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SSLUtils.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SSLUtils.java
index 81abe3f5a..af3424881 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SSLUtils.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SSLUtils.java
@@ -70,7 +70,7 @@ import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.ConfigurationProvider;
import at.gv.egovernment.moa.id.config.ConnectionParameter;
import at.gv.egovernment.moa.id.config.ConnectionParameterInterface;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
/**
@@ -132,8 +132,8 @@ public class SSLUtils {
conf.getCertstoreDirectory(),
trustStoreURL,
acceptedServerCertURL,
- AuthConfigurationProvider.getInstance().getDefaultChainingMode(),
- AuthConfigurationProvider.getInstance().isTrustmanagerrevoationchecking(),
+ AuthConfigurationProviderFactory.getInstance().getDefaultChainingMode(),
+ AuthConfigurationProviderFactory.getInstance().isTrustmanagerrevoationchecking(),
connParam.getClientKeyStore(),
connParam.getClientKeyStorePassword(),
"pkcs12");
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SessionEncrytionUtil.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SessionEncrytionUtil.java
index 8660f7c09..498f8408b 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SessionEncrytionUtil.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/SessionEncrytionUtil.java
@@ -23,7 +23,7 @@
package at.gv.egovernment.moa.id.util;
import at.gv.egovernment.moa.id.auth.exception.DatabaseEncryptionException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
public class SessionEncrytionUtil extends AbstractEncrytionUtil {
@@ -34,7 +34,7 @@ public class SessionEncrytionUtil extends AbstractEncrytionUtil {
public static SessionEncrytionUtil getInstance() {
if (instance == null) {
try {
- key = AuthConfigurationProvider.getInstance().getMOASessionEncryptionKey();
+ key = AuthConfigurationProviderFactory.getInstance().getMOASessionEncryptionKey();
instance = new SessionEncrytionUtil();
} catch (Exception e) {
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISMandate.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISMandate.java
index 1edb8d1f3..8e42f0df7 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISMandate.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISMandate.java
@@ -48,6 +48,12 @@ package at.gv.egovernment.moa.id.util.client.mis.simple;
import java.io.Serializable;
+import org.w3c.dom.Element;
+
+import at.gv.e_government.reference.namespace.mandates._20040701_.Mandate;
+import at.gv.egovernment.moa.id.util.MandateBuilder;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.DOMUtils;
import at.gv.egovernment.moa.util.MiscUtil;
public class MISMandate implements Serializable{
@@ -91,6 +97,28 @@ public class MISMandate implements Serializable{
public byte[] getMandate() {
return mandate;
}
+
+ public Element getMandateDOM() {
+ try {
+ byte[] byteMandate = mandate;
+ String stringMandate = new String(byteMandate);
+ return DOMUtils.parseDocument(stringMandate, false, null, null).getDocumentElement();
+
+ }
+ catch (Throwable e) {
+ Logger.warn("Mandate content could not be generated from MISMandate.");
+ return null;
+ }
+ }
+
+ public Mandate getMandateJaxB() {
+ Element domMandate = getMandateDOM();
+ if (domMandate != null)
+ return MandateBuilder.buildMandate(domMandate);
+
+ return null;
+ }
+
public void setMandate(byte[] mandate) {
this.mandate = mandate;
}
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/legacy/LegacyHelper.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/legacy/LegacyHelper.java
index 9ce44fe15..dd4e67bcd 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/legacy/LegacyHelper.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/legacy/LegacyHelper.java
@@ -30,7 +30,7 @@ import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
-public class LegacyHelper implements MOAIDAuthConstants{
+public class LegacyHelper extends MOAIDAuthConstants{
public static boolean isUseMandateRequested(HttpServletRequest req) throws WrongParametersException {
diff --git a/id/server/idserverlib/src/main/resources/at/gv/egovernment/moa/id/auth/modules/internal/DefaultAuthentication.process.xml b/id/server/idserverlib/src/main/resources/at/gv/egovernment/moa/id/auth/modules/internal/DefaultAuthentication.process.xml
index 3860ddef4..31f8f68b6 100644
--- a/id/server/idserverlib/src/main/resources/at/gv/egovernment/moa/id/auth/modules/internal/DefaultAuthentication.process.xml
+++ b/id/server/idserverlib/src/main/resources/at/gv/egovernment/moa/id/auth/modules/internal/DefaultAuthentication.process.xml
@@ -9,9 +9,11 @@
<pd:Task id="verifyIdentityLink" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.VerifyIdentityLinkTask" async="true" />
<pd:Task id="verifyAuthBlock" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.VerifyAuthenticationBlockTask" async="true" />
<pd:Task id="verifyCertificate" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.VerifyCertificateTask" async="true" />
- <pd:Task id="getMISSessionID" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.GetMISSessionIDTask" async="true" />
+ <pd:Task id="getMISMandate" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.GetMISSessionIDTask" async="true" />
<pd:Task id="certificateReadRequest" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.CertificateReadRequestTask" />
<pd:Task id="prepareAuthBlockSignature" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.PrepareAuthBlockSignatureTask" />
+ <pd:Task id="prepareGetMISMandate" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.PrepareGetMISMandateTask" />
+ <pd:Task id="finalizeAuthentication" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.FinalizeAuthenticationTask" />
<pd:Task id="getForeignID" class="at.gv.egovernment.moa.id.auth.modules.internal.tasks.GetForeignIDTask" async="true" />
<!-- Process is triggered either by GenerateIFrameTemplateServlet (upon bku selection) or by AuthenticationManager (upon legacy authentication start using legacy parameters. -->
@@ -33,12 +35,16 @@
<pd:Transition from="verifyCertificate" to="verifyAuthBlock" conditionExpression="ctx['useMandate']" />
<pd:Transition from="verifyCertificate" to="getForeignID" />
- <pd:Transition from="verifyAuthBlock" to="getMISSessionID" conditionExpression="ctx['useMandate']" />
- <pd:Transition from="verifyAuthBlock" to="end" />
+ <pd:Transition from="verifyAuthBlock" to="prepareGetMISMandate" conditionExpression="ctx['useMandate']" />
+ <pd:Transition from="verifyAuthBlock" to="finalizeAuthentication" />
- <pd:Transition from="getMISSessionID" to="end" />
- <pd:Transition from="getForeignID" to="end" />
+ <pd:Transition from="prepareGetMISMandate" to="getMISMandate" />
+
+ <pd:Transition from="getMISMandate" to="finalizeAuthentication" />
+ <pd:Transition from="getForeignID" to="finalizeAuthentication" />
+ <pd:Transition from="finalizeAuthentication" to="end" />
+
<pd:EndEvent id="end" />
</pd:ProcessDefinition>
diff --git a/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml b/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml
new file mode 100644
index 000000000..206fde87d
--- /dev/null
+++ b/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <context:property-placeholder location="${moa.id.configuration}"/>
+
+ <bean id="moaidauthconfig" class="at.gv.egovernment.moa.id.config.auth.PropertyBasedAuthConfigurationProvider"/>
+
+ <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="true" destroy-method="close">
+ <aop:scoped-proxy/>
+ <property name="driverClassName" value="${configuration.hibernate.connection.driver_class}" />
+ <property name="url" value="${configuration.hibernate.connection.url}"/>
+ <property name="username" value="${configuration.hibernate.connection.username}" />
+ <property name="password" value="${configuration.hibernate.connection.password}" />
+
+ <property name="connectionProperties" value="${configuration.dbcp.connectionProperties}" />
+ <property name="initialSize" value="${configuration.dbcp.initialSize}" />
+ <property name="maxActive" value="${configuration.dbcp.maxActive}" />
+ <property name="maxIdle" value="${configuration.dbcp.maxIdle}" />
+ <property name="minIdle" value="${configuration.dbcp.minIdle}" />
+ <property name="maxWait" value="${configuration.dbcp.maxWaitMillis}" />
+ <property name="testOnBorrow" value="${configuration.dbcp.testOnBorrow}" />
+ <property name="testOnReturn" value="${configuration.dbcp.testOnReturn}" />
+ <property name="testWhileIdle" value="${configuration.dbcp.testWhileIdle}" />
+ <property name="validationQuery" value="SELECT 1" />
+ </bean>
+
+ <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="${configuration.hibernate.show_sql}" />
+ <property name="generateDdl" value="${configuration.jpaVendorAdapter.generateDdl}" />
+ <property name="databasePlatform" value="${configuration.hibernate.dialect}" />
+ </bean>
+
+
+</beans> \ No newline at end of file
diff --git a/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties b/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties
index 0d91fc2c0..aca37f072 100644
--- a/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties
+++ b/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties
@@ -44,11 +44,13 @@ auth.23=Das BKU-Selektion Template entspricht nicht der Spezifikation von MOA-ID
auth.24=Das Send-Assertion Template entspricht nicht der Spezifikation von MOA-ID 2.x.
auth.25=Fehler beim validieren der SZR-Gateway Response.
auth.26=SessionID unbekannt.
-auth.27=Federated authentication FAILED.
+auth.27=Federated authentication FAILED! Assertion from {0} IDP is not valid.
+auth.28=Transaktion {0} kann nicht weitergef\u00FChrt werden. Wahrscheinlich wurde ein TimeOut erreicht.
+auth.29=Federated authentication FAILED! Can not build authentication request for IDP {0}
init.00=MOA ID Authentisierung wurde erfolgreich gestartet
init.01=Fehler beim Aktivieren des IAIK-JCE/JSSE/JDK1.3 Workaround\: SSL ist m\u00F6glicherweise nicht verf\u00FCgbar
-init.02=Fehler beim Starten des Service MOA ID Authentisierung
+init.02=Fehler beim Starten des Service MOA-ID-Auth
init.04=Fehler beim Datenbankzugriff mit der SessionID {0}
@@ -74,7 +76,9 @@ config.18=Keine MOA-ID 2.x Konfiguration gefunden.
config.19=Kein Schl\u00FCssel f\u00FCr die Resignierung der Personenbindung gefunden.
config.20=Umgebungsvariable "moa.id.proxy.configuration" nicht gesetzt
config.21=F\u00FCr diese Online Applikation sind keine Vollmachtsprofile hinterlegt.
-config.22=F\u00FCr den Interfederation-Gateway mit der ID {0} ist kein Endpunkt zur Weiterleitung konfiguriert.
+config.22=F\u00FCr den Interfederation-Gateway mit der ID {0} ist kein Endpunkt zur Weiterleitung konfiguriert.
+config.23=Fehler beim initialisieren von OpenSAML
+config.24=MOA-ID-Auth Configfile {1} does not start with {0} prefix.
parser.00=Leichter Fehler beim Parsen: {0}
parser.01=Fehler beim Parsen: {0}
diff --git a/id/server/idserverlib/src/main/resources/resources/properties/protocol_response_statuscodes_de.properties b/id/server/idserverlib/src/main/resources/resources/properties/protocol_response_statuscodes_de.properties
index eeacdc627..fa332f0c7 100644
--- a/id/server/idserverlib/src/main/resources/resources/properties/protocol_response_statuscodes_de.properties
+++ b/id/server/idserverlib/src/main/resources/resources/properties/protocol_response_statuscodes_de.properties
@@ -25,6 +25,8 @@ auth.24=9001
auth.25=1109
auth.26=1100
auth.27=4401
+auth.28=1100
+auth.29=4401
init.00=9199
init.01=9199
@@ -54,6 +56,8 @@ config.19=9199
config.20=9199
config.21=9006
config.22=9008
+config.23=9199
+config.24=9199
parser.00=1101
parser.01=1101
diff --git a/id/server/idserverlib/src/main/resources/resources/templates/loginFormFull.html b/id/server/idserverlib/src/main/resources/resources/templates/loginFormFull.html
index e293d8456..123a23837 100644
--- a/id/server/idserverlib/src/main/resources/resources/templates/loginFormFull.html
+++ b/id/server/idserverlib/src/main/resources/resources/templates/loginFormFull.html
@@ -15,13 +15,17 @@
text-align: center;
background-color: #6B7B8B;
}
+
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU p {
font-size: 0.7em;
}
#localBKU input{
- font-size: 0.7em;
+ font-size: 0.85em;
/*border-radius: 5px;*/
}
@@ -142,6 +146,8 @@
margin-bottom: 10px;
}
+
+
#validation {
position: absolute;
bottom: 0px;
@@ -154,7 +160,10 @@
@media screen and (max-width: 205px) {
#localBKU p {
font-size: 0.6em;
- }
+ }
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.6em;
@@ -191,6 +200,9 @@
#localBKU p {
font-size: 0.7em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.7em;
@@ -227,6 +239,9 @@
#localBKU p {
font-size: 0.9em;
}
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
@@ -257,7 +272,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -288,7 +305,9 @@
#localBKU p {
font-size: 0.9em;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#localBKU input {
font-size: 0.8em;
min-width: 70px;
@@ -327,7 +346,9 @@
font-size: 100%;
background-color: #MAIN_BACKGOUNDCOLOR#;
}
-
+ .browserInfoButton{
+ color: rgb(128, 128, 128);
+ }
#page {
visibility: hidden;
margin-top: 0%;
@@ -464,12 +485,11 @@
}
#localBKU {
- padding-left: 5%;
- padding-right: 2%;
padding-bottom: 4%;
/*padding-top: 4%;*/
position: relative;
- clear: both;
+ clear: both;
+ text-align: center;
}
#bkukarte {
@@ -526,13 +546,13 @@
#localBKU input {
/* color: #BUTTON_COLOR#; */
- border: 0px;
+ /*border: 0px;*/
display: inline-block;
}
#localBKU input:hover, #localBKU input:focus, #localBKU input:active {
- text-decoration: underline;
+ /*text-decoration: underline;*/
}
#installJava, #BrowserNOK {
@@ -720,13 +740,63 @@
}
}
function onChangeChecks() {
- if (self.innerWidth < 650) {
+ if (top.innerWidth < 650) {
document.getElementById("moaidform").setAttribute("target","_parent");
} else {
document.getElementById("moaidform").removeAttribute("target");
}
}
+
+ function checkIfBrowserSupportsJava(){
+ console.log("Browser is Chrome: "+checkIfBrowserIsChrome());
+ console.log("Browser is Safari: "+checkIfBrowserIsSafari());
+ console.log("Browser is Edge: "+checkIfBrowserIsEdge());
+
+ var cnt = 0;
+
+ if(checkIfBrowserIsChrome())cnt++;
+ if(checkIfBrowserIsEdge())cnt++;
+ if(checkIfBrowserIsSafari())cnt++;
+
+ if(cnt==0 || cnt>1)//cnt>1 means perhaps wrong detection
+ return true;
+
+ var image = document.getElementById("bkuimage");
+ var srcatt = image.getAttribute("src");
+ var last = srcatt.substring(srcatt.lastIndexOf('/')+1);
+ srcatt = srcatt.replace(last,'online-bku-deactivated.png');
+ image.setAttribute("src",srcatt);
+
+
+ var button = document.getElementsByName("bkuButtonOnline")[0];
+ button.setAttribute("class","browserInfoButton");
+ button.setAttribute("title","Java wird nicht unterstützt, klicken für mehr Informationen.");
+ button.setAttribute("onClick","alert('Java wird von Ihrem Browser nicht unterstützt, ist jedoch für den Betrieb der Online Bürgerkartenumgebung notwendig.\\nWollen Sie dennoch die Online Bürgerkartenumgebung verwenden, wird zur Zeit Java noch von Firefox und MS Internet Explorer unterstützt. \\nAlternativ koennen Sie auch eine lokale Bürgerkartenumgebung verwenden, verfügbar unter www.buergerkarte.at.');");
+
+ return false;
+
+ }
+ function checkIfBrowserIsChrome(){
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = false;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && webstore_defined;
+ }
+ function checkIfBrowserIsEdge(){//edge also defines the chrome object, but not the webapp
+ var chrome_defined = !!window.chrome;//chrome object defined
+ var webstore_defined = true;
+ if(window.chrome){
+ webstore_defined = !!window.chrome.webstore;
+ }
+ return chrome_defined && !webstore_defined;
+ }
+ function checkIfBrowserIsSafari(){
+ var cond1 = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
+ return cond1;
+ }
/* function setSSOSelection() {
document.getElementById("useSSO").value = "false";
var checkbox = document.getElementById("SSOCheckBox");
@@ -754,7 +824,7 @@
</script>
<title>Anmeldung mittels Bürgerkarte oder Handy-Signatur</title>
</head>
-<body onload="onChangeChecks();" onresize="onChangeChecks();">
+<body onload="onChangeChecks();checkIfBrowserSupportsJava();" onresize="onChangeChecks();">
<div id="page">
<div id="page1" class="case selected-case" role="main">
<h2 class="OA_header" role="heading">Anmeldung an: #OAName#</h2>
@@ -779,7 +849,7 @@
</div>
<div id="bkuselectionarea">
<div id="bkukarte">
- <img class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
+ <img id="bkuimage" class="bkuimage" src="#CONTEXTPATH#/img/online-bku.png"
alt="OnlineBKU" /> <input name="bkuButtonOnline" type="button"
onClick="bkuOnlineClicked();" tabindex="2" role="button"
value="Karte" />
@@ -801,9 +871,8 @@
name="MODUL" value="#MODUL#"> <input type="hidden"
name="ACTION" value="#ACTION#"> <input type="hidden"
name="MOASessionID" value="#SESSIONID#">
- <input type="submit" value=">lokale Bürgerkartenumgebung" tabindex="4"
- role="button" class="hell"
- onclick="setMandateSelection();"
+ <input type="submit" value=" Lokale Bürgerkartenumgebung " tabindex="4"
+ role="button" onclick="setMandateSelection();"
>
<!--p>
<small>Alternativ können Sie eine lokal installierte BKU verwenden.</small>
@@ -837,7 +906,7 @@
src="#CONTEXTPATH#/img/valid-html5-blue.png" alt="HTML5 ist valide!" />
</a> <a href="http://jigsaw.w3.org/css-validator/"> <img
style="border: 0; width: 88px; height: 31px"
- src="https://jigsaw.w3.org/css-validator/images/vcss-blue"
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
alt="CSS ist valide!" />
</a>
</div>
diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java
index 5355f14d3..7288ae2b2 100644
--- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java
+++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java
@@ -14,7 +14,7 @@ import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
@@ -62,13 +62,13 @@ public class SpringExpressionAwareProcessEngineTest {
props.load(in);
try {
- ConfigurationDBUtils.initHibernate(props);
+ //ConfigurationDBUtils.initHibernate(props);
Configuration config = new Configuration();
config.addProperties(props);
config.addAnnotatedClass(ProcessInstanceStore.class);
config.addAnnotatedClass(InterfederationSessionStore.class);
MOASessionDBUtils.initHibernate(config, props);
- } catch (MOADatabaseException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
}
diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
index 4f24468fe..fa9f2ad06 100644
--- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
+++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
@@ -11,7 +11,7 @@ import org.hibernate.cfg.Configuration;
import org.junit.BeforeClass;
import org.junit.Test;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
@@ -53,13 +53,13 @@ public class ProcessEngineTest {
props.load(in);
try {
- ConfigurationDBUtils.initHibernate(props);
+ //ConfigurationDBUtils.initHibernate(props);
Configuration config = new Configuration();
config.addProperties(props);
config.addAnnotatedClass(ProcessInstanceStore.class);
config.addAnnotatedClass(InterfederationSessionStore.class);
MOASessionDBUtils.initHibernate(config, props);
- } catch (MOADatabaseException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
}
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilderTest.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilderTest.java
deleted file mode 100644
index 0aa1ffab9..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilderTest.java
+++ /dev/null
@@ -1,139 +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.
- ******************************************************************************/
-/*
- * 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 test.at.gv.egovernment.moa.id.auth.builder;
-
-import java.io.FileInputStream;
-import java.io.RandomAccessFile;
-
-import org.w3c.dom.Element;
-import test.at.gv.egovernment.moa.id.auth.invoke.MOASPSSTestCase;
-
-import at.gv.egovernment.moa.id.auth.builder.VerifyXMLSignatureRequestBuilder;
-import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse;
-import at.gv.egovernment.moa.id.auth.data.IdentityLink;
-import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;
-import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser;
-import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker;
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-
-
-
-/**
- * Test case for the signature verification web service.
- *
- * This test requires a running SignatureVerification web service.
- *
- * @author Stefan Knirsch
- * @version $Id$
- */
-public class VerifyXMLSignatureRequestBuilderTest extends MOASPSSTestCase {
-
-
- private SignatureVerificationInvoker caller;
-
- public VerifyXMLSignatureRequestBuilderTest(String name) {
- super(name);
- }
-
- public void setUp() {
- System.setProperty(
- ConfigurationProvider.CONFIG_PROPERTY_NAME,
- "data/test/conf/ConfigurationTest.xml");
- caller = new SignatureVerificationInvoker();
- }
-
- public void testVerifyXMLSignatureRequestBuilderIdentityLink() throws Exception {
-
- RandomAccessFile infoBox = new RandomAccessFile(
- "data/test/xmldata/testperson1/InfoboxReadResponse.xml","r");
- byte[] b = new byte[(int) infoBox.length()];
- infoBox.read(b);
- infoBox.close();
- String xmlInfoboxReadResponse = new String(b, "UTF-8");
-
-
- RandomAccessFile vr = new RandomAccessFile(
- "data/test/xmldata/standard/VerifyXMLSignatureRequestIdentityLink.xml","r");
- b = new byte[(int) vr.length()];
- vr.read(b);
- vr.close();
- String xmlResponse = new String(b, "UTF-8");
-
- InfoboxReadResponseParser irrp = new InfoboxReadResponseParser(xmlInfoboxReadResponse);
- IdentityLink idl = irrp.parseIdentityLink();
- VerifyXMLSignatureRequestBuilder vsrb = new VerifyXMLSignatureRequestBuilder();
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
-
- Element requestBuild = vsrb.build(idl, authConf.getMoaSpIdentityLinkTrustProfileID());
-
- assertXmlEquals(requestBuild, xmlResponse);
-
- }
-
- public void testVerifyXMLSignature2() throws Exception {
-
- RandomAccessFile s = new RandomAccessFile("data/test/xmldata/standard/CreateXMLSignatureResponse.xml","r");
- byte[] b = new byte[(int) s.length()];
- s.read(b);
- s.close();
- String xmlCreateXMLSignatureResponse = new String(b, "UTF-8");
-
- CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse);
- CreateXMLSignatureResponse csr = cXMLsrp.parseResponse();
-
- VerifyXMLSignatureRequestBuilder vsrb = new VerifyXMLSignatureRequestBuilder();
-
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
-
- Element request = vsrb.build(csr, authConf.getMoaSpAuthBlockVerifyTransformsInfoIDs(), authConf.getMoaSpIdentityLinkTrustProfileID());
-
- // check the result
- assertXmlEquals(request, new FileInputStream("data/test/xmldata/standard/VerifyXMLSignatureRequestCreateXML.xml"));
-
- }
- }
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationTest.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationTest.java
deleted file mode 100644
index 0876cfac6..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationTest.java
+++ /dev/null
@@ -1,216 +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.
- ******************************************************************************/
-/*
- * 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 test.at.gv.egovernment.moa.id.auth.invoke;
-
-import java.io.RandomAccessFile;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.builder.VerifyXMLSignatureRequestBuilder;
-import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse;
-import at.gv.egovernment.moa.id.auth.data.IdentityLink;
-import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse;
-import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;
-import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser;
-import at.gv.egovernment.moa.id.auth.parser.VerifyXMLSignatureResponseParser;
-import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker;
-import at.gv.egovernment.moa.id.auth.validator.VerifyXMLSignatureResponseValidator;
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.data.DynamicOAAuthParameters;
-import at.gv.egovernment.moa.util.DOMUtils;
-
-
-
-/**
- * Test case for the signature verification web service.
- *
- * This test requires a running SignatureVerification web service.
- *
- * @author Patrick Peck
- * @author Fatemeh Philippi
- * @version $Id$
- */
-public class SignatureVerificationTest extends MOASPSSTestCase {
-
-
- private SignatureVerificationInvoker caller;
-
- public SignatureVerificationTest(String name) {
- super(name);
- }
-
- public void setUp() {
-System.setProperty(
- ConfigurationProvider.CONFIG_PROPERTY_NAME,
- "data/test/conf/ConfigurationTest.xml");
- caller = new SignatureVerificationInvoker();
- }
-
-/* public void testVerifyCMSSignature() throws Exception {
- Element request =
- parseXml("data/test/xml/VCSQ000.xml").getDocumentElement();
- Element result;
-
- // call the service
- result = caller.verifyXMLSignature(request);
-
- // check the result
- assertEquals("VerifyCMSSignatureResponse", result.getTagName());
- }*/
-
- public void testVerifyXMLSignature1() throws Exception {
-
- //Momentan zeigt die Konfiguration als Endpunkt aus localhost:8081 zum
- //Protokollieren per TCPMon... der ECHT Endpunkt ist 10.16.46.108:8080
- RandomAccessFile s =
- new RandomAccessFile(
- "data/test/xmldata/testperson1/InfoboxReadResponse.xml","r");
- byte[] b = new byte[(int) s.length()];
- s.read(b);
- String xmlInfoboxReadResponse =new String(b,"UTF8");
-
- InfoboxReadResponseParser irrp = new InfoboxReadResponseParser(xmlInfoboxReadResponse);
- IdentityLink idl = irrp.parseIdentityLink();
- VerifyXMLSignatureRequestBuilder vsrb = new VerifyXMLSignatureRequestBuilder();
-
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
-
- Element request = vsrb.build(idl, authConf.getMoaSpIdentityLinkTrustProfileID());
- s =new RandomAccessFile("D://PatricksVerifyXMLSignatureRequestWithInfoboxReadResponse.xml","rw");
- s.write(DOMUtils.serializeNode(request).getBytes("UTF-8"));
- s.close();
-// Element request = DOMUtils.parseDocument(vsrb.build(xmlInfoboxReadResponse,"TrustProfile1"),false,null,null).getDocumentElement();
-// Element request = DOMUtils.parseDocument(xmlInfoboxReadResponse,false,null,null).getDocumentElement();
-// call the service
- Element response = caller.verifyXMLSignature(request);
- VerifyXMLSignatureResponseParser vParser = new VerifyXMLSignatureResponseParser(response);
- VerifyXMLSignatureResponse vData = vParser.parseData();
- VerifyXMLSignatureResponseValidator vValidate = VerifyXMLSignatureResponseValidator.getInstance();
-
- DynamicOAAuthParameters oaParam = new DynamicOAAuthParameters();
- oaParam.setBusinessService(true);
- vValidate.validate(vData, authConf.getIdentityLinkX509SubjectNames(), VerifyXMLSignatureResponseValidator.CHECK_IDENTITY_LINK, oaParam);
- vValidate.validateCertificate(vData,idl);
-
- // check the result
- assertXmlEquals(response, request);
-
- }
-
- public void testVerifyXMLSignature2() throws Exception {
- // Pr�ft den 2. Aufruf mit dem CreateXMLSIgnatureResponse als Parameter
- //Momentan zeigt die Konfiguration als Endpunkt aus localhost:8081 zum
- //Protokollieren per TCPMon... der ECHT Endpunkt ist 10.16.46.108:8080
- RandomAccessFile s =
- new RandomAccessFile(
- "data/test/xmldata/standard/CreateXMLSignatureResponse.xml","r");
- byte[] b = new byte[(int) s.length()];
- s.read(b);
- String xmlCreateXMLSignatureResponse = new String(b, "UTF8");
-
- CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse);
-// CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse);
- CreateXMLSignatureResponse csr = cXMLsrp.parseResponse();
-
- VerifyXMLSignatureRequestBuilder vsrb = new VerifyXMLSignatureRequestBuilder();
-
- AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance();
-
- Element request = vsrb.build(csr, authConf.getMoaSpAuthBlockVerifyTransformsInfoIDs(), authConf.getMoaSpIdentityLinkTrustProfileID());
- // Element request = DOMUtils.parseDocument(vsrb.build(xmlInfoboxReadResponse,"TrustProfile1"),false,null,null).getDocumentElement();
-// Element request = DOMUtils.parseDocument(xmlInfoboxReadResponse,false,null,null).getDocumentElement();
- Element result;
-/*s =new RandomAccessFile("D://PatricksVerifyXMLSignatureRequestWithAuthBlock.xml","rw");
- s.write(DOMUtils.serializeNode(request).getBytes("UTF-8"));
- s.close();*/
- // call the service
- result = caller.verifyXMLSignature(request);
- // check the result
- assertEquals("VerifyXMLSignatureResponse", result.getTagName());
-
- }
-
-
- public void testParseCreateXMLSignatureResponse() throws Exception {
-
- //Sp�ter soll die Datei direkt vom Server geholt werden...
-
- RandomAccessFile s =
- new RandomAccessFile(
- "data/test/xmldata/standard/CreateXMLSignatureResponse.xml",
-
- "r");
- byte[] b = new byte[(int) s.length()];
- s.read(b);
- String xmlCreateXMLSignatureResponse = new String(b, "UTF-8");
-
- CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse);
- CreateXMLSignatureResponse csr = cXMLsrp.parseResponse();
-
- }
-
- public void testParseVerifyXMLSignatureResponse() throws Exception {
-
- //Sp�ter soll die Datei direkt vom Server geholt werden...
-
- RandomAccessFile s =
- new RandomAccessFile(
- "data/test/xmldata/standard/VerifyXMLSignaterResponse.xml",
-
- "r");
- byte[] b = new byte[(int) s.length()];
- s.read(b);
- String xmlVerifyXMLSignatureResponse = new String(b, "UTF-8");
-
- VerifyXMLSignatureResponseParser vXMLsrp = new VerifyXMLSignatureResponseParser(xmlVerifyXMLSignatureResponse);
- VerifyXMLSignatureResponse vsr = vXMLsrp.parseData();
-
- }
-
-
- }
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/AllTests.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/AllTests.java
deleted file mode 100644
index 8386fc52f..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/AllTests.java
+++ /dev/null
@@ -1,77 +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.
- *******************************************************************************/
-///*
-// * 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 test.at.gv.egovernment.moa.id.proxy;
-//
-//import test.at.gv.egovernment.moa.id.proxy.builder.SAMLRequestBuilderTest;
-//import test.at.gv.egovernment.moa.id.proxy.parser.SAMLResponseParserTest;
-//import junit.awtui.TestRunner;
-//import junit.framework.Test;
-//import junit.framework.TestSuite;
-//
-///**
-// * @author Paul Ivancsics
-// * @version $Id$
-// */
-//public class AllTests {
-//
-// public static Test suite() {
-// TestSuite suite = new TestSuite();
-//
-// suite.addTestSuite(SAMLRequestBuilderTest.class);
-// suite.addTestSuite(SAMLResponseParserTest.class);
-//
-// return suite;
-// }
-//
-// public static void main(String[] args) {
-// try {
-// TestRunner.run(AllTests.class);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-//}
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/DOMTreeCompare.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/DOMTreeCompare.java
deleted file mode 100644
index d2af95855..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/DOMTreeCompare.java
+++ /dev/null
@@ -1,508 +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.
- ******************************************************************************/
-/*
- * 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 test.at.gv.egovernment.moa.id.proxy.builder;
-
-import java.io.PrintStream;
-import java.util.ArrayList;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-import at.gv.egovernment.moa.util.Base64Utils;
-
-/**
- * @author Administrator
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- * To enable and disable the creation of type comments go to
- * Window>Preferences>Java>Code Generation.
- */
-public class DOMTreeCompare {
-
- boolean debug = true;
-
- private static PrintStream Log = null;
-
- static
- {
- Log = System.out;
- }
-
- public boolean compareElements(Element root1, Element root2)
- {
- //Log.println("----- Compare Elements:"+root1.getNodeName()+" "+root2.getNodeName());
- filterTree(root1);
- filterTree(root2);
- return compareNodes(root1,root2,0,"root/",false);
- }
-
- private boolean compareNodes(Node n1, Node n2, int level,String path,boolean attribute)
- {
- /*try {
- Log.println(DOMUtils.serializeNode(n1));
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }*/
- boolean equal = false;
- //Log.println("----- Compare Node "+level+":"+n1+" "+n2);
- //Log.println("----- Compare Node "+level+":"+n1.getNodeName()+" "+n2.getNodeName());
- //Log.println("----- Checking:"+path+getPathString(n1));
- NodeList nl1 = n1.getChildNodes();
- NodeList nl2 = n2.getChildNodes();
-
- int size1 = nl1.getLength();
- int size2 = nl2.getLength();
-
- if(debug)display_one(n1);
- if(debug)display_one(n2);
-
-
- if(debug)
- if(n1.getNodeName().equals("Base64Content") && n2.getNodeName().equals("Base64Content"))
- {
- try {
- Log.println("CONT:"+new String(Base64Utils.decode(strip(n1.getChildNodes().item(0).getNodeValue()),false)));
- Log.println("CONT:"+new String(Base64Utils.decode(strip(n2.getChildNodes().item(0).getNodeValue()),false)));
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- }
-
- if(size1 != size2)
- {
- Log.println("----- Anzahl der Kinder nicht gleich:"+path+getPathString(n1)+":"+getPathString(n2));
- return false;
- }
-
- equal = compareNodeExact(n1,n2,level,path+getPathString(n1)+"/");
- if(!equal)
- {
- Log.println("----- Knoten sind nicht identisch:"+path+getPathString(n1));
- return false;
- }
-
- if(n1.hasAttributes() || n2.hasAttributes())
- {
- equal = compareNodeAttriubtes(n1,n2,level+1,path+getPathString(n1)+"/(a)");
- if(!equal)
- {
- Log.println("----- Attribute stimmen nicht �berein:"+path+getPathString(n1));
- return false;
- }
- }
- if(size1==0)
- {
- return true;
- }
-
- for(int counter=0;counter<size1;counter++)
- {
- boolean found = false;
- Node comp_n1 = nl1.item(counter);
-
- //if(comp_n1==null) return false;
-
- Node comp_n2 = null;
- size2 = nl2.getLength();
- for(int counter2=0;counter2<size2;counter2++)
- {
- comp_n2 = nl2.item(counter2);
-
- /*equal = compareNodeExact(comp_n1,comp_n2,level+1);
- if(equal) return false;*/
- //Log.println("COMP_N1:"+comp_n1);
- //Log.println("COMP_N2:"+comp_n2);
- equal = compareNodes(comp_n1,comp_n2,level+1,path+getPathString(comp_n1)+"/",false);
- if(equal)
- {
- n2.removeChild(comp_n2);
- counter2=size2;
- nl2 = n2.getChildNodes();
- size2 = nl2.getLength();
- }
-
- }
-
- if(!equal)
- {
- Log.println("----- Keine �bereinstimmung gefunden:"+path+getPathString(comp_n1));
- return false;
- }
- }
- return true;
- }
-
- private boolean compareNodeExact(Node n1,Node n2,int level,String path)
- {
- if(n1.getNodeType() == Node.TEXT_NODE)
- {
- Text textnode = (Text)n1;
- /*Log.println("----- *****"+textnode.getNodeName());
- Log.println("----- *****"+textnode.getParentNode().getNodeName());
- Log.println("----- *****"+textnode.getNodeValue());*/
- }
-
- //Log.println("----- Checking:"+path);
- String n1_name = n1.getNodeName();
- String n2_name = n2.getNodeName();
- /*Log.println("----- !!!!!"+n1.getNodeName());
- Log.println("----- !!!!!"+n1.getNodeValue());
- Log.println("----- !!!!!"+n1.getLocalName());
- Log.println("----- !!!!!"+n1.getPrefix());
- Log.println("----- !!!!!"+n1.getNextSibling());
- Log.println("----- !!!!!"+n1.getPreviousSibling());*/
-
- //Log.println("----- Compare Node "+level+":"+n1_name+" "+n2_name);
- if(!((n1_name==null && n2_name==null) ||
- (n1_name!=null && n2_name!=null && n1_name.equals(n2_name))))
- {
- Log.println("----- Name stimmt nicht �berein:"+path);
- return false;
- }
-
- //Log.println("----- Compare Node "+level+":"+n1.getNodeType()+" "+n2.getNodeType());
- if(n1.getNodeType() != n2.getNodeType())
- {
- Log.println("----- Knotentyp stimmt nicht �berein:"+path);
- return false;
- }
-
- String n1_ns = n1.getPrefix();
- String n2_ns = n2.getPrefix();
- //Log.println("----- Compare Node "+level+":"+n1_ns+" "+n2_ns);
- if(!((n1_ns==null && n2_ns==null) ||
- (n1_ns!=null && n2_ns!=null && n1_ns.equals(n2_ns))))
- {
- Log.println("----- NameSpace stimmt nicht �berein:"+path);
- return false;
- }
-
- String n1_value = n1.getNodeValue();
- String n2_value = n2.getNodeValue();
-
- boolean special = false;
- special = specialValues(n1_value,n2_value,path);
- if(special) return true;
-
- //Log.println("----- Compare Node "+level+":"+n1_value+" "+n2_value);
- if(!((n1_value==null && n2_value==null) ||
- (n1_value!=null && n2_value!=null && n1_value.equals(n2_value))))
- {
- Log.println("----- Wert stimmt nicht �berein:"+path);
- Log.println("----- Value1:\n"+n1_value);
- Log.println("----- Value2:\n"+n2_value);
- return false;
- }
-
-
- return true;
- }
-
- private boolean compareNodeAttriubtesWithoutSize(Node n1, Node n2, int level,String path)
- {
- return true;
- }
-
- private boolean compareNodeAttriubtes(Node n1, Node n2, int level,String path)
- {
- //Log.println("----- Compare NodeAttributes "+level+":"+n1.getNodeName()+" "+n2.getNodeName());
- Element n1elem = (Element)n1;
- Element n2elem = (Element)n2;
-
- NamedNodeMap nnm1 = n1.getAttributes();
- NamedNodeMap nnm2 = n2.getAttributes();
-
- int size1 = 0;
- int size2 = 0;
-
- boolean specialattrs = specialAttributesSize(path);
-
- if(!specialattrs)
- {
-
- if(nnm1==null && nnm2==null) return true;
- if(nnm1==null || nnm2==null)
- {
- Log.println("----- Anzahl der Attribute nicht gleich:"+path+":"+getPathString(n1));
- return false;
- }
- size1 = nnm1.getLength();
- size2 = nnm2.getLength();
-
- if(size1 != size2)
- {
- Log.println("----- Anzahl der Attribute nicht gleich:"+path+":"+getPathString(n1));
- return false;
- }
-
- }
- else
- {
- return compareNodeAttriubtesWithoutSize(n1,n2,level,path);
- }
-
- for(int counter=0;counter<size1;counter++)
- {
- Node attribute_node1 = nnm1.item(counter);
- Node attribute_node2 = nnm2.item(counter);
-
- String attr1_name = attribute_node1.getNodeName();
- String attr2_name = attribute_node2.getNodeName();
-
- String value1 = n1elem.getAttribute(attr1_name);
- String value2 = n2elem.getAttribute(attr2_name);
-
- boolean special = false;
-
- special = specialAttributes(path,attr1_name,value1,attr2_name,value2);
- if(special)
- {
- return special;
- }
-
- if(!value1.equals(value2))
- {
- Log.println("----- Keine �bereinstimmung gefunden:"+path+getPathString(n1));
- return false;
- }
- }
-
- return true;
- }
-
- private boolean checkNode(Node base,String name)
- {
- if(base.getNodeName().equals(name))
- {
- return true;
- }
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for(int counter=0;counter<size;counter++)
- {
- boolean found = checkNode(children.item(counter),name);
- if(found) return true;
- }
- return false;
- }
-
- private void display_one(Node base)
- {
- int att_size=0;
- if(base.getAttributes()!=null)
- {
- att_size=base.getAttributes().getLength();
- }
- if(base.getNodeName().equals("#text"))
- Log.println(base.getNodeName()+base.getChildNodes().getLength()+":"+att_size+" ("+base.getNodeValue()+")");
- else
- Log.println(base.getNodeName()+base.getChildNodes().getLength()+":"+att_size);
- }
-
- private void display(Node base)
- {
- display(base,1);
- }
-
- private void display(Node base,int level)
- {
- String spacer = "";
- for(int counter=0;counter<level;counter++)
- {
- spacer+=" ";
- }
-
- int att_size=0;
- if(base.getAttributes()!=null)
- {
- att_size=base.getAttributes().getLength();
- }
- if(base.getNodeName().equals("#text"))
- Log.println(spacer+base.getNodeName()+base.getChildNodes().getLength()+":"+att_size+" ("+base.getNodeValue()+")");
- else
- Log.println(spacer+base.getNodeName()+base.getChildNodes().getLength()+":"+att_size);
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for(int counter=0;counter<size;counter++)
- {
- display(children.item(counter),level+1);
- }
- }
-
- private void filterTree(Node base)
- {
- ArrayList removeList = new ArrayList();
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for(int counter=0;counter<size;counter++)
- {
- Node child1 = children.item(counter);
- if(child1.getNodeType() == Node.TEXT_NODE && child1.getNodeValue().trim().equals(""))
- {
- removeList.add(child1);
- }
- }
-
- size = removeList.size();
- for(int counter=0;counter<size;counter++)
- {
- base.removeChild((Node)removeList.get(counter));
- }
-
- children = base.getChildNodes();
- size = children.getLength();
- for(int counter=0;counter<size;counter++)
- {
- filterTree(children.item(counter));
- }
-
- }
-
- private String getPathString(Node n)
- {
- if(n.getNodeType()==Node.TEXT_NODE)
- {
- return n.getParentNode().getNodeName()+"(text)";
- }
- else
- {
- return n.getNodeName();
- }
-
- }
-
- public boolean specialAttributes(String path,String attr1_name,String value1,String attr2_name,String value2)
- {
- //if(value1.startsWith("reference-") && value2.startsWith("reference-")) return true;
- //if(value1.startsWith("signature-") && value2.startsWith("signature-")) return true;
-
- return false;
- }
-
- public boolean specialAttributesSize(String path)
- {
- //if(path.endsWith("/xsl:template/(a)")) return true;
- return false;
- }
-
- public boolean specialValues(String value1,String value2,String path)
- {
-
- //Log.println(path);
- /*if(ignoreSignatureValue)
- {
- if(path.endsWith("/dsig:SignatureValue(text)/"))
- {
- return true;
- }
- }
- else
- {
- if(path.endsWith("/dsig:SignatureValue(text)/"))
- {
- String stripped_1 = strip(value1);
- String stripped_2 = strip(value2);
- return stripped_1.equals(stripped_2);
- }
- }*/
-
- return false;
- }
-
- private String strip(String input)
- {
- String output = replaceStringAll(input," ","");
- output = replaceStringAll(output,"\n","");
- output = replaceStringAll(output,"\r","");
- return output;
- }
-
- private static String replaceStringAll(
- String input,
- String oldPart,
- String newPart)
- {
-
- String erg = null;
-
- int pos = input.indexOf(oldPart);
- if(pos==-1) return input;
-
- while(true)
- {
-
- //First Part
- pos = input.indexOf(oldPart);
- if(pos==-1) break;
- erg = input.substring(0, pos);
-
- //Insert new Part
- erg += newPart;
-
- //insert REST
- erg
- += input.substring(
- input.indexOf(oldPart) + oldPart.length(),
- input.length());
-
- input = erg;
- }
- return erg;
- }
-
-}
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilderTest.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilderTest.java
deleted file mode 100644
index 2e676a00b..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilderTest.java
+++ /dev/null
@@ -1,78 +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.
- ******************************************************************************/
-/*
- * 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 test.at.gv.egovernment.moa.id.proxy.builder;
-
-import org.w3c.dom.Element;
-
-import test.at.gv.egovernment.moa.id.UnitTestCase;
-import at.gv.egovernment.moa.id.auth.builder.SAMLArtifactBuilder;
-import at.gv.egovernment.moa.id.proxy.builder.SAMLRequestBuilder;
-import at.gv.egovernment.moa.util.DOMUtils;
-
-/*
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class SAMLRequestBuilderTest extends UnitTestCase {
-
- public SAMLRequestBuilderTest(String arg0) {
- super(arg0);
- }
-
- public void testBuild() throws Exception {
- String requestID = "123";
- String samlArtifact = new SAMLArtifactBuilder().build("https://moa.gv.at/auth/", "12345678901234567890", null);
- String REQUEST_SHOULD = "<samlp:Request xmlns:samlp=\"urn:oasis:names:tc:SAML:1.0:protocol\" RequestID=\"" +
- requestID + "\" MajorVersion=\"1\" MinorVersion=\"0\" IssueInstant=\"IGNORE\">" +
- "<samlp:AssertionArtifact>" + samlArtifact + "</samlp:AssertionArtifact>" +
- "</samlp:Request>";
- Element request = new SAMLRequestBuilder().build(requestID, samlArtifact);
- Element requestShould = DOMUtils.parseDocument(REQUEST_SHOULD, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement();
- assertTrue(new SAMLRequestCompare().compareElements(requestShould, request));
- }
-
-}
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestCompare.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestCompare.java
deleted file mode 100644
index e595ca86c..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestCompare.java
+++ /dev/null
@@ -1,65 +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.
- ******************************************************************************/
-/*
- * 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 test.at.gv.egovernment.moa.id.proxy.builder;
-
-/*
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class SAMLRequestCompare extends test.at.gv.egovernment.moa.id.proxy.builder.DOMTreeCompare {
-
-
- /*
- * @see at.gv.egovernment.moa.util.SAMLRequestCompare#specialAttributes(java.lang.String, java.lang.String)
- */
- public boolean specialAttributes(String path,String attr1_name,String value1,String attr2_name,String value2) {
- if(attr1_name.equals("IssueInstant"))
- return true;
- return false;
- }
-
-}
diff --git a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParserTest.java b/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParserTest.java
deleted file mode 100644
index 3b4beb7b7..000000000
--- a/id/server/idserverlib/src/test/java/test/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParserTest.java
+++ /dev/null
@@ -1,227 +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.
- ******************************************************************************/
-/*
- * 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 test.at.gv.egovernment.moa.id.proxy.parser;
-
-import org.w3c.dom.Element;
-
-import test.at.gv.egovernment.moa.id.UnitTestCase;
-
-import at.gv.egovernment.moa.id.data.AuthenticationData;
-import at.gv.egovernment.moa.id.data.SAMLStatus;
-import at.gv.egovernment.moa.id.protocols.saml1.SAML1AuthenticationData;
-import at.gv.egovernment.moa.id.proxy.parser.SAMLResponseParser;
-import at.gv.egovernment.moa.util.Constants;
-import at.gv.egovernment.moa.util.DOMUtils;
-
-/*
- * @author Paul Ivancsics
- * @version $Id$
- */
-public class SAMLResponseParserTest extends UnitTestCase {
-
- public SAMLResponseParserTest(String arg0) {
- super(arg0);
- }
-
- public void testParse() throws Exception {
- String samlResponse =
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
- "<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:1.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\"" +
- " ResponseID=\"\" MajorVersion=\"1\" MinorVersion=\"0\" IssueInstant=\"2003-03-29T06:00:00+02:00\">" +
- "<samlp:Status>" +
- "<samlp:StatusCode Value=\"samlp:Success\"><samlp:StatusCode Value=\"samlp:Success\"></samlp:StatusCode></samlp:StatusCode>" +
- "<samlp:StatusMessage>Ollas leiwand</samlp:StatusMessage>" +
- "</samlp:Status>" +
-"<saml:Assertion xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:pr=\"http://reference.e-government.gv.at/namespace/persondata/20020228#\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" MajorVersion=\"1\" MinorVersion=\"0\" AssertionID=\"-4633313027464114584\" Issuer=\"http://localhost:8080/moa-id-auth/\" IssueInstant=\"2003-04-02T14:55:42+02:00\">" +
- "<saml:AttributeStatement>" +
- "<saml:Subject>" +
- "<saml:NameIdentifier NameQualifier=\"http://reference.e-government.gv.at/names/vpk/20020221#\">MTk2OC0xMC0yMmdi</saml:NameIdentifier>" +
- "<saml:SubjectConfirmation>" +
- "<saml:ConfirmationMethod>http://reference.e-government.gv.at/namespace/moa/20020822#cm</saml:ConfirmationMethod>" +
- "<saml:SubjectConfirmationData>" +
- "<saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" MajorVersion=\"1\" MinorVersion=\"0\" AssertionID=\"any\" Issuer=\"Hermann Muster\" IssueInstant=\"2003-04-02T14:55:27+02:00\">" +
- "<saml:AttributeStatement>" +
- "<saml:Subject>" +
- "<saml:NameIdentifier>http://localhost:8080/moa-id-auth/</saml:NameIdentifier>" +
- "</saml:Subject>" +
- "<saml:Attribute AttributeName=\"Gesch�ftsbereich\" AttributeNamespace=\"http://reference.e-government.gv.at/namespace/moa/20020822#\">" +
- "<saml:AttributeValue>gb</saml:AttributeValue>" +
- "</saml:Attribute>" +
- "<saml:Attribute AttributeName=\"OA\" AttributeNamespace=\"http://reference.e-government.gv.at/namespace/moa/20020822#\">" +
- "<saml:AttributeValue>https://localhost:9443/</saml:AttributeValue>" +
- "</saml:Attribute>" +
- "</saml:AttributeStatement>" +
- "</saml:Assertion>" +
- "<saml:Assertion AssertionID=\"zmr.bmi.gv.at-AssertionID-2003-02-12T20:28:34.474\" IssueInstant=\"2003-02-12T20:28:34.474\" Issuer=\"http://zmr.bmi.gv.at/zmra/names#Issuer\" MajorVersion=\"1\" MinorVersion=\"0\" xmlns:pr=\"http://reference.e-government.gv.at/namespace/persondata/20020228#\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
- "<saml:AttributeStatement>" +
- "<saml:Subject>" +
- "<saml:SubjectConfirmation>" +
- "<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod>" +
- "<saml:SubjectConfirmationData>" +
- "<pr:Person xsi:type=\"pr:PhysicalPersonType\">" +
- "<pr:Identification>" +
- "<pr:Value>123456789012</pr:Value>" +
- "<pr:Type>http://reference.e-government.gv.at/names/persondata/20020228#zmr-zahl</pr:Type>" +
- "</pr:Identification>" +
- "<pr:Name>" +
- "<pr:GivenName>Hermann</pr:GivenName>" +
- "<pr:FamilyName primary=\"undefined\">Muster</pr:FamilyName>" +
- "</pr:Name>" +
- "<pr:DateOfBirth>1968-10-22</pr:DateOfBirth>" +
- "</pr:Person>" +
- "</saml:SubjectConfirmationData>" +
- "</saml:SubjectConfirmation>" +
- "</saml:Subject>" +
- "<saml:Attribute AttributeName=\"CitizenPublicKey\" AttributeNamespace=\"http://www.buergerkarte.at/namespaces/personenbindung/20020506#\">" +
- "<saml:AttributeValue>" +
- "<dsig:RSAKeyValue xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">" +
- "<dsig:Modulus>0v1Ftf7WXgoexx0Jo/GrlExHOHnQIEQ5FFSjptLRd5BN1mZYRg2S9KfOMbHSCsiPm8AwjAEwE5EM A6P18Z/YyTIuP7fNGzckbB5PYIgNMHL8/TYJhHA8CjamsBrEfYDXivE8iAvALg5I9RMLZADmzL7a f2daYYuO8dycQw3xg6U=</dsig:Modulus>" +
- "<dsig:Exponent>AQAB</dsig:Exponent>" +
- "</dsig:RSAKeyValue>" +
- "</saml:AttributeValue>" +
- "</saml:Attribute>" +
- "<saml:Attribute AttributeName=\"CitizenPublicKey\" AttributeNamespace=\"http://www.buergerkarte.at/namespaces/personenbindung/20020506#\">" +
- "<saml:AttributeValue>" +
- "<dsig:RSAKeyValue xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">" +
- "<dsig:Modulus>i2qa56X4fpYeXqFLXAcQljGU3+DWnVgNrAxI9gn2bMeFWtLXE2SFa6qvl9EymUl0noBlFn0q9DWp AsyeLnRhzCAXJeSxiwsUEloOvcQCV0DfW2UVq0Y9bVlJ8KifJ2AS+5BxZ21mkc/VYx5Qz6EYjPrn pIpdAwR9sw5xnIvTySc=</dsig:Modulus>" +
- "<dsig:Exponent>AQAB</dsig:Exponent>" +
- "</dsig:RSAKeyValue>" +
- "</saml:AttributeValue>" +
- "</saml:Attribute>" +
- "</saml:AttributeStatement>" +
- "<dsig:Signature xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">" +
- "<dsig:SignedInfo>" +
- "<dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\"/>" +
- "<dsig:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>" +
- "<dsig:Reference URI=\"\">" +
- "<dsig:Transforms>" +
- "<dsig:Transform Algorithm=\"http://www.w3.org/TR/1999/REC-xpath-19991116\">" +
- "<dsig:XPath>not(ancestor-or-self::pr:Identification)</dsig:XPath>" +
- "</dsig:Transform>" +
- "<dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>" +
- "</dsig:Transforms>" +
- "<dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>" +
- "<dsig:DigestValue>s7TfoZrYo36OMdlxGxuIfAw/wr8=</dsig:DigestValue>" +
- "</dsig:Reference>" +
- "<dsig:Reference Type=\"http://www.w3.org/2000/09/xmldsig#Manifest\" URI=\"\">" +
- "<dsig:Transforms>" +
- "<dsig:Transform Algorithm=\"http://www.w3.org/TR/1999/REC-xpath-19991116\">" +
- "<dsig:XPath>ancestor-or-self::dsig:Manifest</dsig:XPath>" +
- "</dsig:Transform>" +
- "</dsig:Transforms>" +
- "<dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>" +
- "<dsig:DigestValue>dO+RSn4xLHT3cuq8uopFtZyUBqo=</dsig:DigestValue>" +
- "</dsig:Reference>" +
- "</dsig:SignedInfo>" +
- "<dsig:SignatureValue>MFbZ5wA5cq0UezYFDXted5uqXubWFxxRwZawGh73XEAGxAbJsT/IEQmrTQThPRHNWW5RPGxVlPDz 5BmjberdaWlgJlbyKf3b/WpNNJYptQ7ijrXlsQoCzjfiQy37NEfvHEcxHQOA6sa42C+dFKsKIvmP 3mZkRYWJDxxsVzI7E+Y=</dsig:SignatureValue>" +
- "<dsig:KeyInfo>" +
- "<dsig:X509Data>" +
- "<dsig:X509Certificate>MIIDaDCCAtWgAwIBAgIBADAJBgUrDgMCHQUAMIGOMQswCQYDVQQGEwJBVDE9MDsG A1UEChQ0QnVuZGVzbWluaXN0ZXJpdW0gZvxyIPZmZmVudGxpY2hlIExlaXN0dW5n IHVuZCBTcG9ydDEjMCEGA1UECxMaSUtULVN0YWJzc3RlbGxlIGRlcyBCdW5kZXMx GzAZBgNVBAMTEk1PQSBUZXN0IENBIC0gUm9vdDAeFw0wMzAyMTExNTE5NDRaFw0w MzEyMzEyMjU5MzBaMIGOMQswCQYDVQQGEwJBVDE9MDsGA1UEChQ0QnVuZGVzbWlu aXN0ZXJpdW0gZvxyIPZmZmVudGxpY2hlIExlaXN0dW5nIHVuZCBTcG9ydDEjMCEG A1UECxMaSUtULVN0YWJzc3RlbGxlIGRlcyBCdW5kZXMxGzAZBgNVBAMTEk1PQSBU ZXN0IENBIC0gUm9vdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAjHuFphE3 +UkTe2OcIFWUDLzhPl1j2dH4sMPAhDK09/0i+aWrdtQW9yHktu/7+LTiCiPeevT0 lGMGDcWMSoSm66tYmpxei6YojCFIaVdJFtXZ7x1o7e7jTDVRLMfdZ5lI1sQ7loIY hOE0OmlYOkn4AI6xMtJtsca45rV8wW7qm8kCAwEAAaOB2zCB2DAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjBdBgNVHSAEVjBUMFIGDCsGAQQBlRIBAnsB ATBCMEAGCCsGAQUFBwICMDQaMkRpZXNlcyBaZXJ0aWZpa2F0IGlzdCBudXIgZvxy IFRlc3R6d2Vja2UgZ2VlaWduZXQuMB0GA1UdDgQWBBRDC612dCgZetTmAKyV6DII NkOoYTAWBgcqKAAKAQEBBAsMCUJNT0xTLUlLVDAfBgNVHSMEGDAWgBRDC612dCgZ etTmAKyV6DIINkOoYTAJBgUrDgMCHQUAA4GBAHj0xBNWGYLijaocjOX1AkL+r+G2 fZsX4z3S/2eEvtUp+EUHaOPMLTS0MIP1nwj5f4ZluAIrDLXihqMdi4xRv0W6QYbN aDxICNz3/QbrzMlFPeC8odesdRlT+GGswX0ZGUtVIZm1HVhxRk5ZEW2pr2afo5c0 Btxup/kgjGMnnS7C</dsig:X509Certificate>" +
- "<dsig:X509Certificate>MIIDiTCCAvagAwIBAgIBADAJBgUrDgMCHQUAMIGOMQswCQYDVQQGEwJBVDE9MDsG A1UEChQ0QnVuZGVzbWluaXN0ZXJpdW0gZvxyIPZmZmVudGxpY2hlIExlaXN0dW5n IHVuZCBTcG9ydDEjMCEGA1UECxMaSUtULVN0YWJzc3RlbGxlIGRlcyBCdW5kZXMx GzAZBgNVBAMTEk1PQSBUZXN0IENBIC0gUm9vdDAeFw0wMzAyMTExNTI1MTRaFw0w MzEyMzEyMjU5MzBaMIGZMQswCQYDVQQGEwJBVDE9MDsGA1UEChQ0QnVuZGVzbWlu aXN0ZXJpdW0gZvxyIPZmZmVudGxpY2hlIExlaXN0dW5nIHVuZCBTcG9ydDEjMCEG A1UECxMaSUtULVN0YWJzc3RlbGxlIGRlcyBCdW5kZXMxJjAkBgNVBAMTHU1PQSBU ZXN0IENBIC0gU2lnbmF0dXJkaWVuc3RlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB iQKBgQCw7ULOYSNji09Ein7Ar4j3Rjxjq05spBmZDmbSomEZMnGEtVTyIRzKc8ia 2kcXUMz5MEoFaVmvqRim31m20T21uvHFIs86gqzC/prOAz7V7HWok5F+9M/5gR1S BvpdqiEAXYeRXFPiOe8XSmpwhic7+n2jfuoBeYiRBEMGoP1DkwIDAQABo4HxMIHu MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgHGMBEGCWCGSAGG+EIB AQQEAwIBAjBdBgNVHSAEVjBUMFIGDCsGAQQBlRIBAgMBATBCMEAGCCsGAQUFBwIC MDQaMkRpZXNlcyBaZXJ0aWZpa2F0IGlzdCBudXIgZvxyIFRlc3R6d2Vja2UgZ2Vl aWduZXQuMB0GA1UdDgQWBBSeRWvUfxEjKZSfxImJr/fpBDtMmTAWBgcqKAAKAQEB BAsMCUJNT0xTLUlLVDAfBgNVHSMEGDAWgBRDC612dCgZetTmAKyV6DIINkOoYTAJ BgUrDgMCHQUAA4GBAIMa4C2z3SbkcjEiMNAsHKaKUCJkBbMtNaab6U/cwwYmG6nl ga7xyEmbfY2SKzOqkcIwuv83Tma3rcr1f+OLUeGUaGLHt2Pl1a/s8BZGQZHWvLXv 7hV4RceEUHzVGAfvDD8iBJqBmfq/z/fBPFsgSup4nO1YECkDYfQ+sqCIP4ik</dsig:X509Certificate>" +
- "<dsig:X509Certificate>MIIDZzCCAtSgAwIBAgIBADAJBgUrDgMCHQUAMIGZMQswCQYDVQQGEwJBVDE9MDsG A1UEChQ0QnVuZGVzbWluaXN0ZXJpdW0gZvxyIPZmZmVudGxpY2hlIExlaXN0dW5n IHVuZCBTcG9ydDEjMCEGA1UECxMaSUtULVN0YWJzc3RlbGxlIGRlcyBCdW5kZXMx JjAkBgNVBAMTHU1PQSBUZXN0IENBIC0gU2lnbmF0dXJkaWVuc3RlMB4XDTAzMDIx MTE1MzI0NVoXDTAzMDgxMTE0MzI0NVowgYUxCzAJBgNVBAYTAkFUMSYwJAYDVQQK FB1CdW5kZXNtaW5pc3Rlcml1bSBm/HIgSW5uZXJlczEgMB4GA1UECxMXWmVudHJh bGVzIE1lbGRlcmVnaXN0ZXIxLDAqBgNVBAMTI1Rlc3QgU2lnbmF0dXJkaWVuc3Qg UGVyc29uZW5iaW5kdW5nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEzkpk QjbGjZwssN1+vMBE/ALMcA8LWFcILI3uxXaTSWGfTiLo9ECfzjuwYJG7FjEaeWrW nPEcp4VfMNocrm3T7Hw/ikpE5/+FsfTzD4MpIwwUPd/CUfA5vDNXK5CiP7qKKR1e vATO2s6lfDul+CS/eEbwzKmUQvZGrJggxg2m5wIDAQABo4HYMIHVMAwGA1UdEwEB /wQCMAAwDgYDVR0PAQH/BAQDAgbAMF0GA1UdIARWMFQwUgYMKwYBBAGVEgECAwEB MEIwQAYIKwYBBQUHAgIwNBoyRGllc2VzIFplcnRpZmlrYXQgaXN0IG51ciBm/HIg VGVzdHp3ZWNrZSBnZWVpZ25ldC4wHQYDVR0OBBYEFIpEyv43H3EtiGr4I7Z34bWj v2z6MBYGByooAAoBAQEECwwJQk1PTFMtSUtUMB8GA1UdIwQYMBaAFJ5Fa9R/ESMp lJ/EiYmv9+kEO0yZMAkGBSsOAwIdBQADgYEAfMBJRy/kp8HQa0lGIBfFrWNpxVPv RsIu+N4IiFrswrsoQoMAh6IqNyzSdq7rJC08xsDkXe5HOwkb+2zGKYoC3aQ/J/zr BGkg6ec4tOaS/VSdEQeTL1L30r2faTffWLUV3GrzL7pM7jN470hB1w8F6Hc3LCI7 kFfp23o/juVtJNw=</dsig:X509Certificate>" +
- "</dsig:X509Data>" +
- "</dsig:KeyInfo>" +
- "<dsig:Object>" +
- "<dsig:Manifest>" +
- "<dsig:Reference URI=\"\">" +
- "<dsig:Transforms>" +
- "<dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>" +
- "</dsig:Transforms>" +
- "<dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>" +
- "<dsig:DigestValue>BqzfCB7dNg4G3u4YaxpD1tALdKI=</dsig:DigestValue>" +
- "</dsig:Reference>" +
- "</dsig:Manifest>" +
- "</dsig:Object>" +
- "</dsig:Signature>" +
- "</saml:Assertion>" +
- "</saml:SubjectConfirmationData>" +
- "</saml:SubjectConfirmation>" +
- "</saml:Subject>" +
- "<saml:Attribute AttributeName=\"PersonData\" AttributeNamespace=\"http://reference.e-government.gv.at/namespace/persondata/20020228#\">" +
- "<saml:AttributeValue>" +
- "<pr:Person xsi:type=\"pr:PhysicalPersonType\">" +
- "<pr:Identification>" +
- "<pr:Value>123456789012</pr:Value>" +
- "<pr:Type>http://reference.e-government.gv.at/names/persondata/20020228#zmr-zahl</pr:Type>" +
- "</pr:Identification>" +
- "<pr:Name>" +
- "<pr:GivenName>Hermann</pr:GivenName>" +
- "<pr:FamilyName primary=\"undefined\">Muster</pr:FamilyName>" +
- "</pr:Name>" +
- "<pr:DateOfBirth>1968-10-22</pr:DateOfBirth>" +
- "</pr:Person>" +
- "</saml:AttributeValue>" +
- "</saml:Attribute>" +
- "<saml:Attribute AttributeName=\"isQualifiedCertificate\" AttributeNamespace=\"http://reference.e-government.gv.at/namespace/moa/20020822#\">" +
- "<saml:AttributeValue>true</saml:AttributeValue>" +
- "</saml:Attribute>" +
- "</saml:AttributeStatement>" +
-"</saml:Assertion>" +
- "</samlp:Response>";
-
- Element samlResponseElem =
- DOMUtils.parseDocument(samlResponse, true, Constants.ALL_SCHEMA_LOCATIONS, null).getDocumentElement();
- SAMLResponseParser parser = new SAMLResponseParser(samlResponseElem);
- SAMLStatus status = parser.parseStatusCode();
- assertEquals("samlp:Success", status.getStatusCode());
- assertEquals("samlp:Success", status.getSubStatusCode());
- assertEquals("Ollas leiwand", status.getStatusMessage());
- SAML1AuthenticationData authData = parser.parseAuthenticationData();
- assertEquals(1, authData.getMajorVersion());
- assertEquals(0, authData.getMinorVersion());
- assertEquals("-4633313027464114584", authData.getAssertionID());
- assertEquals("http://localhost:8080/moa-id-auth/", authData.getIssuer());
- assertEquals("2003-04-02T14:55:42+02:00", authData.getIssueInstantString());
- assertEquals("123456789012", authData.getIdentificationValue());
- assertEquals("MTk2OC0xMC0yMmdi", authData.getBPK());
- assertEquals("Hermann", authData.getGivenName());
- assertEquals("Muster", authData.getFamilyName());
- assertEquals("1968-10-22", authData.getDateOfBirth());
- assertTrue(authData.isQualifiedCertificate());
- assertFalse(authData.isPublicAuthority());
- }
-}
diff --git a/id/server/idserverlib/src/test/java/test/lasttest/Dispatcher.java b/id/server/idserverlib/src/test/java/test/lasttest/Dispatcher.java
deleted file mode 100644
index 2111d9811..000000000
--- a/id/server/idserverlib/src/test/java/test/lasttest/Dispatcher.java
+++ /dev/null
@@ -1,110 +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.
- ******************************************************************************/
-/*
- * 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 test.lasttest;
-
-/**
- * @author Stefan Knirsch
- * @version $Id$
- *
- */
-public class Dispatcher extends Thread {
- private LasttestClient parent = null;
- private int max;
- private int turns;
- private int turn_counter;
- private int turn;
- private int time;
- private long sum;
- private int turnnum;
-
- public Dispatcher(LasttestClient parent, int max, int turns, int time, long sum) {
- this.parent = parent;
- this.max = max;
- this.turns = turns;
- this.time = time;
- this.sum = sum;
- turnnum=0;
- }
-
- public void run() {
- this.setPriority(Thread.NORM_PRIORITY + 1);
- System.out.println("Dispatcher wird gestartet...");
- TestThread[] old_reqs = buildRequests(0);
- for (turn_counter = 0; turns == 0 ? true : (turn_counter < turns); turn_counter++) {
- try {
-// LasttestClient.Log.write(("Starte Durchlauf " + turn_counter + "\n").getBytes());
- }
- catch (Exception e) {}
-
-// System.out.println("Starte Durchlauf " + turn_counter);
- turn = turn_counter;
- if (turns == 0)
- turn_counter--;
- TestThread[] reqs = buildRequests(turn_counter);
- for (int counter = 0; counter < max; counter++) {
- old_reqs[counter].start();
- }
- old_reqs = reqs;
- try {
- Thread.sleep(time);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- parent.stop = true;
- }
-
- public TestThread[] buildRequests(int turnNo) {
- TestThread[] ret = new TestThread[max];
- for (int counter = 0; counter < max; counter++) {
-// turnnum ++;
- ret[counter] = new TestThread(parent, turnNo);
- }
- return ret;
- }
-}
diff --git a/id/server/idserverlib/src/test/java/test/lasttest/HostnameVerifierHack.java b/id/server/idserverlib/src/test/java/test/lasttest/HostnameVerifierHack.java
deleted file mode 100644
index 7dd68a949..000000000
--- a/id/server/idserverlib/src/test/java/test/lasttest/HostnameVerifierHack.java
+++ /dev/null
@@ -1,59 +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.
- ******************************************************************************/
-/*
- * 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 test.lasttest;
-
-import com.sun.net.ssl.HostnameVerifier;
-
-/**
- * @author Stefan Knirsch
- * @version $Id$
- *
- */
-public class HostnameVerifierHack implements HostnameVerifier{
- public boolean verify(String arg0, String arg1) {
- return true;
- }}
diff --git a/id/server/idserverlib/src/test/java/test/lasttest/LasttestClient.java b/id/server/idserverlib/src/test/java/test/lasttest/LasttestClient.java
deleted file mode 100644
index 4a89f031e..000000000
--- a/id/server/idserverlib/src/test/java/test/lasttest/LasttestClient.java
+++ /dev/null
@@ -1,264 +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.
- ******************************************************************************/
-/*
- * 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 test.lasttest;
-
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.security.Security;
-import java.util.Date;
-
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.auth.AuthenticationServer;
-import at.gv.egovernment.moa.id.config.ConfigurationProvider;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
-import at.gv.egovernment.moa.id.proxy.builder.SAMLRequestBuilder;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.StreamUtils;
-import at.gv.egovernment.moa.util.URLDecoder;
-import at.gv.egovernment.moa.util.URLEncoder;
-import com.sun.net.ssl.HttpsURLConnection;
-
-/**
- * @author Sven
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- * To enable and disable the creation of type comments go to
- * Window>Preferences>Java>Code Generation.
- *
- * Aufruf: Requestdatei (==null), ServerURL, Anzahl der Requests pro Sekunde, Anzahl der Wiederholungen
- * z.b. "data/CX0/TestGeneratorCX0.001.Req.xml" "http://127.0.0.1:8080/" 5 100
- *
- * ==> GE�NDERT: ersten 2 Parameter gekillt... nur noch 5 100
- */
-public class LasttestClient {
-
- protected static final String TESTDATA_ROOT = "data/abnahme-test/";
- protected static final String MOA_AUTH_SERVER = "https://localhost:8443/moa-id-auth/";
- protected AuthenticationServer server;
-
- public int max_thread_count = 300;
- public int thread_counter = 0;
- public int error_count = 0;
- public int turns = 0;
- public long sum = 0;
- public long max = 0;
- public long min = Long.MAX_VALUE;
-
- public static PrintStream Log = null;
-
- public boolean stop = false;
-
- public static final String trustStore = "javax.net.ssl.trustStore";
- public static final String trustStorePassword = "javax.net.ssl.trustStorePassword";
- public static final String handler = "java.protocol.handler.pkgs";
-
- public void startTest(int req_per_second, int turns, int time) throws Exception {
- Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
-
- System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
- System.setProperty("javax.net.ssl.trustStore", "C:/Programme/ApacheGroup/abnahme/server.keystore");
- System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
-
- System.setProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME, TESTDATA_ROOT + "xmldata/L000/Configuration.xml");
-
- AuthConfigurationProvider.reload();
-
- this.turns = turns;
-
- boolean result = new TestThread(this,0).doRequest(0);// doTestRequest();
- if (result) {
- System.out.println("TestRequest OK. Lasttest wird gestartet.");
- sum=0;
- max=0;
- Dispatcher dp = new Dispatcher(this, req_per_second, turns, time, sum);
- dp.start();
- while (!stop) {
- try {
- Log.println(new String(("Checking Stop Condition ...(Running " + thread_counter + ", Min " + (min) + ", Max " + (max) + ", " + new Date(System.currentTimeMillis()) + ")")));
- Log.flush();
- }
- catch (Exception e) {}
-
- System.out.println("Checking Stop Condition ...(Running " + thread_counter + ", Min " + (min) + ", Max " + (max) + ", " + new Date(System.currentTimeMillis()) + ")");
- Thread.sleep(10000);
- }
- System.out.println("Fehler:" + error_count + " (Running " + thread_counter + ", Min " + (min) + ", Max " + (max) + ", " + new Date(System.currentTimeMillis()) + ")");
- }
- else {
- System.out.println("TestRequest lieferte einen Fehler. Lasttest wird nicht gestartet.");
- }
- }
-
-
- public boolean doTestRequest() throws Exception {
-
- try {
-
- TestThread tt = new TestThread(null,0);
-
- // Anmelden
- String URL = tt.getURL(MOA_AUTH_SERVER, "gb", "http://10.16.126.28:9080/moa-id-proxy/");
- HttpsURLConnection conn = tt.giveConnection(URL, "GET");
-
- conn.connect();
- String result = new String(StreamUtils.readStream(conn.getInputStream()));
- String MOASessionID = tt.parseSessionIDFromForm(result);
- conn.disconnect();
-
- URL = tt.parseDataURL(result);
- // Verify Identity Link
- conn = tt.giveConnection(URL, "POST");
- conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
- String infoboxReadResponse = tt.readXmldata("InfoboxReadResponse.xml");
- OutputStream out = conn.getOutputStream();
- out.write(new String("XMLResponse=" + URLEncoder.encode(infoboxReadResponse, "UTF-8")).getBytes());
- out.flush();
- out.close();
- conn.connect();
- String redirectLoc = conn.getHeaderField("Location");
- conn.disconnect();
- //Verify Auth Block
- conn = tt.giveConnection(redirectLoc, "POST");
- String createXMLSignatureResponse = URLEncoder.encode(tt.readXmldata("CreateXMLSignatureResponse.xml"), "UTF-8");
- out = conn.getOutputStream();
- out.write(("XMLResponse=" + createXMLSignatureResponse).getBytes("UTF-8"));
- out.flush();
- out.close();
- conn.connect();
- redirectLoc = conn.getHeaderField("Location");
- String samlArtifact = tt.parseSamlArtifact(redirectLoc);
- System.out.println("SamlArtifact: " + samlArtifact);
-
- conn.disconnect();
-
- conn = null;
-
- SAMLRequestBuilder srb = new SAMLRequestBuilder();
-
- Element erg = tt.doCall(srb.build(MOASessionID, URLDecoder.decode(samlArtifact, "UTF-8")),MOA_AUTH_SERVER);
- result = DOMUtils.serializeNode(erg);
- if (result.indexOf("saml:Assertion")<0)
- {
- System.err.println("Falsche Antwort vom Webservice:\n" + result);
- throw new Exception("Falsche Antwort vom Webservice");
-
- }
- }
- catch (Exception e) {
- System.err.println("------ FEHLER IN LASTTEST :" + e.getLocalizedMessage());
- throw e;
- }
-
- return true;
-
- }
-
- public String replaceString(String input, String oldPart, String newPart) throws Exception {
- String erg = null;
-
- //First Part
- erg = input.substring(0, input.indexOf(oldPart));
- //Insert new Part
- erg += newPart;
-
- //insert REST
- erg += input.substring(input.indexOf(oldPart) + oldPart.length(), input.length());
-
- return erg;
- }
-
- public static void main(String[] args) throws Exception {
- Log = new PrintStream(new FileOutputStream("C:/Lasttest.log"));
- int time = 0;
- int sek = 0;
- int turns = 0;
-
- if (args.length != 3) {
- System.out.println("Parameteranzahl falsch. Bitte verwenden Sie die Syntax <Request_pro_Zeiteinheit(Zahl)> <Anzahl_der_Durchl�ufe(Zahl oder INF)> <Zeit_zwischen_Aufrufen_in_ms(Zahl)>");
- return;
- }
-
- try {
- sek = Integer.parseInt(args[0]);
- time = Integer.parseInt(args[2]);
- if (args[1].equals("INF")) {
- turns = 0;
- }
- else
- turns = Integer.parseInt(args[1]);
- }
- catch (NumberFormatException e) {
- System.out.println("Einer der Parameter (Requestanzahl oder Testanzahl) ist keine Zahl !");
- return;
- }
-
- System.out.println("Starte Lastest mit folgenden Parametern ...");
- System.out.println("ServerURL: " + MOA_AUTH_SERVER);
- double reqPerSek = sek*1000;
- System.out.println("Requests pro Sekunde: " + reqPerSek/time);
- System.out.println("Durchl�ufe: " + (turns == 0 ? "INF" : turns + ""));
-
- Log.println("Starte Lastest mit folgenden Parametern ...");
- Log.println("ServerURL: " + MOA_AUTH_SERVER);
- Log.println("Requests pro Sekunde: " + reqPerSek / time);
- Log.println("Durchl�ufe: " + (turns == 0 ? "INF" : turns + ""));
-
-
- try {
- LasttestClient lc = new LasttestClient();
- //lc.startTest("data/CX0/TestGeneratorCX0.001.Req.xml","http://161.106.2.255:8080/",10,1000);
- lc.startTest(sek, turns, time);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
-}
-
diff --git a/id/server/idserverlib/src/test/java/test/lasttest/TestThread.java b/id/server/idserverlib/src/test/java/test/lasttest/TestThread.java
deleted file mode 100644
index 9ad9890a0..000000000
--- a/id/server/idserverlib/src/test/java/test/lasttest/TestThread.java
+++ /dev/null
@@ -1,297 +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.
- ******************************************************************************/
-/*
- * 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 test.lasttest;
-
-import java.io.OutputStream;
-import java.net.URL;
-import java.util.Vector;
-
-import javax.xml.namespace.QName;
-import javax.xml.rpc.Call;
-import javax.xml.rpc.Service;
-import javax.xml.rpc.ServiceFactory;
-
-import org.apache.axis.message.SOAPBodyElement;
-import org.w3c.dom.Element;
-
-import at.gv.egovernment.moa.id.proxy.builder.SAMLRequestBuilder;
-import at.gv.egovernment.moa.id.util.AxisSecureSocketFactory;
-import at.gv.egovernment.moa.util.FileUtils;
-import at.gv.egovernment.moa.util.StreamUtils;
-import at.gv.egovernment.moa.util.URLDecoder;
-import at.gv.egovernment.moa.util.URLEncoder;
-import com.sun.net.ssl.HttpsURLConnection;
-
-/**
- * @author Stefan Knirsch
- * @version $Id$
- *
- */
-public class TestThread extends Thread {
- private LasttestClient parent = null;
- private int turn_no;
- private Dispatcher disp = null;
-
- public TestThread( LasttestClient parent, int durchlauf_nr) {
- turn_no = durchlauf_nr;
- this.parent = parent;
-
- }
-
- protected Element doCall(Element request, String server) throws Exception {
-
- /* QName serviceName = new QName("GetAuthenticationData");
-
- String endPoint = server + "services/GetAuthenticationData";
- Service service = ServiceFactory.newInstance().createService(serviceName);
- Call call = service.createCall();
- SOAPBodyElement body = new SOAPBodyElement(request);
- SOAPBodyElement[] params = new SOAPBodyElement[] { body };
- Vector responses;
- SOAPBodyElement response;
-
-
- System.out.println(DOMUtils.serializeNode(body.getAsDOM()));
- call.setTargetEndpointAddress(endPoint);
- System.out.println("Rufe WS auf: " + endPoint);
- responses = (Vector) call.invoke(params);
- System.out.println("WS aufgerufen.");
- response = (SOAPBodyElement) responses.get(0);
- System.out.println(DOMUtils.serializeNode(response.getAsDOM()));
- return response.getAsDOM();*/
-
- QName serviceName = new QName("GetAuthenticationData");
- String endPoint = server + "services/GetAuthenticationData";
- Service service = ServiceFactory.newInstance().createService(serviceName);
- Call call = service.createCall();
-
- System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
- System.setProperty("javax.net.ssl.trustStore", "C:/Programme/ApacheGroup/abnahme/server.keystore");
- System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
- SOAPBodyElement body = new SOAPBodyElement(request);
- SOAPBodyElement[] params = new SOAPBodyElement[] { body };
- Vector responses;
- SOAPBodyElement response;
-
- call.setTargetEndpointAddress(endPoint);
- responses = (Vector) call.invoke(params);
- response = (SOAPBodyElement) responses.get(0);
- return response.getAsDOM();
- }
-
- public boolean doRequest(int turnNo) throws Exception {
- long start = System.currentTimeMillis();
-
- try {
- LasttestClient.Log.write(("Starte Durchlauf " + turnNo + "\n").getBytes());
- }
- catch (Exception e) {}
-
- System.out.println("Starte Durchlauf " + turnNo);
- // Anmelden
- String URL = getURL(LasttestClient.MOA_AUTH_SERVER, "gb", "http://10.16.126.28:9080/moa-id-proxy/");
- HttpsURLConnection conn = giveConnection(URL, "GET");
- conn.connect();
- String result = new String(StreamUtils.readStream(conn.getInputStream()));
- /*
- * FOR DEBUG ONLY
- */
- // System.out.println(URL);
- // System.out.println(result);
- //----------------
-
- String MOASessionID = parseSessionIDFromForm(result);
- conn.disconnect();
-
- URL = parseDataURL(result);
- // Verify Identity Link
- conn = giveConnection(URL, "POST");
- conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
- String infoboxReadResponse = readXmldata("InfoboxReadResponse.xml");
- OutputStream out = conn.getOutputStream();
- out.write(new String("XMLResponse=" + URLEncoder.encode(infoboxReadResponse, "UTF-8")).getBytes());
- out.flush();
- out.close();
- conn.connect();
-
- /*
- * FOR DEBUG ONLY
- */
- // System.out.println(URL);
- // System.out.println(new String(StreamUtils.readStream(conn.getInputStream())));
- //----------------
-
- String redirectLoc = conn.getHeaderField("Location");
- conn.disconnect();
- //Verify Auth Block
- conn = giveConnection(redirectLoc, "POST");
- String createXMLSignatureResponse = URLEncoder.encode(readXmldata("CreateXMLSignatureResponse.xml"), "UTF-8");
- out = conn.getOutputStream();
- out.write(("XMLResponse=" + createXMLSignatureResponse).getBytes("UTF-8"));
- out.flush();
- out.close();
- conn.connect();
- redirectLoc = conn.getHeaderField("Location");
-
- /*
- * FOR DEBUG ONLY
- */
- // System.out.println(redirectLoc);
- // System.out.println(new String(StreamUtils.readStream(conn.getInputStream())));
- //----------------
- String samlArtifact = parseSamlArtifact(redirectLoc);
-
- // System.out.println("SamlArtifact: " + samlArtifact);
-
- AxisSecureSocketFactory.initialize(conn.getSSLSocketFactory());
- conn.disconnect();
-
- conn = null;
-
- SAMLRequestBuilder srb = new SAMLRequestBuilder();
-
- doCall(srb.build(MOASessionID, URLDecoder.decode(samlArtifact, "UTF-8")), LasttestClient.MOA_AUTH_SERVER);
- // writeXmldata("GetAuthenticationDataWebServiceResponse.xml", result.getBytes("UTF-8"));
-
- long end = System.currentTimeMillis();
- long diff = end - start;
- parent.sum +=diff;
- if (parent.max < diff) {
- parent.max = diff;
- }
- if (parent.min > diff) {
- parent.min = diff;
- }
- if (turnNo>0) {
- long totalmem = Runtime.getRuntime().totalMemory();
- long freemem = Runtime.getRuntime().freeMemory();
- try {
- LasttestClient.Log.write(new String("Ende Durchlauf: " + turnNo + " ==> Dauer:" + diff + " Schnitt: " + (parent.sum/turnNo/2) + " Total-Mem: " + totalmem + " Free-Mem: " + freemem + "\n").getBytes());
- LasttestClient.Log.flush();
- }
- catch (Exception e) {}
- System.out.println(new String("Ende Durchlauf: " + turnNo + " ==> Dauer:" + diff + " Schnitt: " + (parent.sum/turnNo/2) + " Total-Mem: " + totalmem + " Free-Mem: " + freemem));
- }
- return true;
-
- }
-
- public String getSubString(String input, String startsWith, String endsWith) {
- return input.substring(input.indexOf(startsWith) + startsWith.length(), input.indexOf(endsWith, input.indexOf(startsWith) + startsWith.length()));
- }
-
- public String getURL(String authURL, String target, String oaURL) {
- return authURL + "StartAuthentication?Target=" + target + "&OA=" + oaURL;
- }
-
- public HttpsURLConnection giveConnection(String targetURL, String requestMethod) throws Exception {
- HttpsURLConnection conn = (HttpsURLConnection) new URL(targetURL).openConnection();
- conn.setRequestMethod(requestMethod);
- conn.setDoInput(true);
- conn.setDoOutput(true);
- conn.setUseCaches(false);
- conn.setAllowUserInteraction(false);
- conn.setHostnameVerifier(new HostnameVerifierHack());
- return conn;
- }
-
- public String killInclusive(String input, String startsWith, String endsWith, String newValue) {
- int start = 0;
- int ende;
- String result;
- result = input;
- do {
- start = result.indexOf(startsWith, start) + startsWith.length();
- ende = result.indexOf(endsWith, start);
- result = result.substring(0, start - startsWith.length()) + newValue + result.substring(ende + endsWith.length(), result.length());
- start++;
- }
- while (result.indexOf(startsWith, ende + 1) > 0);
-
- return result;
- }
-
- public String parseDataURL(String input) {
- return getSubString(input.substring(input.indexOf("DataURL"), input.length()), "value=\"", "\"");
- }
-
- public String parseSamlArtifact(String input) {
-// System.out.println(input);
- return getSubString(input + "@@@", "SAMLArtifact=", "@@@");
- }
-
- public String parseSessionIDFromForm(String htmlForm) {
- String parName = "MOASessionID=";
- int i1 = htmlForm.indexOf(parName) + parName.length();
- int i2 = htmlForm.indexOf("\"", i1);
- return htmlForm.substring(i1, i2);
- }
-
- public String readXmldata(String filename) throws Exception {
-
- return FileUtils.readFile(LasttestClient.TESTDATA_ROOT + "xmldata/L000/" + filename, "UTF-8");
- }
-
- /**
- * @see java.lang.Runnable#run()
- */
- public void run() {
- parent.thread_counter++;
-
- try {
- if (!doRequest(turn_no)) {
- parent.error_count++;
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- parent.error_count++;
- }
- parent.thread_counter--;
- }
-
-}
diff --git a/id/server/idserverlib/src/test/java/test/tlenz/simpletest.java b/id/server/idserverlib/src/test/java/test/tlenz/simpletest.java
index 549eb4f2b..fd1473b1f 100644
--- a/id/server/idserverlib/src/test/java/test/tlenz/simpletest.java
+++ b/id/server/idserverlib/src/test/java/test/tlenz/simpletest.java
@@ -1,7 +1,19 @@
package test.tlenz;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import org.w3c.dom.Element;
+
+import iaik.asn1.structures.Name;
+import iaik.utils.RFC2253NameParser;
+import iaik.utils.RFC2253NameParserException;
+import at.gv.egovernment.moa.id.auth.data.IdentityLink;
+import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
import at.gv.egovernment.moa.id.data.AuthenticationRole;
import at.gv.egovernment.moa.id.data.AuthenticationRoleFactory;
+import at.gv.egovernment.moa.id.util.IdentityLinkReSigner;
+import at.gv.egovernment.moa.util.DOMUtils;
/*******************************************************************************
* Copyright 2014 Federal Chancellery Austria
@@ -46,12 +58,38 @@ import at.gv.egovernment.moa.id.data.AuthenticationRoleFactory;
public class simpletest {
//
public static void main(String[] args) {
+ try {
+ InputStream s = new FileInputStream("D:/idl_test/identity_link.xml");
+ Element idlTemplate = DOMUtils.parseXmlValidating(s);
+
+ //resign IDL
+ IdentityLinkReSigner identitylinkresigner = IdentityLinkReSigner.getInstance();
+ Element resignedilAssertion = identitylinkresigner.resignIdentityLink(idlTemplate, "IDLSigning");
+ IdentityLink identityLink = new IdentityLinkAssertionParser(resignedilAssertion).parseIdentityLink();
+
+ } catch (Exception e) {
+ System.out.println(e.getMessage());
+
+ }
- AuthenticationRole test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION(key=A\\,B)");
+ String subjectName = "serialNumber=896929130327, givenName=OCSP, SN=Responder 03-1, CN=OCSP Responder 03-1, C=AT";
- test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION");
- test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION(key=A)");
- test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION(keyA=A,keyB=B)");
+ try {
+ Name test = new RFC2253NameParser(subjectName).parse();
+
+ System.out.println(test.getRFC2253String());
+
+ } catch (RFC2253NameParserException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+// AuthenticationRole test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION(key=A\\,B)");
+//
+// test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION");
+// test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION(key=A)");
+// test = AuthenticationRoleFactory.buildFormPVPole("ecas-demo-EUROPEAN_COMMISSION(keyA=A,keyB=B)");
//
// System.setProperty("mandates.configuration", "D:/Projekte/svn/moa-id/moa-id.properties");
diff --git a/id/server/idserverlib/src/test/resources/log4j.xml b/id/server/idserverlib/src/test/resources/log4j.xml
new file mode 100644
index 000000000..6685c1e82
--- /dev/null
+++ b/id/server/idserverlib/src/test/resources/log4j.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+ <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
+ </layout>
+ </appender>
+
+ <root>
+ <priority value="info" />
+ <appender-ref ref="consoleAppender" />
+ </root>
+
+</log4j:configuration>
diff --git a/id/server/moa-id-commons/pom.xml b/id/server/moa-id-commons/pom.xml
index 05fd67568..a81744edf 100644
--- a/id/server/moa-id-commons/pom.xml
+++ b/id/server/moa-id-commons/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>MOA.id</groupId>
<artifactId>moa-id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<artifactId>moa-id-commons</artifactId>
<name>moa-id-commons</name>
@@ -37,12 +37,30 @@
<enabled>true</enabled>
</releases>
</repository>
+ <repository>
+ <id>egiz-commons</id>
+ <url>https://demo.egiz.gv.at/int-repo/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
</repositories>
</profile>
</profiles>
<dependencies>
+ <dependency>
+ <groupId>at.gv.egiz.components</groupId>
+ <artifactId>egiz-configuration-api</artifactId>
+ <version>0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz.components</groupId>
+ <artifactId>egiz-configuration-file</artifactId>
+ <version>0.2</version>
+ </dependency>
+
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
@@ -107,7 +125,8 @@
<artifactId>hyperjaxb3-ejb-runtime</artifactId>
<version>0.5.6</version>
</dependency>
-<!-- <dependency>
+
+ <dependency>
<groupId>org.jvnet.hyperjaxb3</groupId>
<artifactId>maven-hyperjaxb3-plugin</artifactId>
<version>0.5.6</version>
@@ -125,36 +144,77 @@
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
- </dependency> -->
+ </dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.java}</version>
</dependency>
+
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- for testing only ? -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <version>2.2.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.4.178</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>1.4</version>
+ </dependency>
+
+
+
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
- <resources>
- <resource>
- <directory>src/main/resources/config</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>target/generated-sources/xjc</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
-
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
- <plugin>
+<!-- <plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
@@ -177,13 +237,32 @@
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
- </plugin>
+ </plugin> -->
</plugins>
</pluginManagement>
<plugins>
-
+<!-- <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.9.1</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.build.directory}/generated-sources/xjc</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin> -->
+
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -212,7 +291,7 @@
</executions>
</plugin>
- <plugin>
+<!-- <plugin>
<groupId>org.jvnet.hyperjaxb3</groupId>
<artifactId>maven-hyperjaxb3-plugin</artifactId>
<version>0.5.6</version>
@@ -226,12 +305,12 @@
</executions>
<configuration>
<extension>true</extension>
- <schemaDirectory>src/main/resources/config</schemaDirectory>
- <bindingDirectory>src/main/resources/config</bindingDirectory>
- <persistenceXml>src/main/resources/config/persistence_template.xml</persistenceXml>
- <generatePackage>at.gv.egovernment.moa.id.commons.db.dao.config</generatePackage>
+ <schemaDirectory>src/main/resources</schemaDirectory>
+ <bindingDirectory>src/main/resources</bindingDirectory>
+ <persistenceXml>src/main/resources/persistence_template.xml</persistenceXml>
+ <generatePackage>at.gv.egovernment.moa.id.commons.db.dao.config.deprecated</generatePackage>
</configuration>
- </plugin>
+ </plugin> -->
<plugin>
<inherited>true</inherited>
<artifactId>maven-compiler-plugin</artifactId>
@@ -242,6 +321,42 @@
</configuration>
</plugin>
+<!-- CLI for 2.x to 3.x migragtion -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <mainClass>at.gv.egovernment.moa.id.commons.config.MigrateConfiguration</mainClass>
+ <classpathPrefix>dependency-jars/</classpathPrefix>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.5.1</version>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>
+ ${project.build.directory}/dependency-jars/
+ </outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
<!-- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
@@ -338,4 +453,4 @@
</plugin>
</plugins>
</build>
-</project> \ No newline at end of file
+</project>
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egiz/components/configuration/api/AbstractConfigurationImpl.java b/id/server/moa-id-commons/src/main/java/at/gv/egiz/components/configuration/api/AbstractConfigurationImpl.java
new file mode 100644
index 000000000..e2db54609
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egiz/components/configuration/api/AbstractConfigurationImpl.java
@@ -0,0 +1,546 @@
+/*
+ * 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.egiz.components.configuration.api;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author tlenz
+ *
+ */
+@Transactional("transactionManager")
+public abstract class AbstractConfigurationImpl implements Configuration {
+
+ private static final Logger logger = LoggerFactory
+ .getLogger(AbstractConfigurationImpl.class);
+
+ /**
+ * Get all keys from configuration
+ * @return The List<string> values or null if no keys found
+ */
+ abstract protected List<String> getAllKeys() throws ConfigurationException;
+
+ /**
+ * Get key specific value from configuration
+ * @param key The cfg id
+ * @return The string value or null if not found
+ */
+ abstract protected String getValue(String key) throws ConfigurationException;
+
+ /**
+ * Check configuration contains a specific key
+ * @param key The cfg id
+ * @return True if the cfg key is found
+ */
+ abstract protected boolean containsKey(String key) throws ConfigurationException;
+
+ /**
+ * Store a key/value pair to configuration
+ * @param key The cfg key
+ * @param value The cfg value
+ */
+ abstract protected void storeKey(String key, String value) throws ConfigurationException;
+
+ /**
+ * Delete a key from configuration
+ * @param key The cfg key
+ */
+ abstract protected void deleteKey(String key) throws ConfigurationException;
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getStringValue(java.lang.String)
+ */
+ @Override
+ public String getStringValue(String id) throws ConfigurationException {
+ return getStringValue(id, null);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getStringValue(java.lang.String, java.lang.String)
+ */
+ @Override
+ public String getStringValue(String id, String defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null) {
+ return defaultValue;
+ }
+ return value;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setStringValue(java.lang.String, java.lang.String)
+ */
+ @Override
+ public void setStringValue(String id, String value)
+ throws ConfigurationException {
+ if (containsKey(id)) {
+ logger.debug("{} is overwritten with {}", id, value);
+ }
+ storeKey(id, value);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getByteValue(java.lang.String)
+ */
+ @Override
+ public byte getByteValue(String id) throws ConfigurationException {
+ return getByteValue(id, (byte) 0);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getByteValue(java.lang.String, byte)
+ */
+ @Override
+ public byte getByteValue(String id, byte defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ byte bvalue = Byte.parseByte(value);
+ return bvalue;
+ } catch (Throwable e) {
+ logger.warn("Invalid configuration value {} is not a byte value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setByteValue(java.lang.String, byte)
+ */
+ @Override
+ public void setByteValue(String id, byte value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getShortValue(java.lang.String)
+ */
+ @Override
+ public short getShortValue(String id) throws ConfigurationException {
+ return getShortValue(id, (short) 0);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getShortValue(java.lang.String, short)
+ */
+ @Override
+ public short getShortValue(String id, short defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ short svalue = Short.parseShort(value);
+ return svalue;
+ } catch (Throwable e) {
+ logger.warn("Invalid configuration value {} is not a short value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setShortValue(java.lang.String, short)
+ */
+ @Override
+ public void setShortValue(String id, short value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getIntegerValue(java.lang.String)
+ */
+ @Override
+ public int getIntegerValue(String id) throws ConfigurationException {
+ return getIntegerValue(id, 0);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getIntegerValue(java.lang.String, int)
+ */
+ @Override
+ public int getIntegerValue(String id, int defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ int ivalue = Integer.parseInt(value);
+ return ivalue;
+ } catch (Throwable e) {
+ logger.warn("Invalid configuration value {} is not a int value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setIntegerValue(java.lang.String, int)
+ */
+ @Override
+ public void setIntegerValue(String id, int value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getLongValue(java.lang.String)
+ */
+ @Override
+ public long getLongValue(String id) throws ConfigurationException {
+ return getLongValue(id, 0L);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getLongValue(java.lang.String, long)
+ */
+ @Override
+ public long getLongValue(String id, long defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ long lvalue = Long.parseLong(value);
+ return lvalue;
+ } catch (Throwable e) {
+ logger.warn("Invalid configuration value {} is not a long value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setLongValue(java.lang.String, long)
+ */
+ @Override
+ public void setLongValue(String id, long value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getFloatValue(java.lang.String)
+ */
+ @Override
+ public float getFloatValue(String id) throws ConfigurationException {
+ return getFloatValue(id, 0.0F);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getFloatValue(java.lang.String, float)
+ */
+ @Override
+ public float getFloatValue(String id, float defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ float fvalue = Float.parseFloat(value);
+ return fvalue;
+ } catch (Throwable e) {
+ logger.warn("Invalid configuration value {} is not a float value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setFloatValue(java.lang.String, float)
+ */
+ @Override
+ public void setFloatValue(String id, float value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getDoubleValue(java.lang.String)
+ */
+ @Override
+ public double getDoubleValue(String id) throws ConfigurationException {
+ return getDoubleValue(id, 0.0D);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getDoubleValue(java.lang.String, double)
+ */
+ @Override
+ public double getDoubleValue(String id, double defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ double dvalue = Double.parseDouble(value);
+ return dvalue;
+ } catch (Throwable e) {
+ logger.warn("Invalid configuration value {} is not a double value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setDoubleValue(java.lang.String, double)
+ */
+ @Override
+ public void setDoubleValue(String id, double value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getBooleanValue(java.lang.String)
+ */
+ @Override
+ public boolean getBooleanValue(String id) throws ConfigurationException {
+ return getBooleanValue(id, false);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getBooleanValue(java.lang.String, boolean)
+ */
+ @Override
+ public boolean getBooleanValue(String id, boolean defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null)
+ return defaultValue;
+ try {
+ boolean bvalue = Boolean.parseBoolean(value);
+ return bvalue;
+ } catch (Throwable e) {
+ logger.warn(
+ "Invalid configuration value {} is not a boolean value",
+ id, e);
+ }
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setBooleanValue(java.lang.String, boolean)
+ */
+ @Override
+ public void setBooleanValue(String id, boolean value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getCharValue(java.lang.String)
+ */
+ @Override
+ public char getCharValue(String id) throws ConfigurationException {
+ return getCharValue(id, '\0');
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getCharValue(java.lang.String, char)
+ */
+ @Override
+ public char getCharValue(String id, char defaultValue)
+ throws ConfigurationException {
+ String value = getValue(id);
+ if (value == null) {
+ return defaultValue;
+ }
+ if (value.toCharArray().length > 0) {
+ return value.toCharArray()[0];
+ }
+ logger.warn("Invalid configuration value {} is not a char value", id);
+ return defaultValue;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setCharValue(java.lang.String, short)
+ */
+ @Override
+ public void setCharValue(String id, short value)
+ throws ConfigurationException {
+ setStringValue(id, String.valueOf(value));
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getObjectValue(java.lang.String, java.lang.Class)
+ */
+ @Override
+ public <T> T getObjectValue(String id, Class<T> cls)
+ throws ConfigurationException {
+ return getObjectValue(id, cls, null);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getObjectValue(java.lang.String, java.lang.Class, java.lang.Object)
+ */
+ @Override
+ public <T> T getObjectValue(String id, Class<T> cls, T defaultValue)
+ throws ConfigurationException {
+ String savedValue = getStringValue(id);
+ if (savedValue == null) {
+ return defaultValue;
+ }
+ ObjectTranslator objectTranslator = ConfigurationFactory
+ .getObjectTranslator(cls);
+ if (objectTranslator == null) {
+ logger.warn(
+ "Found object value but could not find Object Transator for cls {}",
+ cls.getName());
+
+ throw new ConfigurationException("No Object Translator for ["
+ + cls.getName() + "] available");
+ }
+ return objectTranslator.toObject(savedValue, cls);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#setObjectValue(java.lang.String, java.lang.Object)
+ */
+ @Override
+ public <T> void setObjectValue(String id, Object object)
+ throws ConfigurationException {
+ ObjectTranslator objectTranslator = ConfigurationFactory
+ .getObjectTranslator(object);
+ if (objectTranslator == null) {
+ logger.warn("Could not find Object Transator for cls {}", object
+ .getClass().getName());
+
+ throw new ConfigurationException("No Object Translator for ["
+ + object.getClass().getName() + "] available");
+ }
+ String cfgValue = objectTranslator.toString(object);
+ setStringValue(id, cfgValue);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#findConfigurationId(java.lang.String)
+ */
+ @Override
+ abstract public String[] findConfigurationId(String searchString)
+ throws ConfigurationException;
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#findByValue(java.lang.String)
+ */
+ @Override
+ abstract public String[] findByValue(String searchString)
+ throws ConfigurationException;
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getConfigurationIds()
+ */
+ @Override
+ public String[] getConfigurationIds() throws ConfigurationException {
+ List<String> allKeys = getAllKeys();
+ return allKeys.toArray(new String[allKeys.size()]);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getConfigurationIdNextLevel(java.lang.String)
+ */
+ @Override
+ public String[] getConfigurationIdNextLevel(String prefix)
+ throws ConfigurationException {
+ String[] allIds = getConfigurationIds();
+ Set<String> subIds = new HashSet<String>();
+
+ for (String id : allIds) {
+ if (id.startsWith(prefix)) {
+ String idAfterPrefix = id.substring(prefix.length());
+ int index = idAfterPrefix.indexOf(".");
+
+ if (index == 0) {
+ idAfterPrefix = idAfterPrefix.substring(1);
+ index = idAfterPrefix.indexOf(".");
+ }
+
+ if (index > 0) {
+ String adding = idAfterPrefix.substring(0, index);
+ if (!(adding.isEmpty())) {
+ subIds.add(adding);
+ }
+ } else if (!(idAfterPrefix.isEmpty())) {
+ subIds.add(idAfterPrefix);
+ }
+ }
+
+ }
+
+ String[] subIdarray = new String[subIds.size()];
+ subIdarray = (String[]) subIds.toArray(subIdarray);
+ return subIdarray;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#deleteIds(java.lang.String)
+ */
+ @Override
+ abstract public void deleteIds(String idSearch) throws ConfigurationException;
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#synchronize()
+ */
+ @Override
+ abstract public void synchronize() throws ConfigurationException;
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.Configuration#getName()
+ */
+ @Override
+ abstract public String getName();
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java
new file mode 100644
index 000000000..a04b8f454
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/MOAIDConstants.java
@@ -0,0 +1,108 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author tlenz
+ *
+ */
+public class MOAIDConstants {
+
+ //general configuration constants
+
+ public static final String FILE_URI_PREFIX = "file:/";
+
+ public static final String PREFIX_WPBK = "urn:publicid:gv.at:wbpk+";
+ public static final String PREFIX_STORK = "urn:publicid:gv.at:storkid+";
+
+ public static final String IDENIFICATIONTYPE_FN = "FN";
+ public static final String IDENIFICATIONTYPE_ERSB = "ERSB";
+ public static final String IDENIFICATIONTYPE_ZVR = "ZVR";
+ public static final String IDENIFICATIONTYPE_STORK = "STORK";
+
+ public static final String KEYBOXIDENTIFIER_SECURE = "SecureSignatureKeypair";
+ public static final String KEYBOXIDENTIFIER_CERTIFIED = "CertifiedKeypair";
+
+ public static final String TESTCREDENTIALROOTOID = "1.2.40.0.10.2.4.1";
+
+ public static final String REDIRECTTARGET_TOP = "_top";
+ public static final String REDIRECTTARGET_SELF = "_self";
+ public static final String REDIRECTTARGET_PARENT = "_parent";
+ public static final String REDIRECTTARGET_BLANK = "_blank";
+
+ public static final Map<String, String> BUSINESSSERVICENAMES;
+ public static final List<String> ALLOWED_WBPK_PREFIXES;
+ public static final List<String> ALLOWED_KEYBOXIDENTIFIER;
+ public static final List<String> ALLOWED_REDIRECTTARGETNAMES;
+ public static final List<String> ALLOWED_STORKATTRIBUTEPROVIDERS;
+
+
+ static {
+ Hashtable<String, String> tmp = new Hashtable<String, String>();
+ tmp.put(IDENIFICATIONTYPE_FN, "Firmenbuchnummer");
+ tmp.put(IDENIFICATIONTYPE_ZVR, "Vereinsnummer");
+ tmp.put(IDENIFICATIONTYPE_ERSB, "ERsB Kennzahl");
+ tmp.put(IDENIFICATIONTYPE_STORK, "STORK");
+ BUSINESSSERVICENAMES = Collections.unmodifiableMap(tmp);
+
+ List<String> awbpk = new ArrayList<String>();
+ awbpk.add(IDENIFICATIONTYPE_FN);
+ awbpk.add(IDENIFICATIONTYPE_ERSB);
+ awbpk.add(IDENIFICATIONTYPE_ZVR);
+ awbpk.add(PREFIX_WPBK + IDENIFICATIONTYPE_FN);
+ awbpk.add(PREFIX_WPBK + IDENIFICATIONTYPE_ERSB);
+ awbpk.add(PREFIX_WPBK + IDENIFICATIONTYPE_ZVR);
+ ALLOWED_WBPK_PREFIXES = Collections.unmodifiableList(awbpk);
+
+ List<String> keyboxIDs = new ArrayList<String>();
+ keyboxIDs.add(KEYBOXIDENTIFIER_SECURE);
+ keyboxIDs.add(KEYBOXIDENTIFIER_CERTIFIED);
+ ALLOWED_KEYBOXIDENTIFIER = Collections.unmodifiableList(keyboxIDs);
+
+ List<String> redirectTargets = new ArrayList<String>();
+ redirectTargets.add(REDIRECTTARGET_BLANK);
+ redirectTargets.add(REDIRECTTARGET_PARENT);
+ redirectTargets.add(REDIRECTTARGET_SELF);
+ redirectTargets.add(REDIRECTTARGET_TOP);
+ ALLOWED_REDIRECTTARGETNAMES = Collections.unmodifiableList(redirectTargets);
+
+ }
+
+ static {
+ List<String> storkAttrProvider = new ArrayList<String>();
+ storkAttrProvider.add("StorkAttributeRequestProvider");
+ storkAttrProvider.add("EHvdAttributeProvider");
+ storkAttrProvider.add("SignedDocAttributeRequestProvider");
+ storkAttrProvider.add("MandateAttributeRequestProvider");
+ storkAttrProvider.add("PVPAuthenticationProvider");
+ ALLOWED_STORKATTRIBUTEPROVIDERS = Collections.unmodifiableList(storkAttrProvider);
+
+ }
+
+}
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
new file mode 100644
index 000000000..38a111707
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationMigrationUtils.java
@@ -0,0 +1,1803 @@
+/*
+moaidconfigmoaidconfigmoaidconfig * 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.config;
+
+import iaik.x509.X509Certificate;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.cert.CertificateException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AttributeProviderPlugin;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentGeneral;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.BKUSelectionCustomizationType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.BKUURLS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.BPKDecryption;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.CPEPS;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModeType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModes;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ConnectionParameterClientAuthType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Contact;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.DefaultBKUs;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.EncBPKInformation;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ForeignIdentities;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.GeneralConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.IdentificationNumber;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.IdentityLinkSigners;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.InterfederationGatewayType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.InterfederationIDPType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.LegacyAllowed;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAKeyBoxSelector;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOASP;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Mandates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAOAUTH20;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAPVP2;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OASAML1;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OASSO;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OASTORK;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAStorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OAuth;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineMandates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Organization;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.PVP2;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.Protocols;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SAML1;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SLRequestTemplates;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SSO;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.STORK;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SecurityLayer;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.StorkAttribute;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TemplateType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TemplatesType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TestCredentials;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TimeOuts;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.TransformsInfoType;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyAuthBlock;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyIdentityLink;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+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;
+
+/**
+ * @author tlenz
+ *
+ */
+public class ConfigurationMigrationUtils {
+
+ public static final String MOA_CONFIG_BUSINESSSERVICE = "businessService";
+ public static final String MOA_CONFIG_STORKSERVICE = "storkService";
+ public static final String MOA_CONFIG_PROTOCOL_SAML1 = "id_saml1";
+ public static final String MOA_CONFIG_PROTOCOL_PVP2 = "id_pvp2x";
+ public static final String MOA_CONFIG_PROTOCOL_STORK2 = "id_stork2";
+
+ public static final long DEFAULTTIMEOUTASSERTION = 120; //sec
+ public static final long DEFAULTTIMEOUTMOASESSIONCREATED = 1200; //sec
+ public static final long DEFAULTTIMEOUTMOASESSIONUPDATED = 2700; //sec
+
+ /**
+ * Convert a MOA-ID 2.x OnlineApplication JaxB DAO to a 3.x key/value configuration
+ * The keys in the result only contains the OA specific suffix keys
+ * but no MOA-ID configuration prefix
+ *
+ * @param oa MOA-ID 2.x OnlineApplication configuration
+ * @param storkConfig
+ * @return MOA-ID 3.x OnlineApplication configuration without prefix but never Null
+ */
+ public static Map<String, String> convertHyberJaxBOnlineApplicationToKeyValue(OnlineApplication oa, STORK storkConfig) {
+ Map<String, String> result = new HashMap<String, String>();
+ if (oa != null) {
+ //convert oaID and friendlyname
+ result.put(MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME, oa.getFriendlyName());
+ result.put(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER, oa.getPublicURLPrefix());
+
+ //convert isActive flag
+ if (oa.isIsActive() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_ISACTIVE, oa.isIsActive().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_ISACTIVE, Boolean.FALSE.toString());
+
+ //convert oa type
+ if (oa.getType().equals(MOA_CONFIG_BUSINESSSERVICE))
+ result.put(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE, Boolean.TRUE.toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE, Boolean.FALSE.toString());
+
+
+ //revisionsLog
+ if (oa.getIsRevisionsLogActive() == null)
+ result.put(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED, Boolean.FALSE.toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED, oa.getIsRevisionsLogActive().toString());
+
+ if (MiscUtil.isNotEmpty(oa.getEventCodes())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES, oa.getEventCodes());
+ }
+
+
+ //convert target
+ String target_full = oa.getTarget();
+ if (MiscUtil.isNotEmpty(target_full)) {
+ if (TargetValidator.isValidTarget(target_full)) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET, target_full);
+
+ } else {
+ String[] target_split = target_full.split("-");
+
+ if (TargetValidator.isValidTarget(target_split[0])) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET, target_split[0]);
+
+ if (target_split.length > 1) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB, target_split[1]);
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_SUB, Boolean.TRUE.toString());
+
+ }
+
+ } else {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET, target_full);
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_OWN, Boolean.TRUE.toString());
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_NAME, oa.getTargetFriendlyName());
+
+ }
+ }
+ }
+
+ AuthComponentOA oaauth = oa.getAuthComponentOA();
+ if (oaauth != null) {
+
+ //convert business identifier
+ IdentificationNumber idnumber = oaauth.getIdentificationNumber();
+ if (idnumber != null) {
+ String number = idnumber.getValue();
+ if (MiscUtil.isNotEmpty(number)) {
+ String[] split = number.split("\\+");
+
+ if (MOAIDConfigurationConstants.PREFIX_WPBK.startsWith(split[0]) && split.length >= 2) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE, split[1]);
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE, split[2]);
+
+ } else if (MOAIDConfigurationConstants.PREFIX_STORK.startsWith(split[0]) && split.length >= 2) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE, MOAIDConfigurationConstants.IDENIFICATIONTYPE_STORK);
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE, split[2]);
+ }
+ }
+ }
+
+ //concert BKU URLs
+ BKUURLS bkuurls = oaauth.getBKUURLS();
+ if (bkuurls != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY, bkuurls.getHandyBKU());
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL, bkuurls.getLocalBKU());
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE, bkuurls.getOnlineBKU());
+
+ }
+
+ //concert mandates
+ Mandates mandates = oaauth.getMandates();
+ if (mandates != null) {
+ String mandateProfiles = null;
+ List<String> profileList = mandates.getProfileName();
+ for (String el : profileList) {
+ if (mandateProfiles == null)
+ mandateProfiles = el;
+ else
+ mandateProfiles += "," + el;
+ }
+
+ //only for RC1
+ if (MiscUtil.isNotEmpty(mandates.getProfiles())) {
+ if (mandateProfiles == null)
+ mandateProfiles = mandates.getProfiles();
+
+ else
+ mandateProfiles += "," + mandates.getProfiles();
+
+ }
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES, mandateProfiles);
+
+ if (mandateProfiles != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_USE, Boolean.TRUE.toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_USE, Boolean.FALSE.toString());
+ }
+
+ //convert KeyBoxSelector
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_KEYBOXIDENTIFIER,
+ oa.getKeyBoxIdentifier().value());
+
+ //convert securtiyLayer templates
+ TemplatesType templates = oaauth.getTemplates();
+ if (templates != null) {
+ List<TemplateType> templatetype = templates.getTemplate();
+ if (templatetype != null) {
+ if (templatetype.size() > 0) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE, templatetype.get(0).getURL());
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_LEGACY, Boolean.TRUE.toString());
+
+ } else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_LEGACY, Boolean.FALSE.toString());
+
+ if (templatetype.size() > 1)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE, templatetype.get(1).getURL());
+
+ if (templatetype.size() > 2)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE, templatetype.get(2).getURL());
+
+ }
+ }
+
+ //convert test credentials
+ if (oaauth.getTestCredentials() != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_ENABLED, String.valueOf(oaauth.getTestCredentials().isEnableTestCredentials()));
+
+ if (oaauth.getTestCredentials().getCredentialOID() != null) {
+ String oids = null;
+ for (String el : oaauth.getTestCredentials().getCredentialOID()) {
+ if (oids == null)
+ oids = el;
+ else
+ oids += "," + oids;
+
+ }
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_OIDs, oids);
+ }
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTIDLTRUSTSTORE, String.valueOf(oaauth.getTestCredentials().isUseTestIDLTrustStore()));
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTAUTHBLOCKTRUSTSTORE, String.valueOf(oaauth.getTestCredentials().isUseTestAuthBlockTrustStore()));
+
+ }
+
+ //convert foreign bPK
+ try {
+ EncBPKInformation bPKEncDec = oaauth.getEncBPKInformation();
+ if (bPKEncDec != null) {
+ BPKDecryption bPKDec = bPKEncDec.getBPKDecryption();
+ if (bPKDec != null
+ && MiscUtil.isNotEmpty(bPKDec.getKeyInformation())
+ && MiscUtil.isNotEmpty(bPKDec.getIv())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_BLOB, Base64Utils.encode(bPKDec.getKeyInformation()));
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_IV, Base64Utils.encode(bPKDec.getIv()));
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_KEYALIAS, bPKDec.getKeyAlias());
+ if (bPKDec.getKeyStoreFileName() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_FILENAME, bPKDec.getKeyStoreFileName());
+
+ }
+ }
+ } catch (Exception e) {
+ Logger.warn("Foreign bPK decryption information can not converted.", e);
+ }
+
+ //convert SSO
+ OASSO ssoconfig = oaauth.getOASSO();
+ if(ssoconfig != null) {
+ if (ssoconfig.isUseSSO() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_ENABLED, ssoconfig.isUseSSO().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_ENABLED, Boolean.FALSE.toString());
+
+ if (ssoconfig.isAuthDataFrame() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_USERREQUEST, ssoconfig.isAuthDataFrame().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_USERREQUEST, Boolean.TRUE.toString());
+ }
+
+ //convert interfederation configuration
+ InterfederationIDPType moaIDP = oa.getInterfederationIDP();
+ if (moaIDP != null && oa.isIsInterfederationIDP() != null && oa.isIsInterfederationIDP()) {
+ result.put(MOAIDConfigurationConstants.PREFIX_SERVICES, MOAIDConfigurationConstants.PREFIX_IIDP);
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_ATTRIBUTQUERY_URL,
+ moaIDP.getAttributeQueryURL());
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_INBOUND,
+ String.valueOf(moaIDP.isInboundSSO()));
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_OUTBOUND,
+ String.valueOf(moaIDP.isOutboundSSO()));
+
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_STORE,
+ String.valueOf(moaIDP.isStoreSSOSession()));
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_LOCALAUTHONERROR,
+ String.valueOf(moaIDP.isPerformLocalAuthenticationOnError()));
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_PASSIVEREQUEST,
+ String.valueOf(moaIDP.isPerformPassivRequest()));
+ }
+
+ //convert STORK <-> PVP2X gateway configuration
+ InterfederationGatewayType gateway = oa.getInterfederationGateway();
+ if (gateway != null && oa.isIsInterfederationGateway() != null && oa.isIsInterfederationGateway()) {
+ result.put(MOAIDConfigurationConstants.PREFIX_SERVICES, MOAIDConfigurationConstants.PREFIX_GATEWAY);
+ result.put(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER,
+ gateway.getForwardIDPIdentifier());
+
+ }
+
+ //convert STORK config
+ OASTORK config = oaauth.getOASTORK();
+ if(config != null) {
+ if (config.isStorkLogonEnabled() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ENABLED, config.isStorkLogonEnabled().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ENABLED, Boolean.FALSE.toString());
+
+ if (config.getQaa() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL, config.getQaa().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL, "4");
+
+
+ // fetch vidp config
+ if (config.isRequireConsent() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_REQUIRECONSENT,
+ config.isRequireConsent().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_REQUIRECONSENT,
+ Boolean.FALSE.toString());
+
+ List<AttributeProviderPlugin> attributeProviderPlugins = config.getAttributeProviders();
+ if (attributeProviderPlugins != null) {
+ for(int i=0; i<attributeProviderPlugins.size(); i++) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME,
+ attributeProviderPlugins.get(i).getName());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_URL,
+ attributeProviderPlugins.get(i).getUrl());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_ATTRIBUTES,
+ attributeProviderPlugins.get(i).getAttributes());
+
+ result.put(MOAIDConfigurationConstants.PREFIX_SERVICES, MOAIDConfigurationConstants.PREFIX_VIDP);
+
+ }
+ }
+
+ //only fetch C-PEPS and attributes if service is an OA
+ if (!result.containsKey(MOAIDConfigurationConstants.PREFIX_SERVICES)) {
+ //fetch C-PEPS config
+ List<String> configuredCPEPs = new ArrayList<String>();
+ if (storkConfig != null && storkConfig.getCPEPS() != null) {
+ for (CPEPS el : storkConfig.getCPEPS()) {
+ if (MiscUtil.isNotEmpty(el.getCountryCode()))
+ configuredCPEPs.add(el.getCountryCode());
+
+ }
+ }
+ int listCounter = 0;
+ if (config.getCPEPS() != null) {
+ Iterator<CPEPS> oaCPEPSInterator = config.getCPEPS().iterator();
+ while(oaCPEPSInterator.hasNext()) {
+ CPEPS oaCpeps = oaCPEPSInterator.next();
+ String oaCountryCode = oaCpeps.getCountryCode();
+ if (MiscUtil.isNotEmpty(oaCountryCode)) {
+ if (configuredCPEPs.contains(oaCountryCode))
+ configuredCPEPs.remove(oaCountryCode);
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED,
+ Boolean.TRUE.toString());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE,
+ oaCountryCode);
+
+ listCounter++;
+ }
+ }
+ }
+ Iterator<String> confCPEPS = configuredCPEPs.iterator();
+ while (confCPEPS.hasNext()) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED,
+ Boolean.FALSE.toString());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE,
+ confCPEPS.next());
+ listCounter++;
+
+ }
+
+ //fetch STORK attributes
+ List<String> configuredAttributs = new ArrayList<String>();
+ if (storkConfig != null && storkConfig.getAttributes() != null) {
+ for (StorkAttribute el : storkConfig.getAttributes()) {
+ if (MiscUtil.isNotEmpty(el.getName()))
+ configuredAttributs.add(el.getName());
+
+ }
+ }
+ listCounter = 0;
+ if (config.getOAAttributes() != null) {
+ Iterator<OAStorkAttribute> oaAttributeInterator = config.getOAAttributes().iterator();
+ while (oaAttributeInterator.hasNext()) {
+ OAStorkAttribute oaAttr = oaAttributeInterator.next();
+ if (MiscUtil.isNotEmpty(oaAttr.getName())) {
+ if (configuredAttributs.contains(oaAttr.getName()))
+ configuredAttributs.remove(oaAttr.getName());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME,
+ oaAttr.getName());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED,
+ Boolean.TRUE.toString());
+
+
+ if (oaAttr.isMandatory() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY,
+ oaAttr.isMandatory().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY,
+ Boolean.FALSE.toString());
+ listCounter++;
+ }
+ }
+ }
+ Iterator<String> configuredAttributsInterator = configuredAttributs.iterator();
+ while (configuredAttributsInterator.hasNext()) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME,
+ configuredAttributsInterator.next());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED,
+ Boolean.FALSE.toString());
+
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(listCounter) + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY,
+ Boolean.FALSE.toString());
+ listCounter++;
+
+ }
+ }
+ }
+
+ //convert protocols SAML1
+ OASAML1 saml1 = oaauth.getOASAML1();
+ if (saml1 != null) {
+ if (saml1.isProvideAUTHBlock() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_AUTHBLOCK,
+ saml1.isProvideAUTHBlock().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_AUTHBLOCK,
+ Boolean.FALSE.toString());
+
+ if (saml1.isProvideCertificate() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_CERTIFICATE,
+ saml1.isProvideCertificate().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_CERTIFICATE,
+ Boolean.FALSE.toString());
+
+ if (saml1.isProvideFullMandatorData() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_MANDATE,
+ saml1.isProvideFullMandatorData().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_MANDATE,
+ Boolean.FALSE.toString());
+
+ if (saml1.isProvideIdentityLink() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_IDL,
+ saml1.isProvideIdentityLink().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_IDL,
+ Boolean.FALSE.toString());
+
+ if (saml1.isProvideStammzahl() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID,
+ saml1.isProvideStammzahl().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID,
+ Boolean.FALSE.toString());
+
+ if (saml1.isProvideAllErrors() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_RETURNERROR,
+ saml1.isProvideAllErrors().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_RETURNERROR,
+ Boolean.TRUE.toString());
+
+ if (saml1.isIsActive() != null)
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_ENABLED,
+ saml1.isIsActive().toString());
+ else
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_ENABLED,
+ Boolean.FALSE.toString());
+ }
+
+ //convert protocols PVP2X
+ OAPVP2 pvp2 = oaauth.getOAPVP2();
+ if (pvp2 != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL,
+ pvp2.getMetadataURL());
+
+ try {
+ byte[] cert = pvp2.getCertificate();
+
+ if (MiscUtil.isNotEmpty(cert)) {
+ X509Certificate x509 = new X509Certificate(cert);
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE,
+ Base64Utils.encode(cert));
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE_SUBJECT,
+ x509.getSubjectDN().getName());
+ }
+ } catch (CertificateException | IOException e) {
+ Logger.warn("PVP2 certificate can not be loaded from Online-Applikation");
+ }
+ }
+
+ //convert protocol OpenID Connect
+ OAOAUTH20 openID = oaauth.getOAOAUTH20();
+ if (openID != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTSECRET,
+ openID.getOAuthClientSecret());
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTID,
+ openID.getOAuthClientId());
+ result.put(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL,
+ openID.getOAuthRedirectUri());
+ }
+
+
+ //convert BKU selection form customization
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCK_REMOVEBPK,
+ String.valueOf(oa.isRemoveBPKFromAuthBlock()));
+
+ if (templates != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCKTEXT,
+ templates.getAditionalAuthBlockText());
+
+ TransformsInfoType bkuSelectTemplate = templates.getBKUSelectionTemplate();
+ if (bkuSelectTemplate != null ) {
+ if (bkuSelectTemplate.isDelete())
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DELETE, Boolean.TRUE.toString());
+
+ if (MiscUtil.isNotEmpty(bkuSelectTemplate.getFilename())) {
+ try {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA,
+ new String(bkuSelectTemplate.getTransformation()));
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW,
+ bkuSelectTemplate.getFilename());
+
+ } catch (Exception e) {
+ Logger.warn("BKU selection templated can not converted.", e);
+
+ }
+ }
+
+
+ }
+
+ TransformsInfoType sendAssertionTemplate = templates.getSendAssertionTemplate();
+ if (sendAssertionTemplate != null ) {
+
+ if (sendAssertionTemplate.isDelete())
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DELETE, Boolean.TRUE.toString());
+
+ if (MiscUtil.isNotEmpty(sendAssertionTemplate.getFilename())) {
+ try {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA,
+ new String(sendAssertionTemplate.getTransformation()));
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_PREVIEW,
+ sendAssertionTemplate.getFilename());
+
+ } catch (Exception e) {
+ Logger.warn("Send assertion templated can not converted.", e);
+
+ }
+ }
+ }
+
+ BKUSelectionCustomizationType formcustom = templates.getBKUSelectionCustomization();
+ if (formcustom != null) {
+
+ if (formcustom.isOnlyMandateLoginAllowed() != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_ONLY,
+ formcustom.isOnlyMandateLoginAllowed().toString());
+ } else
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_ONLY,
+ Boolean.FALSE.toString());
+
+ if (formcustom.getAppletHeight() != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT,
+ formcustom.getAppletHeight());
+ }
+
+ if (formcustom.getAppletWidth() != null) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH,
+ formcustom.getAppletWidth());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getAppletRedirectTarget()))
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET,
+ formcustom.getAppletRedirectTarget());
+
+ if (MiscUtil.isNotEmpty(formcustom.getBackGroundColor())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR,
+ formcustom.getBackGroundColor());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getButtonBackGroundColor())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR,
+ formcustom.getButtonBackGroundColor());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getButtonBackGroundColorFocus())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS,
+ formcustom.getButtonBackGroundColorFocus());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getButtonFontColor())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR,
+ formcustom.getButtonFontColor());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getFontType())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE,
+ formcustom.getFontType());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getFrontColor())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR,
+ formcustom.getFrontColor());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getHeaderBackGroundColor())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR,
+ formcustom.getHeaderBackGroundColor());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getHeaderFrontColor())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR,
+ formcustom.getHeaderFrontColor());
+ }
+
+ if (MiscUtil.isNotEmpty(formcustom.getHeaderText())) {
+ result.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT,
+ formcustom.getHeaderText());
+ }
+ }
+ }
+ }
+
+ //set onlineapplication identifier if nothing is set
+ if (!result.containsKey(MOAIDConfigurationConstants.PREFIX_SERVICES)) {
+ result.put(MOAIDConfigurationConstants.PREFIX_SERVICES, MOAIDConfigurationConstants.PREFIX_OA);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Convert a MOA-ID 3.x key/value OnlineApplication to a 2.x JaxB DAO
+ *
+ * @param oa MOA-ID 3.x key/value OnlineApplication configuration. The MOA-ID specific prefix must be removed
+ * @return MOA-ID 2.x {OnlineApplication} or Null if oa contains no OnlineApplication keys
+ */
+ public static OnlineApplication convertKeyValueToHyberJaxBOnlineApplication(Map<String, String> oa) {
+ OnlineApplication dbOA = new OnlineApplication();
+
+ AuthComponentOA authoa = dbOA.getAuthComponentOA();
+ if (authoa == null) {
+ authoa = new AuthComponentOA();
+ dbOA.setAuthComponentOA(authoa);
+ }
+
+ dbOA.setIsActive(Boolean.valueOf(oa.get(MOAIDConfigurationConstants.SERVICE_ISACTIVE)));
+ dbOA.setPublicURLPrefix(oa.get(MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER));
+ dbOA.setFriendlyName(oa.get(MOAIDConfigurationConstants.SERVICE_FRIENDLYNAME));
+
+ if (oa.containsKey(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED)) {
+ dbOA.setIsRevisionsLogActive(Boolean.valueOf(oa.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_ENABLED)));
+ dbOA.setEventCodes(oa.get(MOAIDConfigurationConstants.SERVICE_REVERSION_LOGS_EVENTCODES));
+
+ }
+
+ if (Boolean.valueOf(oa.get(MOAIDConfigurationConstants.SERVICE_BUSINESSSERVICE))) {
+ dbOA.setType(MOA_CONFIG_BUSINESSSERVICE);
+
+ IdentificationNumber idnumber = authoa.getIdentificationNumber();
+ if (idnumber == null)
+ idnumber = new IdentificationNumber();
+
+ if (oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE) != null &&
+ oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE) != null) {
+ if (oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE).equals(MOAIDConfigurationConstants.IDENIFICATIONTYPE_STORK)) {
+ idnumber.setValue(MOAIDConfigurationConstants.PREFIX_STORK + "AT" + "+" + oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE));
+ idnumber.setType(MOAIDConfigurationConstants.BUSINESSSERVICENAMES.get(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE)));
+ } else {
+ idnumber.setValue(MOAIDConfigurationConstants.PREFIX_WPBK + oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE) + "+" + oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_VALUE));
+ idnumber.setType(MOAIDConfigurationConstants.BUSINESSSERVICENAMES.get(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_BUSINESS_TYPE)));
+ }
+ }
+
+ authoa.setIdentificationNumber(idnumber);
+
+ } else {
+ dbOA.setType(null);
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET))
+ && Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_OWN))) {
+ dbOA.setTarget(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET));
+ dbOA.setTargetFriendlyName(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_OWN_NAME));
+
+ } else {
+
+ String target = oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET);
+ if (MiscUtil.isNotEmpty(target)) {
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB))
+ && Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_USE_SUB)))
+ dbOA.setTarget(target + "-" + oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB));
+ else
+ dbOA.setTarget(target);
+
+ String targetname = TargetValidator.getTargetFriendlyName(target);
+ if (MiscUtil.isNotEmpty(targetname))
+ dbOA.setTargetFriendlyName(targetname);
+ }
+ }
+ }
+
+ //store BKU-URLs
+ BKUURLS bkuruls = new BKUURLS();
+ authoa.setBKUURLS(bkuruls);
+ bkuruls.setHandyBKU(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_HANDY));
+ bkuruls.setLocalBKU(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_LOCAL));
+ bkuruls.setOnlineBKU(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_ONLINE));
+
+ //store SecurtiyLayerTemplates
+ TemplatesType templates = authoa.getTemplates();
+ if (templates == null) {
+ templates = new TemplatesType();
+ authoa.setTemplates(templates);
+ }
+ List<TemplateType> template = templates.getTemplate();
+ if (Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_LEGACY))) {
+
+ if (template == null)
+ template = new ArrayList<TemplateType>();
+ else
+ template.clear();
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE))) {
+ TemplateType el = new TemplateType();
+ el.setURL(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE));
+ template.add(el);
+ } else
+ template.add(new TemplateType());
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE))) {
+ TemplateType el = new TemplateType();
+ el.setURL(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE));
+ template.add(el);
+ } else
+ template.add(new TemplateType());
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE))) {
+ TemplateType el = new TemplateType();
+ el.setURL(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE));
+ template.add(el);
+ } else
+ template.add(new TemplateType());
+
+ } else {
+ if (template != null && template.size() > 0) template.clear();
+ }
+
+
+ //store keyBox Identifier
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_KEYBOXIDENTIFIER)))
+ dbOA.setKeyBoxIdentifier(MOAKeyBoxSelector.fromValue(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_KEYBOXIDENTIFIER)));
+
+ Mandates mandates = new Mandates();
+ if (Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_USE))) {
+
+ if (oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES) != null) {
+ String[] profileList = oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_PROFILES).split(",");
+
+ List<String> dbProfiles = mandates.getProfileName();
+ if (dbProfiles == null) {
+ dbProfiles = new ArrayList<String>();
+ mandates.setProfileName(dbProfiles);
+
+ }
+
+ for (String el: profileList)
+ dbProfiles.add(el.trim());
+
+ mandates.setProfiles(null);
+ }
+
+ } else {
+ mandates.setProfiles(null);
+ mandates.getProfileName().clear();
+ }
+ authoa.setMandates(mandates);
+
+ TestCredentials testing = authoa.getTestCredentials();
+ if (Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_ENABLED))) {
+ if (testing == null) {
+ testing = new TestCredentials();
+ authoa.setTestCredentials(testing);
+ }
+ testing.setEnableTestCredentials(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_ENABLED)));
+
+ if (oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_OIDs) != null) {
+ String[] profileList = oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_OIDs).split(",");
+ List<String> testCredentialOIDs = Arrays.asList(profileList);
+ testing.setCredentialOID(testCredentialOIDs);
+ }
+
+ } else {
+ if (testing != null) {
+ testing.setEnableTestCredentials(false);
+ }
+
+ }
+
+ if (testing == null) {
+ testing = new TestCredentials();
+ authoa.setTestCredentials(testing);
+ }
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTIDLTRUSTSTORE)))
+ testing.setUseTestIDLTrustStore(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTIDLTRUSTSTORE)));
+ else
+ testing.setUseTestIDLTrustStore(false);
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTAUTHBLOCKTRUSTSTORE)))
+ testing.setUseTestAuthBlockTrustStore(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TESTCREDENTIALS_USETESTAUTHBLOCKTRUSTSTORE)));
+ else
+ testing.setUseTestAuthBlockTrustStore(false);
+
+
+ EncBPKInformation bPKEncDec = authoa.getEncBPKInformation();
+ if (bPKEncDec == null) {
+ bPKEncDec = new EncBPKInformation();
+ authoa.setEncBPKInformation(bPKEncDec);
+
+ }
+
+ BPKDecryption bPKDec = bPKEncDec.getBPKDecryption();
+ if (bPKDec == null) {
+ bPKDec = new BPKDecryption();
+ bPKEncDec.setBPKDecryption(bPKDec);
+ }
+
+ bPKDec.setKeyStoreFileName(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_FILENAME));
+ bPKDec.setKeyAlias(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_KEYALIAS));
+
+ if (oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_IV) != null &&
+ oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_BLOB) != null) {
+ try {
+ bPKDec.setIv(Base64Utils.decode(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_IV), false));
+ bPKDec.setKeyInformation(Base64Utils.decode(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_FOREIGNBPK_DECRYPT_BLOB), false));
+
+ } catch (IOException e) {
+ Logger.error("Configuration encryption FAILED.", e);
+
+ }
+ }
+
+ OASSO sso = authoa.getOASSO();
+ if (sso == null) {
+ sso = new OASSO();
+ authoa.setOASSO(sso);
+ sso.setAuthDataFrame(true);
+ }
+ sso.setUseSSO(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_ENABLED)));
+ sso.setAuthDataFrame(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_SSO_USERREQUEST)));
+
+ OASTORK stork = authoa.getOASTORK();
+ if (stork == null) {
+ // if there is none, create a new one with default values.
+ stork = new OASTORK();
+ authoa.setOASTORK(stork);
+ stork.setStorkLogonEnabled(false);
+ }
+ // transfer the incoming data to the database model
+ stork.setStorkLogonEnabled(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ENABLED)));
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL)))
+ stork.setQaa(Integer.valueOf(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_MINQAALEVEL)));
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES))
+ && oa.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES).equals(MOAIDConfigurationConstants.PREFIX_VIDP))
+ stork.setVidpEnabled(true);
+
+ stork.setRequireConsent(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_REQUIRECONSENT)));
+
+ Map<String, AttributeProviderPlugin> pluginMap = new HashMap<String, AttributeProviderPlugin>();
+ Map<String, OAStorkAttribute> attrMap = new HashMap<String, OAStorkAttribute>();
+ Map<String, CPEPS> cpepsMap = new HashMap<String, CPEPS>();
+
+ for (String el : oa.keySet()) {
+ if (el.startsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST);
+ OAStorkAttribute attr = new OAStorkAttribute();
+ attr.setName(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME));
+
+ attr.setMandatory(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY)));
+
+ if (Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED)))
+ attrMap.put(index, attr);
+
+
+ } else if (el.startsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST);
+ AttributeProviderPlugin attr = new AttributeProviderPlugin();
+ attr.setName(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME));
+ attr.setUrl(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_URL));
+ attr.setAttributes(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_ATTRIBUTES));
+ pluginMap.put(index, attr);
+
+
+ } else if (el.startsWith(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(el, MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST);
+ CPEPS attr = new CPEPS();
+ attr.setCountryCode(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE));
+
+ if (Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED)))
+ cpepsMap.put(index, attr);
+
+ }
+ }
+
+ stork.setAttributeProviders(new ArrayList<AttributeProviderPlugin>(pluginMap.values()));
+ stork.setOAAttributes(new ArrayList<OAStorkAttribute>(attrMap.values()));
+ stork.setCPEPS(new ArrayList<CPEPS>(cpepsMap.values()));
+
+ OASAML1 saml1 = authoa.getOASAML1();
+ if (saml1 == null) {
+ saml1 = new OASAML1();
+ authoa.setOASAML1(saml1);
+ saml1.setIsActive(false);
+ }
+ saml1.setIsActive(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_ENABLED)));
+ saml1.setProvideAUTHBlock(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_AUTHBLOCK)));
+ saml1.setProvideCertificate(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_CERTIFICATE)));
+ saml1.setProvideFullMandatorData(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_MANDATE)));
+ saml1.setProvideIdentityLink(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_IDL)));
+ saml1.setProvideStammzahl(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_BASEID)));
+ saml1.setUseCondition(false);
+ saml1.setProvideAllErrors(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_SAML1_RETURNERROR)));
+ saml1.setConditionLength(BigInteger.valueOf(-1));
+
+ OAPVP2 pvp2 = authoa.getOAPVP2();
+ if (pvp2 == null) {
+ pvp2 = new OAPVP2();
+ authoa.setOAPVP2(pvp2);
+ }
+
+// try {
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE)))
+ pvp2.setCertificate(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE).getBytes());
+
+// } catch (IOException e) {
+// Logger.warn("Uploaded Certificate can not be parsed", e);
+//
+// }
+
+ pvp2.setMetadataURL(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_URL));
+
+ OAOAUTH20 oaOAuth20 = authoa.getOAOAUTH20();
+ if (oaOAuth20 == null) {
+ oaOAuth20 = new OAOAUTH20();
+ authoa.setOAOAUTH20(oaOAuth20);
+ }
+ oaOAuth20.setOAuthClientId(dbOA.getPublicURLPrefix());
+ oaOAuth20.setOAuthRedirectUri(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_REDIRECTURL));
+ oaOAuth20.setOAuthClientSecret(oa.get(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_OPENID_CLIENTSECRET));
+
+
+
+ dbOA.setRemoveBPKFromAuthBlock(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCK_REMOVEBPK)));
+ templates.setAditionalAuthBlockText(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_BKU_AUTHBLOCKTEXT));
+
+ //store BKU-selection and send-assertion templates
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA))) {
+ TransformsInfoType el1 = new TransformsInfoType();
+// try {
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA)))
+ el1.setTransformation(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA).getBytes());
+ el1.setFilename(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW));
+ templates.setBKUSelectionTemplate(el1);
+
+// } catch (IOException e) {
+// Logger.warn("Converting BKU selection template FAILED.", e);
+// }
+ }
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA))) {
+ TransformsInfoType el1 = new TransformsInfoType();
+// try {
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA)))
+ el1.setTransformation(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA).getBytes());
+ el1.setFilename(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_PREVIEW));
+ templates.setSendAssertionTemplate(el1);
+
+// } catch (IOException e) {
+// Logger.warn("Converting Send Assertion template FAILED.", e);
+// }
+ }
+
+ BKUSelectionCustomizationType bkuselectioncustom = templates.getBKUSelectionCustomization();
+ if (bkuselectioncustom == null) {
+ bkuselectioncustom = new BKUSelectionCustomizationType();
+ templates.setBKUSelectionCustomization(bkuselectioncustom);
+ }
+
+
+ bkuselectioncustom.setMandateLoginButton(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_USE)));
+ bkuselectioncustom.setOnlyMandateLoginAllowed(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_MANDATES_OVS_ONLY)));
+
+ bkuselectioncustom.setBackGroundColor(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR));
+ bkuselectioncustom.setFrontColor(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR));
+
+ bkuselectioncustom.setHeaderBackGroundColor(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR));
+ bkuselectioncustom.setHeaderFrontColor(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR));
+ bkuselectioncustom.setHeaderText(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT));
+
+ bkuselectioncustom.setButtonBackGroundColor(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR));
+ bkuselectioncustom.setButtonBackGroundColorFocus(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS));
+ bkuselectioncustom.setButtonFontColor(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR));
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET)))
+ bkuselectioncustom.setAppletRedirectTarget(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET));
+
+ bkuselectioncustom.setFontType(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE));
+
+ bkuselectioncustom.setAppletHeight(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT));
+ bkuselectioncustom.setAppletWidth(oa.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH));
+
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES))
+ && oa.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES).equals(MOAIDConfigurationConstants.PREFIX_IIDP))
+ dbOA.setIsInterfederationIDP(true);
+
+ InterfederationIDPType moaIDP = dbOA.getInterfederationIDP();
+ if (moaIDP == null) {
+ moaIDP = new InterfederationIDPType();
+ dbOA.setInterfederationIDP(moaIDP);
+ }
+
+ moaIDP.setAttributeQueryURL(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_ATTRIBUTQUERY_URL));
+ moaIDP.setInboundSSO(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_INBOUND)));
+ moaIDP.setOutboundSSO(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_OUTBOUND)));
+ moaIDP.setStoreSSOSession(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_SSO_STORE)));
+ moaIDP.setPerformLocalAuthenticationOnError(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_LOCALAUTHONERROR)));
+ moaIDP.setPerformPassivRequest(Boolean.parseBoolean(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_PASSIVEREQUEST)));
+
+ if (MiscUtil.isNotEmpty(oa.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES))
+ && oa.get(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES).equals(MOAIDConfigurationConstants.PREFIX_GATEWAY))
+ dbOA.setIsInterfederationGateway(true);
+ InterfederationGatewayType gateway = dbOA.getInterfederationGateway();
+ if (gateway == null) {
+ gateway = new InterfederationGatewayType();
+ dbOA.setInterfederationGateway(gateway);
+ }
+ gateway.setForwardIDPIdentifier(oa.get(MOAIDConfigurationConstants.SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER));
+
+
+ return dbOA;
+ }
+
+
+ /**
+ * Convert a MOA-ID 2.x MOAIDConfiguration JaxB DAO to a 3.x key/value configuration
+ *
+ * @param config MOA-ID 2.x configuration
+ * @return MOA-ID 3.x key/value configuration but never null
+ */
+ public static Map<String, String> convertHyberJaxBMOAIDConfigToKeyValue(MOAIDConfiguration config) {
+ Map<String, String> result = new HashMap<String, String>();
+ if (config != null) {
+ AuthComponentGeneral auth = config.getAuthComponentGeneral();
+
+ if (auth != null) {
+ ForeignIdentities foreign = auth.getForeignIdentities();
+
+ if (foreign != null) {
+ ConnectionParameterClientAuthType connect_foreign = foreign.getConnectionParameter();
+ if (connect_foreign != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL,
+ connect_foreign.getURL());
+ }
+ }
+
+ GeneralConfiguration authgen = auth.getGeneralConfiguration();
+ if (authgen != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL,
+ authgen.getCertStoreDirectory());
+
+ if (authgen.isTrustManagerRevocationChecking() != null)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_REVOCATIONCHECKING,
+ authgen.isTrustManagerRevocationChecking().toString());
+ else
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_REVOCATIONCHECKING,
+ Boolean.TRUE.toString());
+
+ result.put(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX,
+ authgen.getPublicURLPreFix());
+
+ TimeOuts timeouts = authgen.getTimeOuts();
+ if (timeouts != null) {
+
+ if(timeouts.getAssertion() != null)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION,
+ String.valueOf(timeouts.getAssertion().longValue()));
+ if(timeouts.getMOASessionCreated() != null)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE,
+ String.valueOf(timeouts.getMOASessionCreated().longValue()));
+ if(timeouts.getMOASessionUpdated() != null)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE,
+ String.valueOf(timeouts.getMOASessionUpdated().longValue()));
+
+ }
+ }
+
+ MOASP moaspss = auth.getMOASP();
+ if (moaspss != null) {
+ ConnectionParameterClientAuthType con = moaspss.getConnectionParameter();
+ if (con != null)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_URL,
+ con.getURL());
+
+ VerifyAuthBlock authblock = moaspss.getVerifyAuthBlock();
+ if (authblock != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD,
+ authblock.getTrustProfileID());
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_TEST,
+ authblock.getTestTrustProfileID());
+
+
+ List<String> list = authblock.getVerifyTransformsInfoProfileID();
+ if (list.size() == 1)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM,
+ list.get(0));
+
+ else {
+ Logger.warn("More the one AuthBlocktransformation are not supported any more.");
+ }
+ }
+
+ VerifyIdentityLink idl = moaspss.getVerifyIdentityLink();
+ if (idl != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD,
+ idl.getTrustProfileID());
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_TEST,
+ idl.getTestTrustProfileID());
+ }
+ }
+
+ OnlineMandates mandates = auth.getOnlineMandates();
+ if (mandates != null) {
+ ConnectionParameterClientAuthType con = mandates.getConnectionParameter();
+ if (con != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL,
+ con.getURL());
+ }
+ }
+
+ Protocols protocols = auth.getProtocols();
+ if (protocols != null) {
+ LegacyAllowed legacy = protocols.getLegacyAllowed();
+
+ if (legacy != null) {
+ List<String> list = legacy.getProtocolName();
+ if (list.contains(MOA_CONFIG_PROTOCOL_SAML1))
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY,
+ Boolean.TRUE.toString());
+
+ if (list.contains(MOA_CONFIG_PROTOCOL_PVP2))
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY,
+ Boolean.TRUE.toString());
+ }
+
+ SAML1 saml1 = protocols.getSAML1();
+ if (saml1 != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_ENABLED,
+ String.valueOf(saml1.isIsActive()));
+
+ if (MiscUtil.isEmpty(saml1.getSourceID()) && MiscUtil.isNotEmpty(authgen.getAlternativeSourceID()))
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID,
+ authgen.getAlternativeSourceID());
+ else
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID,
+ saml1.getSourceID());
+
+ }
+
+ OAuth oauth = protocols.getOAuth();
+ if (oauth != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_ENABLED,
+ String.valueOf(oauth.isIsActive()));
+
+ }
+
+ PVP2 pvp2 = protocols.getPVP2();
+ if (pvp2 != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_ENABLED,
+ String.valueOf(pvp2.isIsActive()));
+
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME,
+ pvp2.getIssuerName());
+
+ List<Contact> con = pvp2.getContact();
+
+ if (con != null && con.size() > 0) {
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY,
+ con.get(0).getCompany());
+
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_FAMLIYNAME,
+ con.get(0).getSurName());
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME,
+ con.get(0).getGivenName());
+ if (!con.get(0).getMail().isEmpty())
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_MAIL,
+ con.get(0).getMail().get(0));
+ if (!con.get(0).getPhone().isEmpty())
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_PHONE,
+ con.get(0).getPhone().get(0));
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE,
+ con.get(0).getType());
+ }
+
+ Organization org = pvp2.getOrganization();
+ if (org != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME,
+ org.getDisplayName());
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME,
+ org.getName());
+ result.put(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL,
+ org.getURL());
+ }
+ }
+ }
+
+ SecurityLayer seclayer = auth.getSecurityLayer();
+ if (seclayer != null) {
+ List<TransformsInfoType> list = seclayer.getTransformsInfo();
+ if (!list.isEmpty()) {
+// try {
+ //TODO: check if Transformation is always BASE64 encoded
+// result.put(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64,
+// Base64Utils.encode(list.get(0).getTransformation()));
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64,
+ new String(list.get(0).getTransformation()));
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_NAME,
+ list.get(0).getFilename());
+
+// } catch (IOException e) {
+// Logger.warn("AuthBlockTransformation can not converted.", e);
+//
+// }
+
+ } else {
+ Logger.warn("AuthBlockTransformation can not converted.");
+
+ }
+ }
+
+ SSO sso = auth.getSSO();
+ if (sso != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_SERVICENAME,
+ sso.getFriendlyName());
+
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT,
+ sso.getSpecialText());
+
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET,
+ sso.getTarget());
+ }
+ }
+
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL,
+ config.getTrustedCACertificates());
+
+
+ DefaultBKUs defaultbkus = config.getDefaultBKUs();
+ if (defaultbkus != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY,
+ defaultbkus.getHandyBKU());
+ result.put(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL,
+ defaultbkus.getLocalBKU());
+ result.put(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE,
+ defaultbkus.getOnlineBKU());
+ }
+
+ SLRequestTemplates slreq = config.getSLRequestTemplates();
+ if (slreq != null) {
+ result.put(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY,
+ slreq.getHandyBKU());
+ result.put(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL,
+ slreq.getLocalBKU());
+ result.put(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE,
+ slreq.getOnlineBKU());
+
+ }
+
+ ForeignIdentities foreign = auth.getForeignIdentities();
+
+ if (foreign != null) {
+ STORK stork = foreign.getSTORK();
+
+ if (stork != null) {
+ // deep clone all the things
+ // to foreclose lazyloading session timeouts
+ if (stork.getCPEPS() != null) {
+ for (int i=0; i<stork.getCPEPS().size(); i++) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY,
+ stork.getCPEPS().get(i).getCountryCode());
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL,
+ stork.getCPEPS().get(i).getURL());
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_SUPPORT_XMLDSIG,
+ String.valueOf(stork.getCPEPS().get(i).isSupportsXMLSignature()));
+
+ }
+ }
+
+ List<StorkAttribute> tmp = stork.getAttributes();
+ if(null != tmp) {
+ for (int i=0; i<tmp.size(); i++) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME,
+ tmp.get(i).getName());
+
+ if (tmp.get(i).isMandatory() != null)
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY,
+ tmp.get(i).isMandatory().toString());
+ else
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY,
+ Boolean.FALSE.toString());
+
+ }
+ }
+
+ try {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA,
+ String.valueOf(stork.getQualityAuthenticationAssuranceLevel()));
+
+ } catch(NullPointerException e) {
+ result.put(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_QAA,
+ String.valueOf(4));
+ }
+ }
+
+ }
+
+ }
+
+ return result;
+ }
+
+ /**
+ * Convert a MOA-ID 3.x key/value general configuration to a 2.x JaxB DAO
+ *
+ * @param moaconfig MOA-ID 3.x key/value general configuration
+ * @return MOA-ID 2.x {MOAIDConfiguration} or Null if moaconfig contains no MOA-ID configuration keys
+ */
+ public static MOAIDConfiguration convertKeyValueToHyberJaxBMOAIDConfiguration(Map<String, String> moaconfig) {
+
+ MOAIDConfiguration dbconfig = new MOAIDConfiguration();
+
+
+ AuthComponentGeneral dbauth = dbconfig.getAuthComponentGeneral();
+ if (dbauth == null) {
+ dbauth = new AuthComponentGeneral();
+ dbconfig.setAuthComponentGeneral(dbauth);
+ }
+
+ GeneralConfiguration dbauthgeneral = dbauth.getGeneralConfiguration();
+ if (dbauthgeneral == null) {
+ dbauthgeneral = new GeneralConfiguration();
+ dbauth.setGeneralConfiguration(dbauthgeneral);
+ }
+
+ dbauthgeneral.setPublicURLPreFix(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PUBLICURLPREFIX));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL)))
+ dbauthgeneral.setCertStoreDirectory(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_CERTSTORE_URL));
+
+ dbauthgeneral.setTrustManagerRevocationChecking(Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_REVOCATIONCHECKING)));
+
+ TimeOuts dbtimeouts = dbauthgeneral.getTimeOuts();
+ if (dbtimeouts == null) {
+ dbtimeouts = new TimeOuts();
+ dbauthgeneral.setTimeOuts(dbtimeouts);
+ }
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION)))
+ dbtimeouts.setAssertion(new BigInteger(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUTS_TRANSACTION)));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE)))
+ dbtimeouts.setMOASessionCreated(new BigInteger(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_CREATE)));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE)))
+ dbtimeouts.setMOASessionUpdated(new BigInteger(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TIMEOUS_SSO_UPDATE)));
+
+ Protocols dbprotocols = dbauth.getProtocols();
+ if (dbprotocols == null) {
+ dbprotocols = new Protocols();
+ dbauth.setProtocols(dbprotocols);
+ }
+ LegacyAllowed legprot = dbprotocols.getLegacyAllowed();
+ if (legprot == null) {
+ legprot = new LegacyAllowed();
+ dbprotocols.setLegacyAllowed(legprot);
+ }
+
+ List<String> el = legprot.getProtocolName();
+ if (el == null) {
+ el = new ArrayList<String>();
+ legprot.setProtocolName(el);
+
+ }
+
+ //Workaround for DB cleaning is only needed for one or the releases (insert in 2.1.1)
+ if (el.size() > 2)
+ el.clear();
+
+ if (el.contains(MOA_CONFIG_PROTOCOL_PVP2)) {
+ if (!Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY)))
+ el.remove(MOA_CONFIG_PROTOCOL_PVP2);
+
+ } else {
+ if (Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_LEGACY)))
+ el.add(MOA_CONFIG_PROTOCOL_PVP2);
+ }
+
+ if (el.contains(MOA_CONFIG_PROTOCOL_SAML1)) {
+ if (!Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY)))
+ el.remove(MOA_CONFIG_PROTOCOL_SAML1);
+
+ } else {
+ if (Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_LEGACY)))
+ el.add(MOA_CONFIG_PROTOCOL_SAML1);
+ }
+
+ SAML1 saml1= dbprotocols.getSAML1();
+ if (saml1 == null) {
+ saml1 = new SAML1();
+ dbprotocols.setSAML1(saml1);
+ }
+ saml1.setIsActive(Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_ENABLED)));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID))) {
+ saml1.setSourceID(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_SAML1_SOURCEID));
+ }
+
+ OAuth oauth= dbprotocols.getOAuth();
+ if (oauth == null) {
+ oauth = new OAuth();
+ dbprotocols.setOAuth(oauth);
+ }
+ oauth.setIsActive(Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_OPENID_ENABLED)));
+
+ PVP2 pvp2 = dbprotocols.getPVP2();
+ if (pvp2 == null) {
+ pvp2 = new PVP2();
+ dbprotocols.setPVP2(pvp2);
+ }
+
+ pvp2.setIsActive(Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_ENABLED)));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME)))
+ pvp2.setIssuerName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME));
+
+ Organization pvp2org = pvp2.getOrganization();
+ if (pvp2org == null) {
+ pvp2org = new Organization();
+ pvp2.setOrganization(pvp2org);
+ }
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME)))
+ pvp2org.setDisplayName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME));
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME)))
+ pvp2org.setName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME));
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL)))
+ pvp2org.setURL(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL));
+
+ List<Contact> pvp2cont = pvp2.getContact();
+ if (pvp2cont == null) {
+ pvp2cont = new ArrayList<Contact>();
+ pvp2.setContact(pvp2cont);
+ }
+
+ if (pvp2cont.size() == 0) {
+ Contact cont = new Contact();
+ pvp2cont.add(cont);
+ }
+
+ Contact cont = pvp2cont.get(0);
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY)))
+ cont.setCompany(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME)))
+ cont.setGivenName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME));
+
+ cont.setMail(Arrays.asList(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_MAIL)));
+
+ cont.setPhone(Arrays.asList(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_PHONE)));
+
+ cont.setSurName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_FAMLIYNAME));
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE)))
+ cont.setType(moaconfig.get(MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE));
+
+ SSO dbsso = dbauth.getSSO();
+ if (dbsso == null) {
+ dbsso = new SSO();
+ dbauth.setSSO(dbsso);
+ }
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_SERVICENAME)))
+ dbsso.setFriendlyName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_SERVICENAME));
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT)))
+ dbsso.setSpecialText(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_AUTHBLOCK_TEXT));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET))) {
+ dbsso.setTarget(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SSO_TARGET));
+ }
+
+ DefaultBKUs dbbkus = dbconfig.getDefaultBKUs();
+
+ if (dbbkus == null) {
+ dbbkus = new DefaultBKUs();
+ dbconfig.setDefaultBKUs(dbbkus);
+ }
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY)))
+ dbbkus.setHandyBKU(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_HANDY));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE)))
+ dbbkus.setOnlineBKU(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_ONLINE));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL)))
+ dbbkus.setLocalBKU(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_BKU_LOCAL));
+
+ ChainingModes dbchainingmodes = dbconfig.getChainingModes();
+ if (dbchainingmodes == null) {
+ dbchainingmodes = new ChainingModes();
+ dbconfig.setChainingModes(dbchainingmodes);
+ }
+
+ dbchainingmodes.setSystemDefaultMode(
+ ChainingModeType.PKIX);
+
+ IdentityLinkSigners idlsigners = dbauth.getIdentityLinkSigners();
+ if (idlsigners == null) {
+ idlsigners = new IdentityLinkSigners();
+ dbauth.setIdentityLinkSigners(idlsigners);
+ }
+
+ ForeignIdentities dbforeign = dbauth.getForeignIdentities();
+ if (dbforeign == null) {
+ dbforeign = new ForeignIdentities();
+ dbauth.setForeignIdentities(dbforeign);
+ }
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL))) {
+ ConnectionParameterClientAuthType forcon = dbforeign.getConnectionParameter();
+ if (forcon == null) {
+ forcon = new ConnectionParameterClientAuthType();
+ dbforeign.setConnectionParameter(forcon);
+ }
+ forcon.setURL(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_SZRGW_URL));
+ }
+
+ ForeignIdentities foreign = dbauth.getForeignIdentities();
+ if (foreign != null) {
+ STORK stork = foreign.getSTORK();
+ if (stork == null) {
+ stork = new STORK();
+ foreign.setSTORK(stork);
+
+ }
+
+ Map<String, StorkAttribute> attrMap = new HashMap<String, StorkAttribute>();
+ Map<String, CPEPS> cpepsMap = new HashMap<String, CPEPS>();
+
+ for (String key : moaconfig.keySet()) {
+ if (key.startsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(key, MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST);
+ if (!attrMap.containsKey(index)) {
+ StorkAttribute attr = new StorkAttribute();
+ attr.setName(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME));
+ attr.setMandatory(Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY)));
+ attr.setHjid(Long.valueOf(index));
+ attrMap.put(index, attr);
+ }
+
+ } else if (key.startsWith(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST)) {
+ String index = KeyValueUtils.getFirstChildAfterPrefix(key, MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST);
+ if (!cpepsMap.containsKey(index)) {
+ CPEPS attr = new CPEPS();
+ attr.setCountryCode(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY));
+
+ attr.setURL(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_URL));
+
+ attr.setSupportsXMLSignature(Boolean.parseBoolean(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST
+ + "." + index + "."
+ + MOAIDConfigurationConstants.GENERAL_AUTH_STORK_CPEPS_LIST_SUPPORT_XMLDSIG)));
+
+ attr.setHjid(Long.valueOf(index));
+
+ cpepsMap.put(index, attr);
+ }
+
+ }
+ }
+
+ stork.setAttributes(new ArrayList<StorkAttribute>(attrMap.values()));
+ stork.setCPEPS(new ArrayList<CPEPS>(cpepsMap.values()));
+
+ }
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL))) {
+ OnlineMandates dbmandate = dbauth.getOnlineMandates();
+ if (dbmandate == null) {
+ dbmandate = new OnlineMandates();
+ dbauth.setOnlineMandates(dbmandate);
+ }
+ ConnectionParameterClientAuthType dbmandateconnection = dbmandate.getConnectionParameter();
+
+ if (dbmandateconnection == null) {
+ dbmandateconnection = new ConnectionParameterClientAuthType();
+ dbmandate.setConnectionParameter(dbmandateconnection);
+ }
+ dbmandateconnection.setURL(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_SERVICES_OVS_URL));
+ }
+
+ MOASP dbmoasp = dbauth.getMOASP();
+ if (dbmoasp == null) {
+ dbmoasp = new MOASP();
+ dbauth.setMOASP(dbmoasp);
+ }
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_URL))) {
+ ConnectionParameterClientAuthType moaspcon = dbmoasp.getConnectionParameter();
+ if (moaspcon == null) {
+ moaspcon = new ConnectionParameterClientAuthType();
+ dbmoasp.setConnectionParameter(moaspcon);
+ }
+ moaspcon.setURL(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_URL));
+ }
+ VerifyIdentityLink moaidl = dbmoasp.getVerifyIdentityLink();
+ if (moaidl == null) {
+ moaidl = new VerifyIdentityLink();
+ dbmoasp.setVerifyIdentityLink(moaidl);
+ }
+ moaidl.setTrustProfileID(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD));
+ moaidl.setTestTrustProfileID(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_TEST));
+ VerifyAuthBlock moaauth = dbmoasp.getVerifyAuthBlock();
+ if (moaauth == null) {
+ moaauth = new VerifyAuthBlock();
+ dbmoasp.setVerifyAuthBlock(moaauth);
+ }
+ moaauth.setTrustProfileID(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD));
+ moaauth.setTestTrustProfileID(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_TEST));
+
+ if (moaauth.getVerifyTransformsInfoProfileID() == null) {
+ moaauth.setVerifyTransformsInfoProfileID(new ArrayList<String>());
+
+ }
+ moaauth.getVerifyTransformsInfoProfileID().add(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM));
+
+ SecurityLayer seclayertrans = dbauth.getSecurityLayer();
+ if (seclayertrans == null) {
+ seclayertrans = new SecurityLayer();
+ dbauth.setSecurityLayer(seclayertrans);
+ }
+
+// try {
+ List<TransformsInfoType> trans = new ArrayList<TransformsInfoType>();
+ TransformsInfoType elem = new TransformsInfoType();
+ elem.setTransformation(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64).getBytes());
+ elem.setFilename(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_NAME));
+ trans.add(elem);
+ seclayertrans.setTransformsInfo(trans);
+
+// } catch (IOException e) {
+// Logger.warn("Converting AuthBlock transformation FAILED.", e);
+// }
+
+
+ SLRequestTemplates slrequesttempl = dbconfig.getSLRequestTemplates();
+ if (slrequesttempl == null) {
+ slrequesttempl = new SLRequestTemplates();
+ dbconfig.setSLRequestTemplates(slrequesttempl);
+ }
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY)))
+ slrequesttempl.setHandyBKU(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_HANDY));
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL)))
+ slrequesttempl.setLocalBKU(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_LOCAL));
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE)))
+ slrequesttempl.setOnlineBKU(moaconfig.get(MOAIDConfigurationConstants.GENERAL_DEFAULTS_TEMPLATES_ONLINE));
+
+ if (MiscUtil.isNotEmpty(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL)))
+ dbconfig.setTrustedCACertificates(moaconfig.get(MOAIDConfigurationConstants.GENERAL_AUTH_TRUSTSTORE_URL));
+
+
+ return dbconfig;
+ }
+
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationUtil.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationUtil.java
new file mode 100644
index 000000000..4130b2c5d
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/ConfigurationUtil.java
@@ -0,0 +1,277 @@
+package at.gv.egovernment.moa.id.commons.config;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.transaction.annotation.Transactional;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.STORK;
+import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+public class ConfigurationUtil {
+
+ final boolean isOverwriteData;
+
+ public ConfigurationUtil(boolean isOverwriteData){
+ this.isOverwriteData = isOverwriteData;
+ }
+
+ /**
+ * Read an input MOAID 2 XML file, transfer it to properties and write the
+ * properties to a MOAID 3 property file.
+ *
+ * @param inStream
+ * the input stream to read from.
+ * @param outFile
+ * the output file to write to.
+ * @throws JAXBException
+ */
+ public void readFromXMLFileConvertToPropertyFile(FileInputStream inStream, File outFile) throws JAXBException {
+
+ try (FileOutputStream outStream = new FileOutputStream(outFile);) {
+
+ // get config from xml file
+ JAXBContext jc = JAXBContext.newInstance("at.gv.egovernment.moa.id.commons.db.dao.config.deprecated");
+ Unmarshaller m = jc.createUnmarshaller();
+ MOAIDConfiguration config = (MOAIDConfiguration) m.unmarshal(inStream);
+
+ // serialize config to JSON properties
+ Properties result = moaIdConfigToJsonProperties(config);
+
+ // write to output stream
+ result.store(outStream, null);
+
+ } catch (FileNotFoundException e) {
+ System.out.println("Could not find the output file.");
+ System.exit(1);
+ } catch (IOException e) {
+ System.out.println("Could not write to the output file.");
+ System.exit(1);
+ }
+ }
+
+ /**
+ * Helper method to serialize a {@link MOAIDConfiguration} to Properties
+ * with JSON encoded values.
+ *
+ * @param config
+ * the MOAIDConfiguration to serialize
+ * @return {@link Properties} containing the database key and the serialized
+ * values
+ * @throws JsonProcessingException
+ * is thrown if problem occurred while serializing one of the
+ * database values
+ */
+ public static Properties moaIdConfigToJsonProperties(MOAIDConfiguration config) throws JsonProcessingException {
+
+ Properties result = new Properties();
+
+ if (config == null) {
+ return null;
+
+ }
+ STORK storkConfig = null;
+ try {
+ storkConfig = config.getAuthComponentGeneral().getForeignIdentities().getSTORK();
+
+ } catch (Exception e) {
+ Logger.debug("No general STORK configuration found.");
+
+ }
+
+ //convert all online applications
+ List<OnlineApplication> oaList = config.getOnlineApplication();
+ for (int i=0; i<oaList.size(); i++) {
+ OnlineApplication oa = oaList.get(i);
+ Map<String, String> keyValueOA = ConfigurationMigrationUtils.convertHyberJaxBOnlineApplicationToKeyValue(oa, storkConfig);
+
+ String serviceIdentifier = keyValueOA.get(MOAIDConfigurationConstants.PREFIX_SERVICES);
+ if (MiscUtil.isEmpty(serviceIdentifier)) {
+ Logger.info("Use default ServiceIdentifier.");
+ serviceIdentifier = MOAIDConfigurationConstants.PREFIX_OA;
+ }
+
+ //write all OA key/value pairs to configuration
+ for (String key : keyValueOA.keySet()) {
+ if (MiscUtil.isNotEmpty(keyValueOA.get(key)))
+ result.put(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ + "." + serviceIdentifier + "." + String.valueOf(i) + "."
+ + key,
+ keyValueOA.get(key));
+
+ }
+ //set correct metadata list identifier
+ result.put(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ + "." + serviceIdentifier + "." + String.valueOf(i) + "."
+ + MOAIDConfigurationConstants.METADATA_LIST +".0",
+ MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ + "." + serviceIdentifier);
+ }
+
+ Map<String, String> keyValueGeneral = ConfigurationMigrationUtils.convertHyberJaxBMOAIDConfigToKeyValue(config);
+ //write all OA key/value pairs to configuration
+ for (String key : keyValueGeneral.keySet()) {
+ if (MiscUtil.isNotEmpty(keyValueGeneral.get(key)))
+ result.put(key, keyValueGeneral.get(key));
+
+ }
+
+ return result;
+ }
+
+ /**
+ * Exports a key-value database to a property file, where keys are the same
+ * as in the database, and the values are serialized JSON objects.
+ *
+ * @param inputDBConfigFilePath
+ * the path to the database properties, for the db the data is
+ * read from.
+ * @param outFile
+ * the destination file for the exported data.
+ */
+ public void readFromDBWriteToFile(String inputDBConfigFilePath, File outFile) {
+
+ try (FileOutputStream outStream = new FileOutputStream(outFile);) {
+
+ Properties result = new Properties();
+
+ System.getProperties().setProperty("location", "file:" + inputDBConfigFilePath);
+ ApplicationContext context = new ClassPathXmlApplicationContext("configuration.beans.xml");
+ Configuration dbConfiguration = (Configuration) context.getBean("config");
+ String[] allKeys = dbConfiguration.getConfigurationIds();
+
+ for (String key : allKeys) {
+
+ // extract database value
+ String value = dbConfiguration.getStringValue(key);
+
+ // add to properties
+ result.setProperty(key, value);
+ }
+
+ // write to output stream
+ result.store(outStream, null);
+
+ System.out.println("Property configuration written to:");
+ System.out.println(outFile.getAbsolutePath());
+
+ } catch (FileNotFoundException e) {
+ System.out.println("Could not find the output file.");
+ System.exit(1);
+ } catch (IOException e) {
+ System.out.println("Could not write to the output file.");
+ System.exit(1);
+
+ } catch (ConfigurationException e) {
+ System.out.println("Could not read from database.");
+ System.exit(1);
+
+ }
+ }
+
+ /**
+ * Read an input property file, deserialize it's values and write them to
+ * the given database.
+ *
+ * @param inStream
+ * the FileInputStream to read from.
+ * @param outputDBConfigFilePath
+ * the path to the database properties, for the db which is
+ * written.
+ * @throws IOException
+ * is thrown in case the properties could not be loaded from the
+ * stream
+ */
+ @Transactional
+ public void readFromFileWriteToDB(FileInputStream inStream, String outputDBConfigFilePath) throws IOException {
+
+ Properties inProperties = new Properties();
+ inProperties.load(inStream);
+
+ System.getProperties().setProperty("moa.id.webconfig", "file:" + outputDBConfigFilePath);
+ ApplicationContext context = new ClassPathXmlApplicationContext(
+ new String[]{
+ "configuration.beans.xml",
+ "moaid.migration.beans.xml"
+ });
+ Configuration dbConfiguration = (Configuration) context.getBean("moaidconfig");
+
+ List<String> keys = null;
+ try {
+ keys = Arrays.asList(dbConfiguration.getConfigurationIds());
+
+ } catch (ConfigurationException e1) {
+ System.out.println("Database can not be read.");
+ System.exit(1);
+ }
+
+ if (keys == null) {
+ System.out.println("Database can not be read.");
+ System.exit(1);
+ }
+
+ if (!keys.isEmpty() && !isOverwriteData) {
+ System.out.println("The database already contains configuration data.");
+ System.out.println("Use force switch if you want to override data)");
+ System.exit(1);
+ }
+
+ if (isOverwriteData) {
+ // remove existing entries
+ for (String key : keys) {
+ try {
+ dbConfiguration.deleteIds(key);
+ } catch (ConfigurationException e) {
+ System.out.println("Could NOT persist the configuration file's information in the database.");
+
+ }
+ }
+ }
+
+ Enumeration<?> propertyNames = inProperties.propertyNames();
+
+ while (propertyNames.hasMoreElements()) {
+ String key = (String) propertyNames.nextElement();
+ String json = inProperties.getProperty(key);
+
+ // add to database
+ try {
+ dbConfiguration.setStringValue(key, json);
+
+ } catch (ConfigurationException e) {
+ System.out.println("Could NOT persist the configuration file's information in the database.");
+
+ }
+
+
+
+ }
+ System.out.println("Data has been successfully written to the database.");
+ }
+
+ private static void readFromDBWriteToDB(String inputDBConfigFilePath, String outputDBConfigFilePath) {
+ //TODO: implement
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MOAIDConfigurationConstants.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MOAIDConfigurationConstants.java
new file mode 100644
index 000000000..c338c65ba
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MOAIDConfigurationConstants.java
@@ -0,0 +1,271 @@
+package at.gv.egovernment.moa.id.commons.config;
+
+import at.gv.egovernment.moa.id.commons.MOAIDConstants;
+
+/**
+ *
+ *
+ */
+public final class MOAIDConfigurationConstants extends MOAIDConstants {
+
+ private MOAIDConfigurationConstants() {
+ // restrict instantiation
+ }
+ public static final String METADATA_LIST = "__LI";
+
+ public static final String WEBGUI_EMPTY_ELEMENT = "null";
+ public static final String WEBGUI_EMPTY_ELEMENT_EMPTY = "empty";
+
+ //Basic key namespaces
+ public static final String PREFIX_MOAID = "moa.id";
+ public static final String PREFIX_GENERAL = "general";
+ public static final String PREFIX_SERVICES = "services";
+ public static final String PREFIX_OA = "oa";
+ public static final String PREFIX_VIDP = "vidp";
+ public static final String PREFIX_IIDP = "iidp";
+ public static final String PREFIX_GATEWAY = "gateway";
+
+ public static final String PREFIX_MOAID_GENERAL = PREFIX_MOAID + "." + PREFIX_GENERAL;
+ public static final String PREFIX_MOAID_SERVICES = PREFIX_MOAID + "." + PREFIX_SERVICES;
+ public static final String PREFIX_MOAID_SERVICES_OA = PREFIX_MOAID_SERVICES + "." + PREFIX_OA;
+ public static final String PREFIX_MOAID_SERVICES_VIDP = PREFIX_MOAID_SERVICES + "." + PREFIX_VIDP;
+ public static final String PREFIX_MOAID_SERVICES_IIDP = PREFIX_MOAID_SERVICES + "." + PREFIX_IIDP;
+ public static final String PREFIX_MOAID_SERVICES_GATEWAY = PREFIX_MOAID_SERVICES + "." + PREFIX_GATEWAY;
+
+ //Namespaces for online applications
+ public static final String SERVICE_UNIQUEIDENTIFIER = "uniqueID"; //publicURLPrefix
+ public static final String SERVICE_FRIENDLYNAME = "friendlyName"; //friendlyName
+ public static final String SERVICE_BUSINESSSERVICE = "businessservice"; //type
+ public static final String SERVICE_ISACTIVE = "isActive"; //isActive
+
+ //service authentication keys
+ private static final String AUTH = "auth";
+ private static final String TARGET = "target";
+ private static final String BKU = "bku";
+ private static final String TESTCREDENTIALS = "testcredentials";
+ private static final String MANDATES = "mandates";
+ private static final String FOREIGNBPK = "foreignbPK";
+ private static final String SSO = "sso";
+ private static final String STORK = "stork";
+ private static final String TEMPLATES = "templates";
+ private static final String INTERFEDERATION = "interfederation";
+
+ private static final String PROTOCOLS = "protocols";
+ private static final String SAML1 = "saml1";
+ private static final String PVP2X = "pvp2x";
+ private static final String OPENID = "openID";
+
+ private static final String SERVICE_AUTH_TARGET = AUTH + "." + TARGET;
+ private static final String SERVICE_AUTH_TARGET_PUBLIC = SERVICE_AUTH_TARGET + ".public";
+ private static final String SERVICE_AUTH_TARGET_BUSINESS = SERVICE_AUTH_TARGET + ".business";
+ public static final String SERVICE_AUTH_TARGET_BUSINESS_TYPE = SERVICE_AUTH_TARGET_BUSINESS + ".type";
+ public static final String SERVICE_AUTH_TARGET_BUSINESS_VALUE = SERVICE_AUTH_TARGET_BUSINESS + ".value";
+
+ public static final String SERVICE_AUTH_TARGET_PUBLIC_TARGET = SERVICE_AUTH_TARGET_PUBLIC + ".target";
+ public static final String SERVICE_AUTH_TARGET_PUBLIC_TARGET_SUB = SERVICE_AUTH_TARGET_PUBLIC + ".target.sub";
+ public static final String SERVICE_AUTH_TARGET_PUBLIC_USE_SUB = SERVICE_AUTH_TARGET_PUBLIC + ".use.sub";
+ public static final String SERVICE_AUTH_TARGET_PUBLIC_USE_OWN = SERVICE_AUTH_TARGET_PUBLIC + ".own.use";
+ public static final String SERVICE_AUTH_TARGET_PUBLIC_OWN_TARGET = SERVICE_AUTH_TARGET_PUBLIC + ".own.target";
+ public static final String SERVICE_AUTH_TARGET_PUBLIC_OWN_NAME = SERVICE_AUTH_TARGET_PUBLIC + ".own.name";
+
+ private static final String SERVICE_AUTH_BKU = AUTH + "." + BKU;
+ public static final String SERVICE_AUTH_BKU_ONLINE = SERVICE_AUTH_BKU + ".onlineBKU";
+ public static final String SERVICE_AUTH_BKU_LOCAL = SERVICE_AUTH_BKU + ".localBKU";
+ public static final String SERVICE_AUTH_BKU_HANDY = SERVICE_AUTH_BKU + ".handyBKU";
+ public static final String SERVICE_AUTH_BKU_KEYBOXIDENTIFIER = SERVICE_AUTH_BKU + ".keyBoxIdentifier";
+ public static final String SERVICE_AUTH_BKU_TEMPLATE = SERVICE_AUTH_BKU + ".template"; //SecurityLayer Templates
+ public static final String SERVICE_AUTH_BKU_TEMPLATE_LEGACY = SERVICE_AUTH_BKU_TEMPLATE + ".legacy";
+ public static final String SERVICE_AUTH_BKU_TEMPLATE_FIRST_VALUE = SERVICE_AUTH_BKU_TEMPLATE + ".first.url";
+ public static final String SERVICE_AUTH_BKU_TEMPLATE_SECOND_VALUE = SERVICE_AUTH_BKU_TEMPLATE + ".second.url";
+ public static final String SERVICE_AUTH_BKU_TEMPLATE_THIRD_VALUE = SERVICE_AUTH_BKU_TEMPLATE + ".third.url";
+ public static final String SERVICE_AUTH_BKU_AUTHBLOCKTEXT = AUTH + ".authblock.additionaltext";
+ public static final String SERVICE_AUTH_BKU_AUTHBLOCK_REMOVEBPK = AUTH + ".authblock.removebPK";
+
+ private static final String SERVICE_AUTH_TEMPLATES = AUTH + "." + TEMPLATES;
+ public static final String SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA = SERVICE_AUTH_TEMPLATES + ".bkuselection.data";
+ public static final String SERVICE_AUTH_TEMPLATES_BKUSELECTION_PREVIEW = SERVICE_AUTH_TEMPLATES + ".bkuselection.preview";
+ public static final String SERVICE_AUTH_TEMPLATES_BKUSELECTION_FILENAME = SERVICE_AUTH_TEMPLATES + ".bkuselection.filename";
+ public static final String SERVICE_AUTH_TEMPLATES_BKUSELECTION_DELETE = SERVICE_AUTH_TEMPLATES + ".bkuselection.delete";
+ public static final String SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA = SERVICE_AUTH_TEMPLATES + ".sendAssertion.data";
+ public static final String SERVICE_AUTH_TEMPLATES_SENDASSERTION_PREVIEW = SERVICE_AUTH_TEMPLATES + ".sendAssertion.preview";
+ public static final String SERVICE_AUTH_TEMPLATES_SENDASSERTION_FILENAME = SERVICE_AUTH_TEMPLATES + ".sendAssertion.filename";
+ public static final String SERVICE_AUTH_TEMPLATES_SENDASSERTION_DELETE = SERVICE_AUTH_TEMPLATES + ".sendAssertion.delete";
+ private static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION = SERVICE_AUTH_TEMPLATES + ".customize";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FONTTYPE = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".fonttype";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BACKGROUNDCOLOR = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".color.back";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_FRONTCOLOR = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".color.front";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERBACKGROUNDCOLOR = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".header.color.back";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERFRONTCOLOR = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".header.color.front";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_HEADERTEXT = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".header.text";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACKGROUNDCOLOR = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".button.color.back";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONBACLGROUNDCOLORFOCUS = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".button.color.back.focus";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_BUTTONFRONTCOLOR = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".button.color.front";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETREDIRECTTARGET = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".applet.redirecttarget";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETHEIGHT = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".applet.hight";
+ public static final String SERVICE_AUTH_TEMPLATES_CUSTOMIZATION_APPLETWIDTH = SERVICE_AUTH_TEMPLATES_CUSTOMIZATION + ".applet.width";
+
+ private static final String SERVICE_AUTH_TESTCREDENTIALS = AUTH + "." + TESTCREDENTIALS;
+ public static final String SERVICE_AUTH_TESTCREDENTIALS_ENABLED = SERVICE_AUTH_TESTCREDENTIALS + ".enabled";
+ public static final String SERVICE_AUTH_TESTCREDENTIALS_OIDs = SERVICE_AUTH_TESTCREDENTIALS + ".oids";
+ public static final String SERVICE_AUTH_TESTCREDENTIALS_USETESTIDLTRUSTSTORE = SERVICE_AUTH_TESTCREDENTIALS + "useTestIDLTrustStore";
+ public static final String SERVICE_AUTH_TESTCREDENTIALS_USETESTAUTHBLOCKTRUSTSTORE = SERVICE_AUTH_TESTCREDENTIALS + "useTestAuthBlockTrustStore";
+
+ private static final String SERVICE_AUTH_MANDATES = AUTH + "." + MANDATES;
+ public static final String SERVICE_AUTH_MANDATES_OVS = SERVICE_AUTH_MANDATES + ".ovs";
+ public static final String SERVICE_AUTH_MANDATES_OVS_USE = SERVICE_AUTH_MANDATES_OVS + ".use";
+ public static final String SERVICE_AUTH_MANDATES_OVS_ONLY = SERVICE_AUTH_MANDATES_OVS + ".only";
+ public static final String SERVICE_AUTH_MANDATES_OVS_PROFILES = SERVICE_AUTH_MANDATES_OVS + ".profiles";
+ public static final String SERVICE_AUTH_MANDATES_HVB = SERVICE_AUTH_MANDATES + ".hvb";
+ public static final String SERVICE_AUTH_MANDATES_HVB_USE = SERVICE_AUTH_MANDATES_HVB + ".use";
+
+ public static final String SERVICE_AUTH_FOREIGNBPK = AUTH + "." + FOREIGNBPK;
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT = SERVICE_AUTH_FOREIGNBPK + ".decrypt";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_IV = SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".iv";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_BLOB = SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".blob";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_FILENAME= SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".filename";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_KEYSTORE = SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".keystore";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_KEYSTOREPASSWORD = SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".keystore.password";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_KEYALIAS = SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".key.alias";
+ public static final String SERVICE_AUTH_FOREIGNBPK_DECRYPT_KEYPASSWORD = SERVICE_AUTH_FOREIGNBPK_DECRYPT + ".key.password";
+
+ private static final String SERVICE_AUTH_SSO = AUTH + "." + SSO;
+ public static final String SERVICE_AUTH_SSO_ENABLED = SERVICE_AUTH_SSO + ".enabled";
+ public static final String SERVICE_AUTH_SSO_USERREQUEST = SERVICE_AUTH_SSO + ".userRequest";
+
+ private static final String SERVICE_AUTH_STORK = AUTH + "." + STORK;
+ public static final String SERVICE_AUTH_STORK_ENABLED = SERVICE_AUTH_STORK + ".enabled";
+ public static final String SERVICE_AUTH_STORK_MINQAALEVEL = SERVICE_AUTH_STORK + ".minqaalevel";
+ public static final String SERVICE_AUTH_STORK_COUNTRIES_LIST = SERVICE_AUTH_STORK + ".countries";
+ public static final String SERVICE_AUTH_STORK_COUNTRIES_LIST_ENABLED = "enabled";
+ public static final String SERVICE_AUTH_STORK_COUNTRIES_LIST_COUNTRYCODE = "countrycode";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTES_LIST = SERVICE_AUTH_STORK + ".attributes";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTES_LIST_NAME = "name";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY = "mandatory";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTES_LIST_REQUESTED = "requested";
+ public static final String SERVICE_AUTH_STORK_REQUIRECONSENT = SERVICE_AUTH_STORK + ".requireConsent";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST = SERVICE_AUTH_STORK + ".attributeprovider";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_NAME = "name";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_URL = "url";
+ public static final String SERVICE_AUTH_STORK_ATTRIBUTPROVIDER_LIST_ATTRIBUTES = "attributes";
+
+ private static final String SERVICE_PROTOCOLS_SAML1 = PROTOCOLS + "." + SAML1;
+ public static final String SERVICE_PROTOCOLS_SAML1_ENABLED = SERVICE_PROTOCOLS_SAML1 + ".enabled";
+ public static final String SERVICE_PROTOCOLS_SAML1_IDL = SERVICE_PROTOCOLS_SAML1 + ".idl";
+ public static final String SERVICE_PROTOCOLS_SAML1_BASEID = SERVICE_PROTOCOLS_SAML1 + ".baseid";
+ public static final String SERVICE_PROTOCOLS_SAML1_AUTHBLOCK = SERVICE_PROTOCOLS_SAML1 + ".authblock";
+ public static final String SERVICE_PROTOCOLS_SAML1_CERTIFICATE = SERVICE_PROTOCOLS_SAML1 + ".certificate";
+ public static final String SERVICE_PROTOCOLS_SAML1_MANDATE = SERVICE_PROTOCOLS_SAML1 + ".mandate";
+ public static final String SERVICE_PROTOCOLS_SAML1_RETURNERROR = SERVICE_PROTOCOLS_SAML1 + ".returnError";
+
+ private static final String SERVICE_PROTOCOLS_PVP2X = PROTOCOLS + "." + PVP2X;
+ public static final String SERVICE_PROTOCOLS_PVP2X_RELOAD = SERVICE_PROTOCOLS_PVP2X + ".reload";
+ public static final String SERVICE_PROTOCOLS_PVP2X_URL = SERVICE_PROTOCOLS_PVP2X + ".URL";
+ public static final String SERVICE_PROTOCOLS_PVP2X_CERTIFICATE = SERVICE_PROTOCOLS_PVP2X + ".certificate.data";
+ public static final String SERVICE_PROTOCOLS_PVP2X_CERTIFICATE_SUBJECT = SERVICE_PROTOCOLS_PVP2X + ".certificate.preview";
+
+ private static final String SERVICE_PROTOCOLS_OPENID = PROTOCOLS + "." + OPENID;
+ public static final String SERVICE_PROTOCOLS_OPENID_CLIENTID = SERVICE_PROTOCOLS_OPENID + ".clientID";
+ public static final String SERVICE_PROTOCOLS_OPENID_CLIENTSECRET = SERVICE_PROTOCOLS_OPENID + ".secret";
+ public static final String SERVICE_PROTOCOLS_OPENID_REDIRECTURL = SERVICE_PROTOCOLS_OPENID + ".redirectURL";
+
+ public static final String SERVICE_INTERFEDERATION_SSO_INBOUND = INTERFEDERATION + ".SSO.inbound";
+ public static final String SERVICE_INTERFEDERATION_SSO_OUTBOUND = INTERFEDERATION + ".SSO.outbound";
+ public static final String SERVICE_INTERFEDERATION_SSO_STORE = INTERFEDERATION + ".SSO.store";
+ public static final String SERVICE_INTERFEDERATION_ATTRIBUTQUERY_URL = INTERFEDERATION + ".attributequery.url";
+
+ public static final String SERVICE_INTERFEDERATION_PASSIVEREQUEST = INTERFEDERATION + ".passiveReqeust";
+ public static final String SERVICE_INTERFEDERATION_LOCALAUTHONERROR = INTERFEDERATION + ".localAuthOnError";
+ public static final String SERVICE_INTERFEDERATION_FORWARD_IDPIDENTIFIER = INTERFEDERATION + ".forward.IDP";
+ public static final String SERVICE_INTERFEDERATION_FORWARD_PROTOCOL = INTERFEDERATION + ".forward.protocol";
+
+ public static final String SERVICE_REVERSION = "reversion";
+ public static final String SERVICE_REVERSION_LOGS_ENABLED = SERVICE_REVERSION + ".log.enabled";
+ public static final String SERVICE_REVERSION_LOGS_EVENTCODES = SERVICE_REVERSION + ".log.eventcodes";
+
+
+
+ //Namespaces for general MOA-ID config
+ public static final String GENERAL_PUBLICURLPREFIX = PREFIX_MOAID_GENERAL + ".publicURLPrefix";
+
+ private static final String GENERAL_DEFAULTS = PREFIX_MOAID_GENERAL + ".defaults";
+ private static final String GENERAL_DEFAULTS_BKU = GENERAL_DEFAULTS + "." + BKU;
+ public static final String GENERAL_DEFAULTS_BKU_ONLINE = GENERAL_DEFAULTS_BKU + ".onlineBKU";
+ public static final String GENERAL_DEFAULTS_BKU_HANDY = GENERAL_DEFAULTS_BKU + ".handyBKU";
+ public static final String GENERAL_DEFAULTS_BKU_LOCAL = GENERAL_DEFAULTS_BKU + ".localBKU";
+ private static final String GENERAL_DEFAULTS_TEMPLATES = GENERAL_DEFAULTS + "." + TEMPLATES;
+ public static final String GENERAL_DEFAULTS_TEMPLATES_LOCAL = GENERAL_DEFAULTS_TEMPLATES + ".localBKU";
+ public static final String GENERAL_DEFAULTS_TEMPLATES_HANDY = GENERAL_DEFAULTS_TEMPLATES + ".handyBKU";
+ public static final String GENERAL_DEFAULTS_TEMPLATES_ONLINE = GENERAL_DEFAULTS_TEMPLATES + ".onlineBKU";
+
+ private static final String GENERAL_AUTH = PREFIX_MOAID_GENERAL + ".auth";
+ private static final String GENERAL_AUTH_CERTIFICATE = GENERAL_AUTH + ".certificate";
+ public static final String GENERAL_AUTH_CERTSTORE_URL = GENERAL_AUTH_CERTIFICATE + ".certstore.url";
+ public static final String GENERAL_AUTH_TRUSTSTORE_URL = GENERAL_AUTH_CERTIFICATE + ".truststore.url";
+ public static final String GENERAL_AUTH_REVOCATIONCHECKING = GENERAL_AUTH_CERTIFICATE + ".revocationchecking";
+
+ public static final String GENERAL_AUTH_TIMEOUTS_TRANSACTION = GENERAL_AUTH + ".timeouts.transaction"; //Anmeldedaten
+ public static final String GENERAL_AUTH_TIMEOUS_SSO_CREATE = GENERAL_AUTH + ".timeouts.sso.create";
+ public static final String GENERAL_AUTH_TIMEOUS_SSO_UPDATE = GENERAL_AUTH + ".timeouts.sso.update";
+
+ public static final String GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_PROD = GENERAL_AUTH + ".moasp.trustprofile.idl.prod";
+ public static final String GENERAL_AUTH_MOASP_TRUSTPROFILE_IDL_TEST = GENERAL_AUTH + ".moasp.trustprofile.idl.test";
+ public static final String GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_PROD = GENERAL_AUTH + ".moasp.trustprofile.authblock.prod";
+ public static final String GENERAL_AUTH_MOASP_TRUSTPROFILE_AUTHBLOCK_TEST = GENERAL_AUTH + ".moasp.trustprofile.authblock.test";
+ public static final String GENERAL_AUTH_MOASP_AUTHBLOCK_TRANSFORM = GENERAL_AUTH + ".moasp.authblock.transform";
+ public static final String GENERAL_AUTH_MOASP_URL = GENERAL_AUTH + ".moasp.url";
+
+ public static final String GENERAL_AUTH_SERVICES_OVS_URL = GENERAL_AUTH + ".services.ovs.url";
+ public static final String GENERAL_AUTH_SERVICES_SZRGW_URL = GENERAL_AUTH + ".services.szrgw.url";
+ public static final String GENERAL_AUTH_SERVICES_HVB_URL = GENERAL_AUTH + ".services.hvb.url";
+
+ public static final String GENERAL_AUTH_SSO_SERVICENAME = GENERAL_AUTH + "." + SSO + ".servicename";
+ public static final String GENERAL_AUTH_SSO_TARGET = GENERAL_AUTH + "." + SSO + ".target";
+ public static final String GENERAL_AUTH_SSO_AUTHBLOCK_TEXT = GENERAL_AUTH + "." + SSO + ".authblock.text";
+
+ public static final String GENERAL_PROTOCOLS = PREFIX_MOAID_GENERAL + "." + PROTOCOLS;
+ public static final String GENERAL_PROTOCOLS_SAML1 = GENERAL_PROTOCOLS + "." + SAML1;
+ public static final String GENERAL_PROTOCOLS_PVP2X = GENERAL_PROTOCOLS + "." + PVP2X;
+ public static final String GENERAL_PROTOCOLS_OPENID = GENERAL_PROTOCOLS + "." + OPENID;
+ public static final String GENERAL_PROTOCOLS_SAML1_ENABLED = GENERAL_PROTOCOLS_SAML1 + ".enabled";
+ public static final String GENERAL_PROTOCOLS_SAML1_LEGACY = GENERAL_PROTOCOLS_SAML1 + ".legacy";
+ public static final String GENERAL_PROTOCOLS_SAML1_SOURCEID = GENERAL_PROTOCOLS_SAML1 + ".sourceID";
+ public static final String GENERAL_PROTOCOLS_OPENID_ENABLED = GENERAL_PROTOCOLS_OPENID + ".enabled";
+ public static final String GENERAL_PROTOCOLS_OPENID_LEGACY = GENERAL_PROTOCOLS_OPENID + ".legacy";
+
+ public static final String GENERAL_PROTOCOLS_PVP2X_ENABLED = GENERAL_PROTOCOLS_PVP2X + ".enabled";
+ public static final String GENERAL_PROTOCOLS_PVP2X_LEGACY = GENERAL_PROTOCOLS_PVP2X + ".legacy";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA = GENERAL_PROTOCOLS_PVP2X + ".metadata";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME = GENERAL_PROTOCOLS_PVP2X_METADATA + ".servicename";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_ORG = GENERAL_PROTOCOLS_PVP2X_METADATA + ".org";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_SHORTNAME = GENERAL_PROTOCOLS_PVP2X_METADATA_ORG + ".name.short";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_FULLNAME = GENERAL_PROTOCOLS_PVP2X_METADATA_ORG + ".name.full";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_ORG_URL = GENERAL_PROTOCOLS_PVP2X_METADATA_ORG + ".url";
+
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT = GENERAL_PROTOCOLS_PVP2X_METADATA + ".contact";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_FAMLIYNAME = GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".familyname";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_GIVENNAME = GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".givenname";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_MAIL = GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".mail";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_PHONE = GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".phone";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_COMPANY = GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".company";
+ public static final String GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT_TYPE = GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".type";
+
+ public static final String GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_NAME = GENERAL_AUTH + ".authblock.transformation.preview";
+ public static final String GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_FILENAME = GENERAL_AUTH + ".authblock.transformation.filename";
+ public static final String GENERAL_AUTH_AUTHBLOCK_TRANSFORMATION_BASE64 = GENERAL_AUTH + ".authblock.transformation.data";
+
+ public static final String GENERAL_AUTH_STORK = GENERAL_AUTH + "." + STORK;
+ public static final String GENERAL_AUTH_STORK_QAA = GENERAL_AUTH_STORK + ".qaa";
+ public static final String GENERAL_AUTH_STORK_CPEPS_LIST = GENERAL_AUTH_STORK + ".cpeps";
+ public static final String GENERAL_AUTH_STORK_CPEPS_LIST_COUNTRY = "countrycode";
+ public static final String GENERAL_AUTH_STORK_CPEPS_LIST_URL = "url";
+ public static final String GENERAL_AUTH_STORK_CPEPS_LIST_SUPPORT_XMLDSIG = "support.xmldsig";
+
+ public static final String GENERAL_AUTH_STORK_ATTRIBUTES_LIST = GENERAL_AUTH_STORK + ".attributes";
+ public static final String GENERAL_AUTH_STORK_ATTRIBUTES_LIST_NAME = "friendlyname";
+ public static final String GENERAL_AUTH_STORK_ATTRIBUTES_LIST_MANDATORY = "mandatory";
+
+ public static final String GENERAL_REVERSION = PREFIX_MOAID_GENERAL + ".reversion";
+ public static final String GENERAL_REVERSION_LOGS_EVENTCODES = GENERAL_REVERSION + ".log.eventcodes";
+
+}
+
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrateConfiguration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrateConfiguration.java
new file mode 100644
index 000000000..4e8c7dffd
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrateConfiguration.java
@@ -0,0 +1,103 @@
+package at.gv.egovernment.moa.id.commons.config;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import javax.xml.bind.JAXBException;
+
+import at.gv.egovernment.moa.id.commons.config.cli.MOAIDConfCLI;
+import at.gv.egovernment.moa.id.commons.config.cli.MigrateConfigurationParams;
+
+/**
+ * CLI tool which is able to perform the following tasks:
+ * <ul>
+ * <li>transform a MoaID 2 XML configuration XML file to a MoaID 3 property file
+ * </li>
+ * <li>read a property file and transfer it's content to a database</li>
+ * <li>write the content of a database to a property file</li>
+ * </ul>
+ */
+public class MigrateConfiguration {
+
+ public static void main(String[] args) {
+
+ MOAIDConfCLI cli = new MOAIDConfCLI();
+ MigrateConfigurationParams parsedParameters = cli.parse(args);
+
+ // consider settings of force switch
+ boolean isOverwriteData = parsedParameters.isOverwriteData();
+ ConfigurationUtil configUtil = new ConfigurationUtil(isOverwriteData);
+
+ if (!parsedParameters.isInputDB() && (parsedParameters.getInputTarget() != null)) {
+ // read input from file
+ workWithInputFromFile(parsedParameters.getInputTarget(), parsedParameters, configUtil);
+
+ } else if (parsedParameters.getInputDBConfig() != null) {
+ // read input from database
+ workWithImputFromDB(parsedParameters, configUtil);
+
+ } else {
+ System.exit(1);
+ }
+ }
+
+ /**
+ * Handle the case where input from a file is read.
+ *
+ * @param inputFileUrl
+ * the url of the input file.
+ * @param parsedParameters
+ * the command line parameters.
+ * @param configUtil
+ * the class for working with the configuration.
+ */
+ private static void workWithInputFromFile(String inputFileUrl, MigrateConfigurationParams parsedParameters,
+ ConfigurationUtil configUtil) {
+ File inFile = new File(inputFileUrl);
+ try (FileInputStream inStream = new FileInputStream(inFile);) {
+
+ if (!parsedParameters.isOutputDB() && (parsedParameters.getOutputFile() != null)) {
+ // input from file and output to a file is desired
+ File outFile = new File(parsedParameters.getOutputFile());
+ configUtil.readFromXMLFileConvertToPropertyFile(inStream, outFile);
+
+ } else if (parsedParameters.getOutputDBConfig() != null) {
+ // input from file and output to a database is desired
+ configUtil.readFromFileWriteToDB(inStream, parsedParameters.getOutputDBConfig());
+ }
+ } catch (JAXBException e) {
+ System.out.println("MOA-ID XML configuration can not be loaded from given file.");
+ System.exit(1);
+ } catch (FileNotFoundException e) {
+ System.out.println("Could not find the input file.");
+ System.exit(1);
+ } catch (IOException e) {
+ System.out.println("Could not read from the input file.");
+ System.exit(1);
+ }
+ }
+
+ /**
+ * Handle the case where input is read from a database.
+ *
+ * @param parsedParameters
+ * the command line parameters.
+ * @param configUtil
+ * the class for working with the configuration.
+ */
+ private static void workWithImputFromDB(MigrateConfigurationParams parsedParameters, ConfigurationUtil configUtil) {
+ if (!parsedParameters.isOutputDB() && (parsedParameters.getOutputFile() != null)) {
+ // input from database and output to a file is desired
+ File outFile = new File(parsedParameters.getOutputFile());
+ String inputDBConfigFilePath = parsedParameters.getInputDBConfig();
+ configUtil.readFromDBWriteToFile(inputDBConfigFilePath, outFile);
+
+ } else if (parsedParameters.getOutputDBConfig() != null) {
+ // input from database and output to a database is desired
+ // configUtil.readFromDBWriteToDB(inDBConfigFilePath,
+ // outDBConfigFilePath);
+ }
+ }
+} \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrationTest.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrationTest.java
new file mode 100644
index 000000000..c472299b9
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/MigrationTest.java
@@ -0,0 +1,69 @@
+/*
+ * 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.config;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import javax.xml.bind.JAXBException;
+
+/**
+ * @author tlenz
+ *
+ */
+public class MigrationTest {
+
+ public static void main(String[] args) {
+
+ String inputFile = "D:/Projekte/svn/moa-id/MOAID-2.0_config_labda_12.05.2015.xml";
+ String outputFile = "D:/Projekte/svn/moa-id/MOAID-3.0_config.propery";
+
+ String moaidconfig = "D:/Projekte/svn/moa-id/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/moa-id-configuration/moa-id.properties";
+ try {
+ FileInputStream input = new FileInputStream(inputFile);
+ File out = new File(outputFile);
+
+ ConfigurationUtil utils = new ConfigurationUtil(true);
+ utils.readFromXMLFileConvertToPropertyFile(input, out);
+
+ FileInputStream dbInput = new FileInputStream(outputFile);
+ utils.readFromFileWriteToDB(dbInput, moaidconfig);
+
+
+ } catch (JAXBException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+
+ } catch (FileNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/CLIConstants.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/CLIConstants.java
new file mode 100644
index 000000000..c652645fc
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/CLIConstants.java
@@ -0,0 +1,37 @@
+package at.gv.egovernment.moa.id.commons.config.cli;
+
+/**
+ * Constants for the CLI.
+ * @author Christian Wagner
+ *
+ */
+public class CLIConstants {
+ private CLIConstants() {
+ }
+
+ public static final String CMD_LINE_SYNTAX = "java -jar migrateMOAIDconfiguration.jar";
+
+ public static final String HELP_HEADER = "Convert a given MOAID 2.x config-file.";
+ public static final String HELP_FOOTER = "";
+ // default width of a printed row
+ public static final int HELP_ROW_WIDTH = 80;
+
+ public static final int HELP_SPACE_BEFORE_OPT = 2;
+ public static final int HELP_SPACE_BEFORE_DESC = 4;
+
+ public static final String CLI_PARAM_IN = "in";
+ public static final String CLI_PARAM_IN_LONG = "input-file";
+ public static final String CLI_PARAM_OUT = "out";
+ public static final String CLI_PARAM_OUT_LONG = "output-file";
+ public static final String CLI_PARAM_INDB = "indb";
+ public static final String CLI_PARAM_INDB_LONG = "input-dbconf";
+ public static final String CLI_PARAM_OUTDB = "outdb";
+ public static final String CLI_PARAM_OUTDB_LONG = "output-dbconf";
+
+ public static final String CLI_PARAM_HELP = "h";
+ public static final String CLI_PARAM_HELP_LONG = "help";
+
+ public static final String CLI_PARAM_FORCE = "f";
+ public static final String CLI_PARAM_FORCE_LONG = "force";
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java
new file mode 100644
index 000000000..b5bc9d874
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MOAIDConfCLI.java
@@ -0,0 +1,127 @@
+package at.gv.egovernment.moa.id.commons.config.cli;
+
+import java.io.OutputStream;
+import java.io.PrintWriter;
+
+import org.apache.commons.cli.BasicParser;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionGroup;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The command-line interface for MOAID configuration migration
+ * @author Christian Wagner
+ *
+ */
+public class MOAIDConfCLI {
+
+ // the default output to write usage information and help text to
+ private static final OutputStream OUTPUT_STREAM = System.out;
+
+ private Logger log = LoggerFactory.getLogger(getClass());
+
+ /**
+ * Parses the given command-line arguments using a {@link BasicParser} with small modifications.
+ * @param commandLineArgs the command-line arguments.
+ */
+ public MigrateConfigurationParams parse(String[] commandLineArgs) {
+
+ CommandLineParser parser = new BasicParser();
+ CommandLine cmd = null;
+ MigrateConfigurationParams result = null;
+ try {
+
+ if (null == commandLineArgs || commandLineArgs.length == 0) {
+ printUsage(OUTPUT_STREAM, true);
+ System.exit(0);
+ }
+
+ cmd = parser.parse(createOptions(), commandLineArgs, true);
+
+ if( null != cmd && cmd.hasOption(CLIConstants.CLI_PARAM_HELP)){
+ printUsage(OUTPUT_STREAM, true);
+ System.exit(0);
+ }
+
+ result = new MigrateConfigurationParams(cmd);
+
+ } catch (ParseException e) {
+ log.warn("Encountered exception while parsing: {}", e.getMessage());
+ System.err.println(e.getMessage());
+ printUsage(OUTPUT_STREAM, false);
+ System.exit(1);
+ }
+ return result;
+ }
+
+ /**
+ * Prints information about the usage to the given output.
+ * @param out the {@link OutputStream} to write to
+ * @param printOptions determines whether the available options are printed
+ */
+ private void printUsage(OutputStream out, boolean printOptions) {
+
+ PrintWriter pOut = new PrintWriter(out);
+
+ HelpFormatter formatter = new HelpFormatter();
+ pOut.println();
+ pOut.println("usage: " + CLIConstants.CMD_LINE_SYNTAX + " -" + CLIConstants.CLI_PARAM_FORCE + " -"
+ + CLIConstants.CLI_PARAM_IN + " <inputfile> -"
+ + CLIConstants.CLI_PARAM_OUT + " <outputfile> | -" + CLIConstants.CLI_PARAM_OUTDB + " <dbconfig> [-"
+ + CLIConstants.CLI_PARAM_HELP + "]");
+ pOut.println();
+ pOut.println(CLIConstants.HELP_HEADER);
+ if(printOptions){
+ pOut.println();
+ formatter.printOptions(pOut, CLIConstants.HELP_ROW_WIDTH, createOptions(), CLIConstants.HELP_SPACE_BEFORE_OPT, CLIConstants.HELP_SPACE_BEFORE_DESC);
+ }
+ pOut.flush();
+
+ }
+
+ /**
+ * Create all {@linkplain Option options} that should be available in the CLI.
+ * @return The {@linkplain Options options}
+ */
+ private Options createOptions() {
+
+ Options options = new Options();
+
+ OptionGroup inGroup = new OptionGroup();
+ Option optionInput = new Option(CLIConstants.CLI_PARAM_IN, CLIConstants.CLI_PARAM_IN_LONG, true, "MOAID config-file to convert");
+ optionInput.setArgName("inputfile");
+ Option optionDBInput = new Option(CLIConstants.CLI_PARAM_INDB, CLIConstants.CLI_PARAM_INDB_LONG, true, "config for database to read from");
+ optionDBInput.setArgName("dbconfig");
+
+ inGroup.addOption(optionDBInput);
+ inGroup.addOption(optionInput);
+ optionInput.setRequired(false);
+
+ OptionGroup outGroup = new OptionGroup();
+ Option optionOutput = new Option(CLIConstants.CLI_PARAM_OUT, CLIConstants.CLI_PARAM_OUT_LONG, true, "target file to write to");
+ optionOutput.setArgName("outputfile");
+ Option optionDBOutput = new Option(CLIConstants.CLI_PARAM_OUTDB, CLIConstants.CLI_PARAM_OUTDB_LONG, true, "config for database to write to");
+ optionDBOutput.setArgName("dbconfig");
+
+ outGroup.addOption(optionDBOutput);
+ outGroup.addOption(optionOutput);
+ outGroup.setRequired(false);
+
+ options.addOptionGroup(inGroup);
+ options.addOptionGroup(outGroup);
+
+ Option optForce = new Option(CLIConstants.CLI_PARAM_FORCE, CLIConstants.CLI_PARAM_FORCE_LONG, false, "overwrite existing data with imported data");
+ options.addOption(optForce);
+
+ Option optHelp = new Option(CLIConstants.CLI_PARAM_HELP, CLIConstants.CLI_PARAM_HELP_LONG, false, "prints this message");
+ options.addOption(optHelp);
+ return options;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MigrateConfigurationParams.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MigrateConfigurationParams.java
new file mode 100644
index 000000000..86bde1310
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/cli/MigrateConfigurationParams.java
@@ -0,0 +1,106 @@
+package at.gv.egovernment.moa.id.commons.config.cli;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.MissingOptionException;
+
+/**
+ * The result set for the parsed command line arguments
+ * @author Christian Wagner
+ *
+ */
+public class MigrateConfigurationParams {
+
+ private String inputFile = null;
+ private String outputFile = null;
+ private String inputDbConfigFile = null;
+ private String outputDbConfigFile = null;
+
+ private boolean overwriteData = false;
+
+ /**
+ * Get the path to the input source which is MOAID 2.x config file in XML-format.
+ * @return the path to the input source or {@code null} if not set.
+ */
+ public String getInputTarget() {
+ return this.inputFile;
+ }
+
+ /**
+ * Get the path to the output file to write to.
+ * @return the path to the output file or {@code null} if not set.
+ */
+ public String getOutputFile() {
+ return outputFile;
+ }
+
+ /**
+ * Get the path to the configuration file for the input database.
+ * @return the path to the config file or {@code null} if not set.
+ */
+ public String getInputDBConfig() {
+ return inputDbConfigFile;
+ }
+
+ /**
+ * Get the path to the configuration file for the output database.
+ * @return the path to the config file or {@code null} if not set.
+ */
+ public String getOutputDBConfig() {
+ return outputDbConfigFile;
+ }
+
+ /**
+ * Returns whether the desired input is a config file for a database.
+ * @return <code>true</code> if the stored path points at a database config file; <code>false</code> otherwise.
+ */
+ public boolean isInputDB() {
+ return inputDbConfigFile != null;
+ }
+
+ /**
+ * Returns whether the desired output is a config file for a database.
+ * @return <code>true</code> if the stored path points at a database config file; <code>false</code> otherwise.
+ */
+ public boolean isOutputDB() {
+ return outputDbConfigFile != null;
+ }
+
+ /**
+ * Returns whether existing data should be overwritten by the imported data or not.
+ * @return <code>true</code> if the existing data should be overwritten; <code>false</code> otherwise.
+ */
+ public boolean isOverwriteData() {
+ return overwriteData;
+ }
+
+ /**
+ *
+ * @param cmdLine
+ * @throws MissingOptionException
+ */
+ public MigrateConfigurationParams(CommandLine cmdLine) throws MissingOptionException {
+ inputFile = cmdLine.getOptionValue(CLIConstants.CLI_PARAM_IN);
+ inputDbConfigFile = cmdLine.getOptionValue(CLIConstants.CLI_PARAM_INDB);
+ outputFile = cmdLine.getOptionValue(CLIConstants.CLI_PARAM_OUT);
+ outputDbConfigFile = cmdLine.getOptionValue(CLIConstants.CLI_PARAM_OUTDB);
+ overwriteData = cmdLine.hasOption(CLIConstants.CLI_PARAM_FORCE);
+
+ if (null == inputFile && null == inputDbConfigFile) {
+ throw new MissingOptionException("One of [-" + CLIConstants.CLI_PARAM_IN + ", -" + CLIConstants.CLI_PARAM_INDB + "] required.");
+ }
+
+ if (null == outputFile && null == outputDbConfigFile) {
+ throw new MissingOptionException("One of [-" + CLIConstants.CLI_PARAM_OUT + ", -" + CLIConstants.CLI_PARAM_OUTDB + "] required.");
+ }
+
+ if (null != inputFile && null != inputDbConfigFile) {
+ throw new MissingOptionException("Only one of [-" + CLIConstants.CLI_PARAM_IN + ", -" + CLIConstants.CLI_PARAM_INDB + "] allowed.");
+ }
+
+ if (null != outputFile && null != outputDbConfigFile) {
+ throw new MissingOptionException("Only one of [-" + CLIConstants.CLI_PARAM_OUT + ", -" + CLIConstants.CLI_PARAM_OUTDB + "] allowed.");
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/JsonMapper.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/JsonMapper.java
new file mode 100644
index 000000000..6138d571b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/JsonMapper.java
@@ -0,0 +1,73 @@
+package at.gv.egovernment.moa.id.commons.config.persistence;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
+/**
+ * Helper class to handle the JSON (de-)serialization.
+ *
+ */
+public class JsonMapper {
+
+ private ObjectMapper mapper = new ObjectMapper();
+
+ /**
+ * The default constructor where the default pretty printer is disabled.
+ */
+ public JsonMapper() {
+ this(false);
+ }
+
+ /**
+ * The constructor.
+ * @param prettyPrint enables or disables the default pretty printer
+ */
+ public JsonMapper(boolean prettyPrint) {
+ mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
+ mapper.setVisibility(PropertyAccessor.GETTER, Visibility.PUBLIC_ONLY);
+ mapper.setVisibility(PropertyAccessor.IS_GETTER, Visibility.PUBLIC_ONLY);
+ if (prettyPrint) {
+ mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ }
+ }
+
+ /**
+ * Serialize an object to a JSON string.
+ * @param value the object to serialize
+ * @return a JSON string
+ * @throws JsonProcessingException thrown when an error occurs during serialization
+ */
+ public String serialize(Object value) throws JsonProcessingException {
+ return mapper.writeValueAsString(value);
+ }
+
+ /**
+ * Deserialize a JSON string.
+ *
+ * @param value the JSON string to deserialize
+ * @param clazz optional parameter that determines the type of the returned object. If not set, an {@link Object} is returned.
+ * @return the deserialized JSON string as an object of type {@code clazz} or {@link Object}
+ * @throws JsonParseException if the JSON string contains invalid content.
+ * @throws JsonMappingException if the input JSON structure does not match structure expected for result type
+ * @throws IOException if an I/O problem occurs (e.g. unexpected end-of-input)
+ */
+ public <T> Object deserialize(String value, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException{
+
+ ObjectMapper mapper = new ObjectMapper();
+ if (clazz != null) {
+ JavaType javaType = TypeFactory.defaultInstance().constructType(clazz);
+ return mapper.readValue(value, javaType);
+ } else {
+ return mapper.readValue(value, Object.class);
+ }
+ }
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfiguration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfiguration.java
new file mode 100644
index 000000000..223f29a0b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfiguration.java
@@ -0,0 +1,64 @@
+package at.gv.egovernment.moa.id.commons.config.persistence;
+
+import java.util.Map;
+import java.util.Properties;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+
+/**
+ * An interface for a key-value configuration.
+ */
+public interface MOAIDConfiguration extends Configuration {
+
+ /**
+ * Get all key/value pairs with a prefix
+ *
+ * @param preFix: A key prefix
+ * @param removePrefix: Indicates, if the prefix should be removed from the result key
+ * @return All key/value pairs with this prefix or null if no key is found. The prefix is removed from the key.
+ *
+ **/
+ public Map<String, String> getPropertySubset(String preFix, boolean removePrefix) throws ConfigurationException;
+
+ /**
+ * Get all key/value pairs with a prefix
+ *
+ * @param preFix: A key prefix
+ * @return All key/value pairs with this prefix or null if no key is found. The prefix is removed from the key.
+ *
+ **/
+ public Map<String, String> getPropertySubset(String preFix) throws ConfigurationException;
+
+
+ /**
+ * Searches the configuration use '*' or '%' for wildcards.
+ *
+ * Example:
+ *
+ * db.server1.url=...
+ * db.server1.user=...
+ * db.server1.password=...
+ * db.server1.driver=...
+ * db.server2.url=...
+ * db.server2.user=...
+ * db.server2.password=...
+ * db.server2.driver=...
+ *
+ * searchString: "db.server1.*" returns
+ * ["db.server1.url", "db.server1.user", "db.server1.password", "db.server1.driver"]
+ * @param searchkey The search string
+ * @return All key/value pairs with this prefix or null if no key is found. The prefix is not removed from the key.
+ * @throws ConfigurationException if something went wrong
+ */
+ public Map<String, String> searchPropertiesWithWildcard(String searchkey) throws ConfigurationException;
+
+ /**
+ * Load an OnlineApplication configuration and remove the OA key prefix
+ *
+ * @param publicURLPrefix: Unique identifier of online application
+ * @return Properties of the online application or null if no OA is found
+ * @throws ConfigurationException in case of an configuration access error
+ */
+ public Map<String, String> getOnlineApplication(String publicURLPrefix) throws ConfigurationException;
+} \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java
new file mode 100644
index 000000000..297c63d7d
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/config/persistence/MOAIDConfigurationImpl.java
@@ -0,0 +1,200 @@
+package at.gv.egovernment.moa.id.commons.config.persistence;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.db.dao.config.ConfigProperty;
+import at.gv.egovernment.moa.id.commons.db.dao.config.DatabaseConfigPropertyImpl;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.logging.Logger;
+
+/**
+ * The implementation of a key-value configuration implementing the {@link Configuration} interface.
+ * It employs the {@link ConfigPropertyDao} to persist configuration data.
+ */
+@Component
+@Transactional("transactionManager")
+public class MOAIDConfigurationImpl extends DatabaseConfigPropertyImpl implements MOAIDConfiguration {
+
+// Configuration configPropertyDao;
+//
+// /**
+// * Sets the {@link ConfigPropertyDao}.
+// * @param configPropertyDao the ConfigPropertyDao
+// */
+// @Required
+// public void setConfigPropertyDao(Configuration configPropertyDao) {
+// this.configPropertyDao = configPropertyDao;
+// }
+
+ public void setStringValue(String id, String value) throws ConfigurationException {
+ super.setStringValue(id, value);
+
+ }
+
+ public void deleteIds(String idSearch) throws ConfigurationException {
+ super.deleteIds(idSearch);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration#getPropertySubset(java.lang.String, boolean)
+ */
+ @Override
+ public Map<String, String> getPropertySubset(String preFix,
+ boolean removePrefix) throws ConfigurationException {
+ EntityManager em = this.getPersistenceContext();
+ if (null == em) {
+ Logger.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+
+ }
+
+ TypedQuery<ConfigProperty> configQuery = em.createQuery("select dbconfig from ConfigProperty dbconfig where dbconfig.key like :key", ConfigProperty.class);
+ configQuery.setParameter("key", preFix + "%");
+ List<ConfigProperty> configResult = configQuery.getResultList();
+
+ if (configResult == null || configResult.isEmpty()) {
+ Logger.warn("Found no configuration keys with prefix: " + preFix + ".%");
+ return null;
+
+ }
+ Logger.trace("Find " + configResult.size() + " key/value pairs with prefix: " + preFix + ".%");
+
+ //build key/value configuration map from database entries
+ Map<String, String> result = getKeyValueFromDatabaseDAO(
+ configResult.iterator(), preFix, removePrefix);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration#getPropertySubset(java.lang.String)
+ */
+ public Map<String, String> getPropertySubset(String preFix) throws ConfigurationException{
+ return getPropertySubset(preFix, true);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration#searchPropertiesWithWildcard(java.lang.String)
+ */
+ @Override
+ public Map<String, String> searchPropertiesWithWildcard(String searchKey)
+ throws ConfigurationException {
+ EntityManager em = this.getPersistenceContext();
+ if (null == em) {
+ Logger.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+
+ }
+
+ TypedQuery<ConfigProperty> configQuery = em.createQuery("select dbconfig from ConfigProperty dbconfig where dbconfig.key like :key", ConfigProperty.class);
+ configQuery.setParameter("key", searchKey.replace("*", "%"));
+ List<ConfigProperty> configResult = configQuery.getResultList();
+
+ if (configResult == null || configResult.isEmpty()) {
+ Logger.warn("Found no configuration keys with searchKey: " + searchKey);
+ return null;
+
+ }
+ Logger.trace("Find " + configResult.size() + " key/value pairs with searchKey: " + searchKey);
+
+ //build key/value configuration map from database entries
+ Map<String, String> result = getKeyValueFromDatabaseDAO(
+ configResult.iterator(), null, false);
+ return result;
+
+ }
+
+ @Override
+ public Map<String, String> getOnlineApplication(String publicURLPrefix)
+ throws ConfigurationException {
+ EntityManager em = this.getPersistenceContext();
+ if (null == em) {
+ Logger.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+
+ }
+
+ //search key prefix for online application with this publicURLPrefix
+ String keyId = MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES
+ + ".%."
+ + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER;
+
+ TypedQuery<ConfigProperty> oaSearchQuery = em.createQuery("select dbconfig from ConfigProperty dbconfig where dbconfig.key like :key and dbconfig.value = SUBSTRING(:uniqueID, 1, LENGTH(dbconfig.value))", ConfigProperty.class);
+ oaSearchQuery.setParameter("key", keyId);
+ oaSearchQuery.setParameter("uniqueID", publicURLPrefix);
+ List<ConfigProperty> oaSearchResult = oaSearchQuery.getResultList();
+
+ if (oaSearchResult.size() == 0) {
+ Logger.debug("No entries found.");
+ return null; }
+
+ if (oaSearchResult.size() > 1) {
+ Logger.warn("OAIdentifier match to more then one DB-entry!");
+ return null;
+ }
+
+ String oaIdKey = oaSearchResult.get(0).getKey();
+ String oaIdValue = oaSearchResult.get(0).getValue();
+ Logger.trace("Find online application with uniqueID: " + oaIdValue + " and keyID: " + oaIdKey);
+
+ //load all online application key/value pairs from database
+ String oaType = KeyValueUtils.getFirstChildAfterPrefix(oaIdKey, MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES);
+ String oaKey = KeyValueUtils.getPrefixFromKey(oaIdKey, MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+
+ TypedQuery<ConfigProperty> oaConfigQuery = em.createQuery("select dbconfig from ConfigProperty dbconfig where dbconfig.key like :key", ConfigProperty.class);
+ oaConfigQuery.setParameter("key", oaKey + ".%");
+ List<ConfigProperty> oaConfigResult = oaConfigQuery.getResultList();
+
+ if (oaConfigResult == null) {
+ Logger.warn("Found no configuration keys with prefix: " + oaKey + ".%");
+ return null;
+ }
+ Logger.trace("Find " + oaConfigResult.size() + " key/value pairs with prefix: " + oaKey + ".%");
+
+ //build key/value configuration map from database entries
+ Map<String, String> result = getKeyValueFromDatabaseDAO(
+ oaConfigResult.iterator(), oaKey, true);
+ result.put(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES, oaType);
+
+ return result;
+ }
+
+ /**
+ * Small helper method. NOTE: may return empty configuration properties, but never {@code null}.
+ *
+ * @param propPrefix: the prefix of the desired property.
+ * @param input: List of database objects with key/value information.
+ * @param removePrefix: Indicates if the prefix should be removed from the result key
+ * @return the {@link Map} of configuration properties
+ */
+ private Map<String, String> getKeyValueFromDatabaseDAO(Iterator<ConfigProperty> input, final String prefix, boolean removePrefix) {
+ Map<String, String> configProp = new HashMap<String, String>();
+ while (input.hasNext()) {
+ ConfigProperty el = input.next();
+ if (removePrefix) {
+ if (el.getKey().startsWith(prefix)) {
+ String propertyName = KeyValueUtils.removePrefixFromKey(el.getKey(), prefix);
+ configProp.put(propertyName, el.getValue());
+
+ }
+ } else
+ configProp.put(el.getKey(), el.getValue());
+
+ }
+ return configProp;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java
index 6efdd6223..3836d5a1e 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java
@@ -1,392 +1,403 @@
-/*******************************************************************************
- * 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;
-
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
-import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
-import at.gv.egovernment.moa.logging.Logger;
-import at.gv.egovernment.moa.util.MiscUtil;
-//import org.apache.commons.lang.StringEscapeUtils;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceException;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@SuppressWarnings("rawtypes")
-public class ConfigurationDBRead {
-
- private static Map<String, String> QUERIES = new HashMap<String, String>();
-
- static {
- QUERIES.put("getActiveOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) and onlineapplication.isActive = '1'");
- QUERIES.put("getOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix))");
- QUERIES.put("getOnlineApplicationWithDBID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.hjid = :id");
- QUERIES.put("getAllOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication");
- QUERIES.put("getAllActiveOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '1'");
- QUERIES.put("getAllNewOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '0' and onlineapplication.isAdminRequired = '1'");
- QUERIES.put("getMOAIDConfiguration", "select moaidconfiguration from MOAIDConfiguration moaidconfiguration");
- QUERIES.put("getUserWithUserID", "select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id");
- QUERIES.put("getNewUserWithUserTokken", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken");
- QUERIES.put("getAllNewUsers", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '1'");
- QUERIES.put("getAllOpenUsersRequests", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is not null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'");
- QUERIES.put("getUserWithUserBPKWBPK", "select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk");
- QUERIES.put("getUserWithUserUsername", "select userdatabase from UserDatabase userdatabase where userdatabase.username = :username");
- QUERIES.put("getAllUsers", "select userdatabase from UserDatabase userdatabase");
- QUERIES.put("getUsersWithOADBID", "select userdatabase from UserDatabase userdatabase inner join userdatabase.onlineApplication oa where oa.hjid = :id");
- QUERIES.put("searchOnlineApplicationsWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.friendlyName like :id");
- }
-
- public static OnlineApplication getActiveOnlineApplication(String id) {
- MiscUtil.assertNotNull(id, "OnlineApplictionID");
- Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
-
- List result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getActiveOnlineApplicationWithID"));
- //query.setParameter("id", id+"%");
- query.setParameter("id", StringEscapeUtils.escapeHtml4(id));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.debug("No entries found.");
- return null;
- }
-
- if (result.size() > 1) {
- Logger.warn("OAIdentifier match to more then one DB-entry!");
- return null;
- }
-
- return (OnlineApplication) result.get(0);
- }
-
- public static OnlineApplication getOnlineApplication(String id) {
- MiscUtil.assertNotNull(id, "OnlineApplictionID");
- Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
-
- List result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithID"));
- //query.setParameter("id", id+"%");
- query.setParameter("id", id);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
-
- if (result.size() > 1) {
- Logger.warn("OAIdentifier match to more then one DB-entry!");
- return null;
- }
-
- return (OnlineApplication) result.get(0);
- }
-
- public static OnlineApplication getOnlineApplication(long dbid) {
- MiscUtil.assertNotNull(dbid, "OnlineApplictionID");
- Logger.trace("Getting OnlineApplication with DBID " + dbid + " from database.");
-
- List result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithDBID"));
- //query.setParameter("id", id+"%");
- query.setParameter("id", dbid);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
-
- return (OnlineApplication) result.get(0);
- }
-
- public static MOAIDConfiguration getMOAIDConfiguration() {
- Logger.trace("Load MOAID Configuration from database.");
-
- List<MOAIDConfiguration> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getMOAIDConfiguration"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found. Create fresh instance.");
- return null;
- }
-
- return (MOAIDConfiguration) result.get(0);
- }
-
- public static List<OnlineApplication> getAllOnlineApplications() {
- Logger.trace("Get All OnlineApplications from database.");
-
- List<OnlineApplication> result = null;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOnlineApplications"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return result;
- }
-
- public static List<OnlineApplication> getAllNewOnlineApplications() {
- Logger.trace("Get All OnlineApplications from database.");
-
- List<OnlineApplication> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewOnlineApplications"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return result;
- }
-
- public static List<UserDatabase> getAllUsers() {
- Logger.trace("Get All OnlineApplications from database.");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getAllUsers"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return result;
- }
-
- public static List<OnlineApplication> getAllActiveOnlineApplications() {
- Logger.trace("Get All active OnlineApplications from database.");
-
- List<OnlineApplication> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getAllActiveOnlineApplications"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- result = new ArrayList<OnlineApplication>();
-
- }
- return result;
- }
-
- @SuppressWarnings("rawtypes")
- public static List<OnlineApplication> searchOnlineApplications(String id) {
- MiscUtil.assertNotNull(id, "OnlineApplictionID");
- Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
-
- List<OnlineApplication> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("searchOnlineApplicationsWithID"));
- query.setParameter("id", "%" + id + "%");
-
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
-
- return result;
- }
-
- public static UserDatabase getUserWithID(long id) {
- MiscUtil.assertNotNull(id, "UserID");
- Logger.trace("Getting Userinformation with ID " + id + " from database.");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserID"));
- query.setParameter("id", id);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return (UserDatabase) result.get(0);
- }
-
- public static UserDatabase getUsersWithOADBID(long id) {
- MiscUtil.assertNotNull(id, "OADBID");
- Logger.trace("Getting Userinformation with OADBID " + id + " from database.");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getUsersWithOADBID"));
- query.setParameter("id", id);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return (UserDatabase) result.get(0);
- }
-
- public static UserDatabase getUserWithUserName(String username) {
- MiscUtil.assertNotNull(username, "UserName");
- Logger.trace("Getting Userinformation with ID " + username + " from database.");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserUsername"));
- query.setParameter("username", username);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return (UserDatabase) result.get(0);
- }
-
- public static UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) {
- MiscUtil.assertNotNull(bpkwbpk, "bpk/wbpk");
- Logger.trace("Getting Userinformation with ID " + bpkwbpk + " from database.");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserBPKWBPK"));
- query.setParameter("bpk", bpkwbpk);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return (UserDatabase) result.get(0);
- }
-
- public static UserDatabase getNewUserWithTokken(String tokken) {
- MiscUtil.assertNotNull(tokken, "bpk/wbpk");
- Logger.trace("Getting Userinformation with Tokken " + tokken + " from database.");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getNewUserWithUserTokken"));
- query.setParameter("tokken", tokken);
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return (UserDatabase) result.get(0);
- }
-
- public static List<UserDatabase> getAllNewUsers() {
- Logger.trace("Get all new Users from Database");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewUsers"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return result;
- }
-
- public static List<UserDatabase> getAllOpenUsersRequests() {
- Logger.trace("Get all new Users from Database");
-
- List<UserDatabase> result;
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
-
- javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOpenUsersRequests"));
- result = query.getResultList();
-
- Logger.trace("Found entries: " + result.size());
-
- if (result.size() == 0) {
- Logger.trace("No entries found.");
- return null;
- }
- return result;
- }
-}
+///*******************************************************************************
+// * 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;
+//
+//import java.util.ArrayList;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//
+//import javax.persistence.EntityManager;
+//
+//import org.apache.commons.lang3.StringEscapeUtils;
+//
+//import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+//import at.gv.egovernment.moa.logging.Logger;
+//import at.gv.egovernment.moa.util.MiscUtil;
+////import org.apache.commons.lang.StringEscapeUtils;
+//
+//import com.fasterxml.jackson.annotation.JsonProperty;
+//
+///**
+// *
+// * @author tlenz
+// *
+// * @deprecated
+// */
+//
+//@SuppressWarnings("rawtypes")
+//public class ConfigurationDBRead {
+//
+// private static Map<String, String> QUERIES = new HashMap<String, String>();
+//
+// static {
+// QUERIES.put("getActiveOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) and onlineapplication.isActive = '1'");
+// QUERIES.put("getOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix))");
+// QUERIES.put("getOnlineApplicationWithDBID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.hjid = :id");
+// QUERIES.put("getAllOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication");
+// QUERIES.put("getAllActiveOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '1'");
+// QUERIES.put("getAllNewOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '0' and onlineapplication.isAdminRequired = '1'");
+// QUERIES.put("getMOAIDConfiguration", "select moaidconfiguration from MOAIDConfiguration moaidconfiguration");
+// QUERIES.put("getUserWithUserID", "select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id");
+// QUERIES.put("getNewUserWithUserTokken", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken");
+// QUERIES.put("getAllNewUsers", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '1'");
+// QUERIES.put("getAllOpenUsersRequests", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is not null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'");
+// QUERIES.put("getUserWithUserBPKWBPK", "select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk");
+// QUERIES.put("getUserWithUserUsername", "select userdatabase from UserDatabase userdatabase where userdatabase.username = :username");
+// QUERIES.put("getAllUsers", "select userdatabase from UserDatabase userdatabase");
+// QUERIES.put("getUsersWithOADBID", "select userdatabase from UserDatabase userdatabase inner join userdatabase.onlineApplication oa where oa.hjid = :id");
+// QUERIES.put("searchOnlineApplicationsWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.friendlyName like :id");
+// }
+//
+//// public static OnlineApplication getActiveOnlineApplication(String id) {
+//// MiscUtil.assertNotNull(id, "OnlineApplictionID");
+//// Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
+////
+//// List result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getActiveOnlineApplicationWithID"));
+//// //query.setParameter("id", id+"%");
+//// query.setParameter("id", StringEscapeUtils.escapeHtml4(id));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.debug("No entries found.");
+//// return null;
+//// }
+////
+//// if (result.size() > 1) {
+//// Logger.warn("OAIdentifier match to more then one DB-entry!");
+//// return null;
+//// }
+////
+//// return (OnlineApplication) result.get(0);
+//// }
+////
+//// public static OnlineApplication getOnlineApplication(String id) {
+//// MiscUtil.assertNotNull(id, "OnlineApplictionID");
+//// Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
+////
+//// List result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithID"));
+//// //query.setParameter("id", id+"%");
+//// query.setParameter("id", id);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+////
+//// if (result.size() > 1) {
+//// Logger.warn("OAIdentifier match to more then one DB-entry!");
+//// return null;
+//// }
+////
+//// return (OnlineApplication) result.get(0);
+//// }
+////
+//// public static OnlineApplication getOnlineApplication(long dbid) {
+//// MiscUtil.assertNotNull(dbid, "OnlineApplictionID");
+//// Logger.trace("Getting OnlineApplication with DBID " + dbid + " from database.");
+////
+//// List result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithDBID"));
+//// //query.setParameter("id", id+"%");
+//// query.setParameter("id", dbid);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+////
+//// return (OnlineApplication) result.get(0);
+//// }
+////
+//// @JsonProperty("getMOAIDConfiguration")
+//// public static MOAIDConfiguration getMOAIDConfiguration() {
+//// Logger.trace("Load MOAID Configuration from database.");
+////
+//// List<MOAIDConfiguration> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getMOAIDConfiguration"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found. Create fresh instance.");
+//// return null;
+//// }
+////
+//// return (MOAIDConfiguration) result.get(0);
+//// }
+////
+//// @JsonProperty("getAllOnlineApplications")
+//// public static List<OnlineApplication> getAllOnlineApplications() {
+//// Logger.trace("Get All OnlineApplications from database.");
+////
+//// List<OnlineApplication> result = null;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOnlineApplications"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return result;
+//// }
+////
+//// public static List<OnlineApplication> getAllNewOnlineApplications() {
+//// Logger.trace("Get All OnlineApplications from database.");
+////
+//// List<OnlineApplication> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewOnlineApplications"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return result;
+//// }
+////
+//// @JsonProperty("getAllUsers")
+//// public static List<UserDatabase> getAllUsers() {
+//// Logger.trace("Get All OnlineApplications from database.");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getAllUsers"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return result;
+//// }
+////
+//// public static List<OnlineApplication> getAllActiveOnlineApplications() {
+//// Logger.trace("Get All active OnlineApplications from database.");
+////
+//// List<OnlineApplication> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getAllActiveOnlineApplications"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// result = new ArrayList<OnlineApplication>();
+////
+//// }
+//// return result;
+//// }
+////
+//// @SuppressWarnings("rawtypes")
+//// public static List<OnlineApplication> searchOnlineApplications(String id) {
+//// MiscUtil.assertNotNull(id, "OnlineApplictionID");
+//// Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
+////
+//// List<OnlineApplication> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("searchOnlineApplicationsWithID"));
+//// query.setParameter("id", "%" + id + "%");
+////
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+////
+//// return result;
+//// }
+////
+//// public static UserDatabase getUserWithID(long id) {
+//// MiscUtil.assertNotNull(id, "UserID");
+//// Logger.trace("Getting Userinformation with ID " + id + " from database.");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserID"));
+//// query.setParameter("id", id);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return (UserDatabase) result.get(0);
+//// }
+////
+//// public static UserDatabase getUsersWithOADBID(long id) {
+//// MiscUtil.assertNotNull(id, "OADBID");
+//// Logger.trace("Getting Userinformation with OADBID " + id + " from database.");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getUsersWithOADBID"));
+//// query.setParameter("id", id);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return (UserDatabase) result.get(0);
+//// }
+////
+//// public static UserDatabase getUserWithUserName(String username) {
+//// MiscUtil.assertNotNull(username, "UserName");
+//// Logger.trace("Getting Userinformation with ID " + username + " from database.");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserUsername"));
+//// query.setParameter("username", username);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return (UserDatabase) result.get(0);
+//// }
+////
+//// public static UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) {
+//// MiscUtil.assertNotNull(bpkwbpk, "bpk/wbpk");
+//// Logger.trace("Getting Userinformation with ID " + bpkwbpk + " from database.");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserBPKWBPK"));
+//// query.setParameter("bpk", bpkwbpk);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return (UserDatabase) result.get(0);
+//// }
+////
+//// public static UserDatabase getNewUserWithTokken(String tokken) {
+//// MiscUtil.assertNotNull(tokken, "bpk/wbpk");
+//// Logger.trace("Getting Userinformation with Tokken " + tokken + " from database.");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getNewUserWithUserTokken"));
+//// query.setParameter("tokken", tokken);
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return (UserDatabase) result.get(0);
+//// }
+////
+//// public static List<UserDatabase> getAllNewUsers() {
+//// Logger.trace("Get all new Users from Database");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewUsers"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return result;
+//// }
+////
+//// public static List<UserDatabase> getAllOpenUsersRequests() {
+//// Logger.trace("Get all new Users from Database");
+////
+//// List<UserDatabase> result;
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+////
+//// javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOpenUsersRequests"));
+//// result = query.getResultList();
+////
+//// Logger.trace("Found entries: " + result.size());
+////
+//// if (result.size() == 0) {
+//// Logger.trace("No entries found.");
+//// return null;
+//// }
+//// return result;
+//// }
+//}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
index 3dcfa8aa9..7f996cca7 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBUtils.java
@@ -1,219 +1,233 @@
-/*******************************************************************************
- * 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;
-
-import java.util.Properties;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityTransaction;
-import javax.persistence.Persistence;
-
-import org.hibernate.HibernateException;
-
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
-import at.gv.egovernment.moa.logging.Logger;
-
-public final class ConfigurationDBUtils {
-
- private static EntityManagerFactory entitymanagerfactory;
-
- @SuppressWarnings("rawtypes")
- private static final ThreadLocal THREAD_LOCAL_CONFIG = new ThreadLocal();
- private static boolean automaticSessionHandling = false;
-
- protected ConfigurationDBUtils() { }
-
- public static void initHibernate(Properties props) throws MOADatabaseException {
-
- try {
-
- Logger.debug("Creating initial session factory...");
-
- entitymanagerfactory =
- Persistence.createEntityManagerFactory("at.gv.egovernment.moa.id.commons.db.dao.config",
- props);
-
- Logger.debug("Initial ConfigDB session factory successfully created.");
-
-
- } catch (Throwable ex) {
- Logger.error("Initial session factory creation failed: " + ex.getMessage());
- throw new MOADatabaseException("Initialization of Configuration Hibernate session factory failed.",ex);
- }
- }
-
-
- /**
- * Checks if a session factory is currently available. If necessary a new
- * session factory is created.
- *
- * @return current (or new) session factory
- * @throws HibernateException
- * thrown if a hibernate error occurs
- */
- public static EntityManager getCurrentSession() {
- if (automaticSessionHandling) {
-
- return entitymanagerfactory.createEntityManager();
- }
-
- EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
-
- if (session != null && session.isOpen()) {
-
- //maybe a hack, but sometimes we do not know if the session is closed (session already closed but isOpen()=true)
- try {
- javax.persistence.Query query = session.createQuery("select userdatabase from UserDatabase userdatabase");
- query.getResultList();
-
- } catch (Throwable e) {
- Logger.warn("JPA Session Handling Warning!!!! - This error should not occur.");
- session = getNewSession();
- }
-
- } else
- session = getNewSession();
-
- return session;
- }
-
- @SuppressWarnings("unchecked")
- public static EntityManager getNewSession() {
- if (automaticSessionHandling) {
- Logger.warn("Session is being automatically handled by hibernate. Therefore this session maybe not being newly created. Use HibernateUtil.getCurrentSession() instead.");
- return entitymanagerfactory.createEntityManager();
- }
- EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
- if (session != null ) {
- Logger.warn("Previous session has not been closed; closing ConfigDB session now.");
- closeSession();
- }
- Logger.debug("Opening new ConfigDB hibernate session...");
- try {
- session = entitymanagerfactory.createEntityManager();
- THREAD_LOCAL_CONFIG.set(session);
- } catch (HibernateException hex) {
- Logger.error(hex.getMessage());
- }
- return session;
- }
-
- /**
- * Closes the current session.
- *
- * @throws HibernateException
- * thrown if session is already closed or a hibernate error
- * occurs.
- */
- @SuppressWarnings("unchecked")
- public static void closeSession() {
- if (automaticSessionHandling) {
- Logger.warn("Session is being automatically handled by hibernate. Therefore the current session cannot be closed on demand.");
- return;
- }
- Logger.debug("Closing current ConfigDB hibernate session...");
- EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
- THREAD_LOCAL_CONFIG.set(null);
- if (session != null) {
- try {
- session.close();
-
- } catch (HibernateException hex) {
- Logger.error(hex.getMessage());
- }
- }
- }
-
- public static boolean save(Object dbo) throws MOADatabaseException {
- EntityTransaction tx = null;
-
- try {
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
- tx = session.getTransaction();
-
- synchronized (session) {
- tx.begin();
- session.merge(dbo);
- tx.commit();
-
- session.clear();
- }
- return true;
-
- } catch(HibernateException e) {
- Logger.warn("Error during Config database saveOrUpdate. Rollback.", e);
- tx.rollback();
- throw new MOADatabaseException(e);
- }
- }
-
-
- public static boolean saveOrUpdate(Object dbo) throws MOADatabaseException {
- EntityTransaction tx = null;
-
- try {
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
- tx = session.getTransaction();
-
- synchronized (session) {
- tx.begin();
-
- session.merge(dbo);
- session.flush();
-
- tx.commit();
-
- //session.clear();
- }
- return true;
-
- } catch(HibernateException e) {
- Logger.warn("Error during Config database saveOrUpdate. Rollback.", e);
- tx.rollback();
- throw new MOADatabaseException(e);
- }
- }
-
- public static boolean delete(Object dbo) {
- EntityTransaction tx = null;
- try {
- EntityManager session = ConfigurationDBUtils.getCurrentSession();
- tx = session.getTransaction();
-
- synchronized (session) {
- tx.begin();
- session.remove(session.contains(dbo) ? dbo : session.merge(dbo));
- tx.commit();
- }
-
- return true;
-
- } catch(HibernateException e) {
- Logger.warn("Error during Config database delete. Rollback.", e);
- tx.rollback();
- return false;
- }
- }
-
-}
+///*******************************************************************************
+// * 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;
+//
+//import java.util.Properties;
+//
+//import javax.persistence.EntityManager;
+//import javax.persistence.EntityManagerFactory;
+//import javax.persistence.EntityTransaction;
+//import javax.persistence.Persistence;
+//
+//import org.hibernate.HibernateException;
+//
+//import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+//import at.gv.egovernment.moa.logging.Logger;
+//
+//public final class ConfigurationDBUtils {
+//
+// private static EntityManagerFactory entitymanagerfactory;
+//
+// @SuppressWarnings("rawtypes")
+// private static final ThreadLocal THREAD_LOCAL_CONFIG = new ThreadLocal();
+// private static boolean automaticSessionHandling = false;
+//
+// protected ConfigurationDBUtils() { }
+//
+// public static void initHibernate(Properties props) throws MOADatabaseException {
+//
+//// try {
+////
+//// Logger.debug("Creating initial session factory...");
+////
+//// entitymanagerfactory =
+//// Persistence.createEntityManagerFactory("at.gv.egovernment.moa.id.commons.db.dao.config",
+//// props);
+////
+//// Logger.debug("Initial ConfigDB session factory successfully created.");
+////
+////
+//// } catch (Throwable ex) {
+//// Logger.error("Initial session factory creation failed: " + ex.getMessage());
+//// throw new MOADatabaseException("Initialization of Configuration Hibernate session factory failed.",ex);
+//// }
+// }
+//
+//
+//// /**
+//// * Checks if a session factory is currently available. If necessary a new
+//// * session factory is created.
+//// *
+//// * @return current (or new) session factory
+//// * @throws HibernateException
+//// * thrown if a hibernate error occurs
+//// */
+//// public static EntityManager getCurrentSession() {
+//// if (automaticSessionHandling) {
+////
+//// return entitymanagerfactory.createEntityManager();
+//// }
+////
+//// EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
+////
+//// if (session != null && session.isOpen()) {
+////
+//// //maybe a hack, but sometimes we do not know if the session is closed (session already closed but isOpen()=true)
+//// try {
+//// javax.persistence.Query query = session.createQuery("select userdatabase from UserDatabase userdatabase");
+//// query.getResultList();
+////
+//// } catch (Throwable e) {
+//// Logger.warn("JPA Session Handling Warning!!!! - This error should not occur.");
+//// session = getNewSession();
+//// }
+////
+//// } else
+//// session = getNewSession();
+////
+//// return session;
+//// }
+////
+//// @SuppressWarnings("unchecked")
+//// public static EntityManager getNewSession() {
+//// if (automaticSessionHandling) {
+//// Logger.warn("Session is being automatically handled by hibernate. Therefore this session maybe not being newly created. Use HibernateUtil.getCurrentSession() instead.");
+//// return entitymanagerfactory.createEntityManager();
+//// }
+//// EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
+//// if (session != null ) {
+//// Logger.warn("Previous session has not been closed; closing ConfigDB session now.");
+//// closeSession();
+//// }
+//// Logger.debug("Opening new ConfigDB hibernate session...");
+//// try {
+//// session = entitymanagerfactory.createEntityManager();
+//// THREAD_LOCAL_CONFIG.set(session);
+//// } catch (HibernateException hex) {
+//// Logger.error(hex.getMessage());
+//// }
+//// return session;
+//// }
+//
+// /**
+// * Closes the current session.
+// *
+// * @throws HibernateException
+// * thrown if session is already closed or a hibernate error
+// * occurs.
+// *
+// * @deprecated
+// */
+//@SuppressWarnings("unchecked")
+//public static void closeSession() {
+//
+//}
+//
+//// /**
+//// * Closes the current session.
+//// *
+//// * @throws HibernateException
+//// * thrown if session is already closed or a hibernate error
+//// * occurs.
+//// */
+//// @SuppressWarnings("unchecked")
+//// public static void closeSession() {
+//// if (automaticSessionHandling) {
+//// Logger.warn("Session is being automatically handled by hibernate. Therefore the current session cannot be closed on demand.");
+//// return;
+//// }
+//// Logger.debug("Closing current ConfigDB hibernate session...");
+//// EntityManager session = (EntityManager) THREAD_LOCAL_CONFIG.get();
+//// THREAD_LOCAL_CONFIG.set(null);
+//// if (session != null) {
+//// try {
+//// session.close();
+////
+//// } catch (HibernateException hex) {
+//// Logger.error(hex.getMessage());
+//// }
+//// }
+//// }
+////
+//// public static boolean save(Object dbo) throws MOADatabaseException {
+//// EntityTransaction tx = null;
+////
+//// try {
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+//// tx = session.getTransaction();
+////
+//// synchronized (session) {
+//// tx.begin();
+//// session.merge(dbo);
+//// tx.commit();
+////
+//// session.clear();
+//// }
+//// return true;
+////
+//// } catch(HibernateException e) {
+//// Logger.warn("Error during Config database saveOrUpdate. Rollback.", e);
+//// tx.rollback();
+//// throw new MOADatabaseException(e);
+//// }
+//// }
+////
+////
+//// public static boolean saveOrUpdate(Object dbo) throws MOADatabaseException {
+//// EntityTransaction tx = null;
+////
+//// try {
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+//// tx = session.getTransaction();
+////
+//// synchronized (session) {
+//// tx.begin();
+////
+//// session.merge(dbo);
+//// session.flush();
+////
+//// tx.commit();
+////
+//// //session.clear();
+//// }
+//// return true;
+////
+//// } catch(HibernateException e) {
+//// Logger.warn("Error during Config database saveOrUpdate. Rollback.", e);
+//// tx.rollback();
+//// throw new MOADatabaseException(e);
+//// }
+//// }
+////
+//// public static boolean delete(Object dbo) {
+//// EntityTransaction tx = null;
+//// try {
+//// EntityManager session = ConfigurationDBUtils.getCurrentSession();
+//// tx = session.getTransaction();
+////
+//// synchronized (session) {
+//// tx.begin();
+//// session.remove(session.contains(dbo) ? dbo : session.merge(dbo));
+//// tx.commit();
+//// }
+////
+//// return true;
+////
+//// } catch(HibernateException e) {
+//// Logger.warn("Error during Config database delete. Rollback.", e);
+//// tx.rollback();
+//// return false;
+//// }
+//// }
+//
+//}
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
new file mode 100644
index 000000000..4a90d1bce
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBRead.java
@@ -0,0 +1,301 @@
+package at.gv.egovernment.moa.id.commons.db;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.id.commons.config.ConfigurationMigrationUtils;
+import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+
+import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.logging.Logger;
+
+/**
+ *
+ *
+ */
+public class NewConfigurationDBRead {
+
+ private MOAIDConfiguration conf;
+
+ @Autowired(required = true)
+ public void setConfiguration(MOAIDConfiguration conf) {
+ // https://jira.spring.io/browse/SPR-3845
+ this.conf = conf;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends Iterable<?>> T nullGuard(T item) {
+ if (item == null) {
+ return (T) Collections.emptyList();
+ } else {
+ return item;
+ }
+
+ }
+
+ public Map<String, String> getOnlineApplicationKeyValueWithId(String id) {
+ try {
+ return conf.getOnlineApplication(id);
+
+ } catch (ConfigurationException e) {
+ Logger.warn("OnlineApplication with Id: " + id + " not found.", e);
+ return null;
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<OnlineApplication> getAllOnlineApplications() {
+ Logger.trace("Get All OnlineApplications from database.");
+
+ List<OnlineApplication> result = new ArrayList<OnlineApplication>();
+ try {
+ String[] allUniqueOAIDs = conf.findConfigurationId(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES + ".*." + MOAIDConfigurationConstants.SERVICE_UNIQUEIDENTIFIER);
+ if (allUniqueOAIDs != null) {
+ for (String uniqueOAID : allUniqueOAIDs) {
+ String oaKeyId = KeyValueUtils.getParentKey(uniqueOAID);
+
+ Logger.debug("Search service with KeyPrefix:" + oaKeyId);
+ Map<String, String> oaKeyValuePairs = conf.getPropertySubset(oaKeyId, true);
+
+ String serviceType = KeyValueUtils.getFirstChildAfterPrefix(oaKeyId, MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES);
+ Logger.debug("Identify Service as: " + serviceType);
+
+ if (oaKeyValuePairs != null) {
+ Logger.debug("Transform Key/Value to JaxB configuration ...");
+ oaKeyValuePairs.put(MOAIDConfigurationConstants.PREFIX_MOAID_SERVICES, serviceType);
+ OnlineApplication jaxBOA = ConfigurationMigrationUtils.convertKeyValueToHyberJaxBOnlineApplication(oaKeyValuePairs);
+
+ String hjID = KeyValueUtils.getFirstChildAfterPrefix(oaKeyId, KeyValueUtils.getParentKey(oaKeyId));
+ if (serviceType.equals(MOAIDConfigurationConstants.PREFIX_GATEWAY))
+ jaxBOA.setHjid(Long.valueOf(hjID) + 1000000);
+ else if (serviceType.equals(MOAIDConfigurationConstants.PREFIX_IIDP))
+ jaxBOA.setHjid(Long.valueOf(hjID) + 2000000);
+ else if (serviceType.equals(MOAIDConfigurationConstants.PREFIX_VIDP))
+ jaxBOA.setHjid(Long.valueOf(hjID) + 3000000);
+ else
+ jaxBOA.setHjid(Long.valueOf(hjID));
+
+ Logger.debug("Transformation finished with JaxB hjID: " + hjID);
+ result.add(jaxBOA);
+
+ } else
+ Logger.info("No Service configuration with KeyPrefix: " + oaKeyId);
+ }
+ }
+ if (!result.isEmpty())
+ return result;
+
+ } catch (ConfigurationException e) {
+ Logger.error("Access configuration FAILED.", e);
+
+ }
+
+ return null;
+
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<OnlineApplication> getAllNewOnlineApplications() {
+ Logger.trace("Get All New OnlineApplications from database.");
+
+ // select onlineapplication from OnlineApplication onlineapplication
+ // where onlineapplication.isActive = '0' and onlineapplication.isAdminRequired = '1'
+ List<OnlineApplication> result = new ArrayList<OnlineApplication>();
+ List<OnlineApplication> allOAs = getAllOnlineApplications();
+
+ for (OnlineApplication oa : nullGuard(allOAs)) {
+ if (!oa.isIsActive() && oa.isIsAdminRequired()) {
+ result.add(oa);
+ }
+ }
+
+ if (result.size() == 0) {
+ Logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration getMOAIDConfiguration() {
+ Logger.trace("Load MOAID Configuration from database.");
+ Map<String, String> generalConfig;
+ try {
+ generalConfig = conf.getPropertySubset(MOAIDConfigurationConstants.PREFIX_MOAID_GENERAL, false);
+ if (generalConfig != null) {
+ Logger.debug("Key/Value configuration found -> Start mapping process ...");
+
+ at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.MOAIDConfiguration result =
+ ConfigurationMigrationUtils.convertKeyValueToHyberJaxBMOAIDConfiguration(generalConfig);
+ Logger.debug("Configuration mapping process finished.");
+
+ return result;
+
+ }
+
+ } catch (ConfigurationException e) {
+ Logger.error("Configuration access FAILED!", e);
+ }
+
+ Logger.info("No general MOA-ID configuration found!");
+ return null;
+
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<OnlineApplication> getAllActiveOnlineApplications() {
+ Logger.trace("Get All New OnlineApplications from database.");
+
+ // select onlineapplication from OnlineApplication onlineapplication
+ // where onlineapplication.isActive = '1'
+ List<OnlineApplication> result = new ArrayList<OnlineApplication>();
+ List<OnlineApplication> allOAs = getAllOnlineApplications();
+
+ for (OnlineApplication oa : nullGuard(allOAs)) {
+ if (oa.isIsActive()) {
+ result.add(oa);
+ }
+ }
+
+ if (result.size() == 0) {
+ Logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public OnlineApplication getActiveOnlineApplication(String id) {
+ Logger.trace("Getting Active OnlineApplication with ID " + id + " from database.");
+
+ // select onlineapplication from OnlineApplication onlineapplication
+ // where onlineapplication.publicURLPrefix =
+ // SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) and onlineapplication.isActive = '1'
+ OnlineApplication result = null;
+ List<OnlineApplication> allActiveOAs = getAllActiveOnlineApplications();
+
+ for (OnlineApplication oa : nullGuard(allActiveOAs)) {
+ String publicUrlPrefix = oa.getPublicURLPrefix();
+ if (publicUrlPrefix != null && publicUrlPrefix.length() <= id.length()) {
+ if ((id.substring(1, publicUrlPrefix.length()).equals(publicUrlPrefix))) {
+ if (result != null) {
+ Logger.warn("OAIdentifier match to more then one DB-entry!");
+ return null;
+ } else {
+ result = oa;
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param dbid
+ * @return
+ */
+ public OnlineApplication getOnlineApplication(long dbid) {
+ Logger.trace("Getting OnlineApplication with DBID " + dbid + " from database.");
+
+ // select onlineapplication from OnlineApplication onlineapplication where onlineapplication.hjid = :id
+ OnlineApplication result = null;
+ List<OnlineApplication> allOAs = getAllOnlineApplications();
+
+ for (OnlineApplication oa : nullGuard(allOAs)) {
+ if (oa.getHjid() == dbid) {
+ result = oa;
+ break;
+ }
+ }
+
+ 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))
+ OnlineApplication result = null;
+ 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;
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public List<OnlineApplication> searchOnlineApplications(String id) {
+ Logger.trace("Getting OnlineApplication with ID " + id + " from database.");
+
+ // select onlineapplication from OnlineApplication onlineapplication
+ // where onlineapplication.friendlyName like :id
+ List<OnlineApplication> result = new ArrayList<OnlineApplication>();
+ List<OnlineApplication> allOAs = getAllOnlineApplications();
+
+ for (OnlineApplication oa : nullGuard(allOAs)) {
+ if (oa.getFriendlyName().contains(id)) {
+ result.add(oa);
+ }
+ }
+
+ if (result.size() == 0) {
+ Logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBWrite.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBWrite.java
new file mode 100644
index 000000000..ccc7f33f1
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/NewConfigurationDBWrite.java
@@ -0,0 +1,52 @@
+//package at.gv.egovernment.moa.id.commons.db;
+//
+//import java.util.Date;
+//import java.util.List;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+//import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
+//import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.AuthComponentGeneral;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.ChainingModes;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.DefaultBKUs;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.GenericConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.OnlineApplication;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SLRequestTemplates;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+//import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+//
+///**
+// * This class is used for writing to the key-value database.
+// */
+//@Component
+//public class NewConfigurationDBWrite {
+//
+// private static MOAIDConfiguration conf;
+//
+// @Autowired(required = true)
+// public void setConfiguration(MOAIDConfiguration conf) {
+// // https://jira.spring.io/browse/SPR-3845
+// NewConfigurationDBWrite.conf = conf;
+// }
+//
+//
+//
+// /**
+// * @param user
+// */
+// public void saveOrUpdate(UserDatabase user) throws MOADatabaseException{
+// // TODO Auto-generated method stub
+//
+// }
+//
+// /**
+// * @param dbuser
+// */
+// public void delete(UserDatabase dbuser) {
+// // TODO Auto-generated method stub
+//
+// }
+//
+//}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java
new file mode 100644
index 000000000..f59e39ac6
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/DatabaseConfigPropertyImpl.java
@@ -0,0 +1,216 @@
+package at.gv.egovernment.moa.id.commons.db.dao.config;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import at.gv.egiz.components.configuration.api.AbstractConfigurationImpl;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * Database backed implementation of the DAO interface
+ *
+ */
+@Repository
+@Transactional("transactionManager")
+public class DatabaseConfigPropertyImpl extends AbstractConfigurationImpl {
+
+ private Logger log = LoggerFactory.getLogger(getClass());
+
+ @PersistenceContext(unitName = "config")
+ private EntityManager em;
+
+ /**
+ *
+ * @return EntityManager for database access
+ */
+ protected EntityManager getPersistenceContext() {
+ return em;
+ }
+
+ @Override
+ protected List<String> getAllKeys() throws ConfigurationException {
+ if (null == em) {
+ log.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+ }
+ TypedQuery<String> query = em.createQuery("select key from ConfigProperty", String.class);
+ List<String> result = query.getResultList();
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#getValue(java.lang.String)
+ */
+ @Override
+ protected String getValue(String key) throws ConfigurationException {
+ ConfigProperty property = getProperty(key);
+ if (property == null)
+ return null;
+
+ else {
+ if (MiscUtil.isEmpty(property.getValue()))
+ return new String();
+ else
+ return property.getValue();
+
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#containsKey(java.lang.String)
+ */
+ @Override
+ protected boolean containsKey(String key) throws ConfigurationException {
+ ConfigProperty property = getProperty(key);
+ if (property == null)
+ return false;
+ else
+ return true;
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#storeKey(java.lang.String, java.lang.String)
+ */
+ @Override
+ @Transactional("transactionManager")
+ protected void storeKey(String key, String value) throws ConfigurationException {
+ if (null == em) {
+ log.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+
+ }
+ ConfigProperty property = new ConfigProperty();
+ property.setKey(key);
+ property.setValue(value);
+ log.debug("Storing '{}'.", property.toString());
+// em.persist(property);
+ em.merge(property);
+
+ }
+
+ protected void deleteKey(String key) {
+ log.debug("Deleting entry with key '{}'.", key);
+ ConfigProperty el = em.find(ConfigProperty.class, key);
+ if (el != null)
+ em.remove(el);
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#findConfigurationId(java.lang.String)
+ */
+ @Override
+ public String[] findConfigurationId(String searchString)
+ throws ConfigurationException {
+ if (null == em) {
+ log.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+ }
+
+ TypedQuery<String> query = em.createQuery("select key from ConfigProperty dbconfig where dbconfig.key like :key", String.class);
+ query.setParameter("key", searchString.replace("*", "%"));
+ List<String> result = query.getResultList();
+ if (result == null)
+ return null;
+ else
+ return result.toArray(new String[result.size()]);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#findByValue(java.lang.String)
+ */
+ @Override
+ public String[] findByValue(String searchString)
+ throws ConfigurationException {
+ if (null == em) {
+ log.error("No EntityManager set!");
+ throw new ConfigurationException("No EntityManager set!");
+ }
+
+ TypedQuery<String> query = em.createQuery("select key from ConfigProperty dbconfig where dbconfig.value like :value", String.class);
+ query.setParameter("value", searchString.replace("*", "%"));
+ List<String> result = query.getResultList();
+ return result.toArray(new String[result.size()]);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#synchronize()
+ */
+ @Override
+ public void synchronize() throws ConfigurationException {
+ //INFO: no implementation required
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#getName()
+ */
+ @Override
+ public String getName() {
+ return "DatabaseConfiguration";
+ }
+
+
+ private ConfigProperty getProperty(String key) {
+ log.trace("Looking for configuration property for key '{}'.", key);
+ ConfigProperty result = em.find(ConfigProperty.class, key);
+ if (result != null) {
+ log.trace("Found configuration property {}.", result);
+ } else {
+ log.debug("Unable to find configuration property for key '{}'.", key);
+ }
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.components.configuration.api.AbstractConfigurationImpl#deleteIds(java.lang.String)
+ */
+ @Override
+ @Transactional("transactionManager")
+ public void deleteIds(String idSearch) throws ConfigurationException {
+ String[] keyList = findConfigurationId(idSearch);
+ for (String el : keyList) {
+ deleteKey(el);
+
+ }
+ }
+
+// @Override
+// public String getPropertyValue(String key) {
+// ConfigProperty property = getProperty(key);
+// if (property == null) {
+// return null;
+// }
+// return property.getValue();
+// }
+//
+// @Override
+// public List<ConfigProperty> getProperties() {
+//
+// if (null == em) {
+// log.error("No EntityManager set!");
+// return null;
+// }
+//
+// log.debug("Retrieving all properties from database.");
+// TypedQuery<ConfigProperty> query = em.createQuery("select mc from ConfigProperty mc", ConfigProperty.class);
+// try {
+// List<ConfigProperty> propertiesList = query.getResultList();
+// return propertiesList;
+// } catch (NoResultException e) {
+// log.debug("No property found in database.");
+// return null;
+// }
+// }
+
+} \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/UserDatabase.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/UserDatabase.java
new file mode 100644
index 000000000..9f8503b3d
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/UserDatabase.java
@@ -0,0 +1,647 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.08.13 at 12:34:51 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class UserDatabase
+ implements Serializable
+{
+
+ public static final String BPK = "bpk";
+ public static final String FAMILYNAME = "familyname";
+ public static final String GIVENNAME = "givenname";
+ public static final String INSTITUT = "institut";
+ public static final String MAIL = "mail";
+ public static final String PHONE = "phone";
+ public static final String USERNAME = "username";
+ public static final String PASSWORD = "password";
+ public static final String PASSWORD_SALT = "passwordSalt";
+ public static final String USERREQUESTTOCKEN = "userRequestTokken";
+ public static final String ISACTIVE = "isActive";
+ public static final String ISADMIN = "isAdmin";
+ public static final String ISPASSWORDALLOWED= "isUsernamePasswordAllowed";
+ public static final String ISMANDATEUSER = "isMandateUser";
+ public static final String ISMAILVERIFIED = "isMailAddressVerified";
+ public static final String ISADMINREQUESTED = "isAdminRequest";
+ public static final String ISPVPGENERATED = "isPVP2Generated";
+ public static final String LASTLOGIN = "lastLogin";
+ public static final String OALIST = "onlineApplication";
+ public static final String ISONLYBUSINESSSERVICE= "onlyBusinessService";
+ public static final String BUSINESSSERVICETYPE = "businessServiceType";
+
+ public static final String PREFIX = "user";
+
+ private static final long serialVersionUID = 6389231943819413362L;
+ protected String bpk;
+ protected String familyname;
+ protected String givenname;
+ protected String institut;
+ protected String mail;
+ protected String phone;
+ protected String username;
+ protected String password;
+ protected String passwordSalt;
+ protected String userRequestTokken;
+ protected Boolean isActive = false;
+ protected Boolean isAdmin = false;
+ protected Boolean isUsernamePasswordAllowed = false;
+ protected Boolean isMandateUser = false;
+ protected Boolean isMailAddressVerified = false;
+ protected Boolean isAdminRequest = false;
+ protected Boolean isPVP2Generated = false;
+ protected String lastLogin;
+ protected Boolean onlyBusinessService = false;
+ protected String businessServiceType;
+ protected String hjid;
+
+ private List<String> oaIDs = null;
+
+ public UserDatabase() {
+
+ }
+
+ public UserDatabase(Map<String, String> keyValue) {
+ if (keyValue != null) {
+ bpk = keyValue.get(BPK);
+ familyname = keyValue.get(FAMILYNAME);
+ givenname = keyValue.get(GIVENNAME);
+ institut = keyValue.get(INSTITUT);
+ mail = keyValue.get(MAIL);
+ phone = keyValue.get(PHONE);
+ username = keyValue.get(USERNAME);
+ password = keyValue.get(PASSWORD);
+ passwordSalt = keyValue.get(PASSWORD_SALT);
+ userRequestTokken = keyValue.get(USERREQUESTTOCKEN);
+ isActive = Boolean.parseBoolean(keyValue.get(ISACTIVE));
+ isAdmin = Boolean.parseBoolean(keyValue.get(ISADMIN));
+ isUsernamePasswordAllowed= Boolean.parseBoolean(keyValue.get(ISPASSWORDALLOWED));
+ isMandateUser = Boolean.parseBoolean(keyValue.get(ISMANDATEUSER));
+ isMailAddressVerified= Boolean.parseBoolean(keyValue.get(ISMAILVERIFIED));
+ isAdminRequest= Boolean.parseBoolean(keyValue.get(ISADMINREQUESTED));
+ isPVP2Generated= Boolean.parseBoolean(keyValue.get(ISPVPGENERATED));
+ lastLogin = keyValue.get(LASTLOGIN);
+ hjid = keyValue.get(PREFIX);
+ }
+ }
+
+ public Map<String, String> getKeyValuePairs() {
+ Map<String,String> result = new HashMap<String, String>();
+ result.put(BPK, bpk);
+ result.put(FAMILYNAME, familyname);
+ result.put(GIVENNAME, givenname);
+ result.put(INSTITUT, institut);
+ result.put(MAIL, mail);
+ result.put(PHONE, phone);
+ result.put(USERNAME, username);
+ result.put(PASSWORD, password);
+ result.put(PASSWORD_SALT, passwordSalt);
+ result.put(USERREQUESTTOCKEN, userRequestTokken);
+ result.put(ISADMIN, String.valueOf(isAdmin));
+ result.put(ISACTIVE, String.valueOf(isActive));
+ result.put(ISPASSWORDALLOWED, String.valueOf(isUsernamePasswordAllowed));
+ result.put(ISPVPGENERATED, String.valueOf(isPVP2Generated));
+ result.put(ISMAILVERIFIED, String.valueOf(isMailAddressVerified));
+ result.put(ISMANDATEUSER, String.valueOf(isMandateUser));
+ result.put(ISADMINREQUESTED, String.valueOf(isAdminRequest));
+ result.put(ISPVPGENERATED, String.valueOf(isPVP2Generated));
+ result.put(LASTLOGIN, lastLogin);
+
+ return result;
+ }
+
+ /**
+ * Gets the value of the bpk property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getBpk() {
+ return bpk;
+ }
+
+ /**
+ * Sets the value of the bpk property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBpk(String value) {
+ this.bpk = value;
+ }
+
+ /**
+ * Gets the value of the familyname property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFamilyname() {
+ return familyname;
+ }
+
+ /**
+ * Sets the value of the familyname property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFamilyname(String value) {
+ this.familyname = value;
+ }
+
+ /**
+ * Gets the value of the givenname property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getGivenname() {
+ return givenname;
+ }
+
+ /**
+ * Sets the value of the givenname property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setGivenname(String value) {
+ this.givenname = value;
+ }
+
+ /**
+ * Gets the value of the institut property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInstitut() {
+ return institut;
+ }
+
+ /**
+ * Sets the value of the institut property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInstitut(String value) {
+ this.institut = value;
+ }
+
+ /**
+ * Gets the value of the mail property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMail() {
+ return mail;
+ }
+
+ /**
+ * Sets the value of the mail property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMail(String value) {
+ this.mail = value;
+ }
+
+ /**
+ * Gets the value of the phone property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPhone() {
+ return phone;
+ }
+
+ /**
+ * Sets the value of the phone property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPhone(String value) {
+ this.phone = value;
+ }
+
+ /**
+ * Gets the value of the username property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * Sets the value of the username property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUsername(String value) {
+ this.username = value;
+ }
+
+ /**
+ * Gets the value of the password property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Sets the value of the password property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPassword(String value) {
+ this.password = value;
+ }
+
+ /**
+ * Gets the value of the passwordSalt property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPasswordSalt() {
+ return passwordSalt;
+ }
+
+ /**
+ * Sets the value of the passwordSalt property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPasswordSalt(String value) {
+ this.passwordSalt = value;
+ }
+
+ /**
+ * Gets the value of the userRequestTokken property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUserRequestTokken() {
+ return userRequestTokken;
+ }
+
+ /**
+ * Sets the value of the userRequestTokken property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUserRequestTokken(String value) {
+ this.userRequestTokken = value;
+ }
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsActive() {
+ return isActive;
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the isAdmin property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsAdmin() {
+ return isAdmin;
+ }
+
+ /**
+ * Sets the value of the isAdmin property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsAdmin(Boolean value) {
+ this.isAdmin = value;
+ }
+
+ /**
+ * Gets the value of the isUsernamePasswordAllowed property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsUsernamePasswordAllowed() {
+ return isUsernamePasswordAllowed;
+ }
+
+ /**
+ * Sets the value of the isUsernamePasswordAllowed property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsUsernamePasswordAllowed(Boolean value) {
+ this.isUsernamePasswordAllowed = value;
+ }
+
+ /**
+ * Gets the value of the isMandateUser property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsMandateUser() {
+ return isMandateUser;
+ }
+
+ /**
+ * Sets the value of the isMandateUser property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsMandateUser(Boolean value) {
+ this.isMandateUser = value;
+ }
+
+ /**
+ * Gets the value of the isMailAddressVerified property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsMailAddressVerified() {
+ return isMailAddressVerified;
+ }
+
+ /**
+ * Sets the value of the isMailAddressVerified property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsMailAddressVerified(Boolean value) {
+ this.isMailAddressVerified = value;
+ }
+
+ /**
+ * Gets the value of the isAdminRequest property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsAdminRequest() {
+ return isAdminRequest;
+ }
+
+ /**
+ * Sets the value of the isAdminRequest property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsAdminRequest(Boolean value) {
+ this.isAdminRequest = value;
+ }
+
+ /**
+ * Gets the value of the isPVP2Generated property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isIsPVP2Generated() {
+ return isPVP2Generated;
+ }
+
+ /**
+ * Sets the value of the isPVP2Generated property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsPVP2Generated(Boolean value) {
+ this.isPVP2Generated = value;
+ }
+
+ /**
+ * Gets the value of the lastLogin property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLastLogin() {
+ return lastLogin;
+ }
+
+ /**
+ * Sets the value of the lastLogin property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLastLogin(String value) {
+ this.lastLogin = value;
+ }
+
+ /**
+ * Gets the value of the onlyBusinessService property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public Boolean isOnlyBusinessService() {
+ return onlyBusinessService;
+ }
+
+ /**
+ * Sets the value of the onlyBusinessService property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOnlyBusinessService(Boolean value) {
+ this.onlyBusinessService = value;
+ }
+
+ /**
+ * Gets the value of the businessServiceType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getBusinessServiceType() {
+ return businessServiceType;
+ }
+
+ /**
+ * Sets the value of the businessServiceType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBusinessServiceType(String value) {
+ this.businessServiceType = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+ public String getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(String value) {
+ this.hjid = value;
+ }
+
+ /**
+ * @return the oaIDs
+ */
+ public List<String> getOnlineApplication() {
+ if (oaIDs == null)
+ return new ArrayList<String>();
+ else
+ return oaIDs;
+ }
+
+ /**
+ * @param oaIDs the oaIDs to set
+ */
+ public void setOaIDs(List<String> oaIDs) {
+ this.oaIDs = oaIDs;
+ }
+
+
+
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AbstractSimpleIdentificationType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AbstractSimpleIdentificationType.java
new file mode 100644
index 000000000..a21cf62e2
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AbstractSimpleIdentificationType.java
@@ -0,0 +1,161 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for AbstractSimpleIdentificationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AbstractSimpleIdentificationType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AbstractSimpleIdentificationType", propOrder = {
+ "value"
+})
+
+
+
+public class AbstractSimpleIdentificationType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof AbstractSimpleIdentificationType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final AbstractSimpleIdentificationType that = ((AbstractSimpleIdentificationType) object);
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AttributeProviderPlugin.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AttributeProviderPlugin.java
new file mode 100644
index 000000000..25b9ea1b1
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AttributeProviderPlugin.java
@@ -0,0 +1,254 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for AttributeProviderPlugin complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeProviderPlugin">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="url" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="attributes" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeProviderPlugin", propOrder = {
+ "name",
+ "url",
+ "attributes"
+})
+
+
+
+public class AttributeProviderPlugin
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected String name;
+ @XmlElement(required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String url;
+ @XmlElement(required = true)
+ protected String attributes;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the url property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * Sets the value of the url property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUrl(String value) {
+ this.url = value;
+ }
+
+ /**
+ * Gets the value of the attributes property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAttributes() {
+ return attributes;
+ }
+
+ /**
+ * Sets the value of the attributes property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAttributes(String value) {
+ this.attributes = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof AttributeProviderPlugin)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final AttributeProviderPlugin that = ((AttributeProviderPlugin) object);
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ {
+ String lhsUrl;
+ lhsUrl = this.getUrl();
+ String rhsUrl;
+ rhsUrl = that.getUrl();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "url", lhsUrl), LocatorUtils.property(thatLocator, "url", rhsUrl), lhsUrl, rhsUrl)) {
+ return false;
+ }
+ }
+ {
+ String lhsAttributes;
+ lhsAttributes = this.getAttributes();
+ String rhsAttributes;
+ rhsAttributes = that.getAttributes();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "attributes", lhsAttributes), LocatorUtils.property(thatLocator, "attributes", rhsAttributes), lhsAttributes, rhsAttributes)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ {
+ String theUrl;
+ theUrl = this.getUrl();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "url", theUrl), currentHashCode, theUrl);
+ }
+ {
+ String theAttributes;
+ theAttributes = this.getAttributes();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributes", theAttributes), currentHashCode, theAttributes);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentGeneral.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentGeneral.java
new file mode 100644
index 000000000..4e3b4a64f
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentGeneral.java
@@ -0,0 +1,80 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}AuthComponentType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+
+
+public class AuthComponentGeneral
+ extends AuthComponentType
+ implements Serializable, Equals, HashCode
+{
+
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof AuthComponentGeneral)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ if (!super.equals(thisLocator, thatLocator, object, strategy)) {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = super.hashCode(locator, strategy);
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentOA.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentOA.java
new file mode 100644
index 000000000..04efb0afe
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentOA.java
@@ -0,0 +1,735 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="BKUURLS">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}IdentificationNumber" minOccurs="0"/>
+ * &lt;element name="Templates" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TemplatesType" minOccurs="0"/>
+ * &lt;element name="TransformsInfo" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TransformsInfoType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Mandates" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Profiles" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="ProfileName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="testCredentials" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="credentialOID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="enableTestCredentials" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_STORK" minOccurs="0"/>
+ * &lt;element name="OA_SSO" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="UseSSO" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="AuthDataFrame" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="SingleLogOutURL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_SAML1" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_PVP2" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_OAUTH20" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}EncBPKInformation" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "bkuurls",
+ "identificationNumber",
+ "templates",
+ "transformsInfo",
+ "mandates",
+ "testCredentials",
+ "oastork",
+ "oasso",
+ "oasaml1",
+ "oapvp2",
+ "oaoauth20",
+ "encBPKInformation"
+})
+
+
+
+public class AuthComponentOA
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "BKUURLS", required = true)
+ protected BKUURLS bkuurls;
+ @XmlElement(name = "IdentificationNumber")
+ protected IdentificationNumber identificationNumber;
+ @XmlElement(name = "Templates")
+ protected TemplatesType templates;
+ @XmlElement(name = "TransformsInfo")
+ protected List<TransformsInfoType> transformsInfo;
+ @XmlElement(name = "Mandates")
+ protected Mandates mandates;
+ protected TestCredentials testCredentials;
+ @XmlElement(name = "OA_STORK")
+ protected OASTORK oastork;
+ @XmlElement(name = "OA_SSO")
+ protected OASSO oasso;
+ @XmlElement(name = "OA_SAML1")
+ protected OASAML1 oasaml1;
+ @XmlElement(name = "OA_PVP2")
+ protected OAPVP2 oapvp2;
+ @XmlElement(name = "OA_OAUTH20")
+ protected OAOAUTH20 oaoauth20;
+ @XmlElement(name = "EncBPKInformation")
+ protected EncBPKInformation encBPKInformation;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the bkuurls property.
+ *
+ * @return
+ * possible object is
+ * {@link BKUURLS }
+ *
+ */
+ @ManyToOne(targetEntity = BKUURLS.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public BKUURLS getBKUURLS() {
+ return bkuurls;
+ }
+
+ /**
+ * Sets the value of the bkuurls property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BKUURLS }
+ *
+ */
+ public void setBKUURLS(BKUURLS value) {
+ this.bkuurls = value;
+ }
+
+ /**
+ * Gets the value of the identificationNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link IdentificationNumber }
+ *
+ */
+ @ManyToOne(targetEntity = IdentificationNumber.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public IdentificationNumber getIdentificationNumber() {
+ return identificationNumber;
+ }
+
+ /**
+ * Sets the value of the identificationNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link IdentificationNumber }
+ *
+ */
+ public void setIdentificationNumber(IdentificationNumber value) {
+ this.identificationNumber = value;
+ }
+
+ /**
+ * Gets the value of the templates property.
+ *
+ * @return
+ * possible object is
+ * {@link TemplatesType }
+ *
+ */
+ @ManyToOne(targetEntity = TemplatesType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public TemplatesType getTemplates() {
+ return templates;
+ }
+
+ /**
+ * Sets the value of the templates property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TemplatesType }
+ *
+ */
+ public void setTemplates(TemplatesType value) {
+ this.templates = value;
+ }
+
+ /**
+ * Gets the value of the transformsInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the transformsInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTransformsInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TransformsInfoType }
+ *
+ *
+ */
+ @OneToMany(targetEntity = TransformsInfoType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<TransformsInfoType> getTransformsInfo() {
+ if (transformsInfo == null) {
+ transformsInfo = new ArrayList<TransformsInfoType>();
+ }
+ return this.transformsInfo;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setTransformsInfo(List<TransformsInfoType> transformsInfo) {
+ this.transformsInfo = transformsInfo;
+ }
+
+ /**
+ * Gets the value of the mandates property.
+ *
+ * @return
+ * possible object is
+ * {@link Mandates }
+ *
+ */
+ @ManyToOne(targetEntity = Mandates.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public Mandates getMandates() {
+ return mandates;
+ }
+
+ /**
+ * Sets the value of the mandates property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Mandates }
+ *
+ */
+ public void setMandates(Mandates value) {
+ this.mandates = value;
+ }
+
+ /**
+ * Gets the value of the testCredentials property.
+ *
+ * @return
+ * possible object is
+ * {@link TestCredentials }
+ *
+ */
+ @ManyToOne(targetEntity = TestCredentials.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public TestCredentials getTestCredentials() {
+ return testCredentials;
+ }
+
+ /**
+ * Sets the value of the testCredentials property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TestCredentials }
+ *
+ */
+ public void setTestCredentials(TestCredentials value) {
+ this.testCredentials = value;
+ }
+
+ /**
+ * Gets the value of the oastork property.
+ *
+ * @return
+ * possible object is
+ * {@link OASTORK }
+ *
+ */
+ @ManyToOne(targetEntity = OASTORK.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OASTORK getOASTORK() {
+ return oastork;
+ }
+
+ /**
+ * Sets the value of the oastork property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OASTORK }
+ *
+ */
+ public void setOASTORK(OASTORK value) {
+ this.oastork = value;
+ }
+
+ /**
+ * Gets the value of the oasso property.
+ *
+ * @return
+ * possible object is
+ * {@link OASSO }
+ *
+ */
+ @ManyToOne(targetEntity = OASSO.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OASSO getOASSO() {
+ return oasso;
+ }
+
+ /**
+ * Sets the value of the oasso property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OASSO }
+ *
+ */
+ public void setOASSO(OASSO value) {
+ this.oasso = value;
+ }
+
+ /**
+ * Gets the value of the oasaml1 property.
+ *
+ * @return
+ * possible object is
+ * {@link OASAML1 }
+ *
+ */
+ @ManyToOne(targetEntity = OASAML1 .class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OASAML1 getOASAML1() {
+ return oasaml1;
+ }
+
+ /**
+ * Sets the value of the oasaml1 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OASAML1 }
+ *
+ */
+ public void setOASAML1(OASAML1 value) {
+ this.oasaml1 = value;
+ }
+
+ /**
+ * Gets the value of the oapvp2 property.
+ *
+ * @return
+ * possible object is
+ * {@link OAPVP2 }
+ *
+ */
+ @ManyToOne(targetEntity = OAPVP2 .class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OAPVP2 getOAPVP2() {
+ return oapvp2;
+ }
+
+ /**
+ * Sets the value of the oapvp2 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OAPVP2 }
+ *
+ */
+ public void setOAPVP2(OAPVP2 value) {
+ this.oapvp2 = value;
+ }
+
+ /**
+ * Gets the value of the oaoauth20 property.
+ *
+ * @return
+ * possible object is
+ * {@link OAOAUTH20 }
+ *
+ */
+ @ManyToOne(targetEntity = OAOAUTH20 .class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OAOAUTH20 getOAOAUTH20() {
+ return oaoauth20;
+ }
+
+ /**
+ * Sets the value of the oaoauth20 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OAOAUTH20 }
+ *
+ */
+ public void setOAOAUTH20(OAOAUTH20 value) {
+ this.oaoauth20 = value;
+ }
+
+ /**
+ * Gets the value of the encBPKInformation property.
+ *
+ * @return
+ * possible object is
+ * {@link EncBPKInformation }
+ *
+ */
+ @ManyToOne(targetEntity = EncBPKInformation.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public EncBPKInformation getEncBPKInformation() {
+ return encBPKInformation;
+ }
+
+ /**
+ * Sets the value of the encBPKInformation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link EncBPKInformation }
+ *
+ */
+ public void setEncBPKInformation(EncBPKInformation value) {
+ this.encBPKInformation = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof AuthComponentOA)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final AuthComponentOA that = ((AuthComponentOA) object);
+ {
+ BKUURLS lhsBKUURLS;
+ lhsBKUURLS = this.getBKUURLS();
+ BKUURLS rhsBKUURLS;
+ rhsBKUURLS = that.getBKUURLS();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "bkuurls", lhsBKUURLS), LocatorUtils.property(thatLocator, "bkuurls", rhsBKUURLS), lhsBKUURLS, rhsBKUURLS)) {
+ return false;
+ }
+ }
+ {
+ IdentificationNumber lhsIdentificationNumber;
+ lhsIdentificationNumber = this.getIdentificationNumber();
+ IdentificationNumber rhsIdentificationNumber;
+ rhsIdentificationNumber = that.getIdentificationNumber();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "identificationNumber", lhsIdentificationNumber), LocatorUtils.property(thatLocator, "identificationNumber", rhsIdentificationNumber), lhsIdentificationNumber, rhsIdentificationNumber)) {
+ return false;
+ }
+ }
+ {
+ TemplatesType lhsTemplates;
+ lhsTemplates = this.getTemplates();
+ TemplatesType rhsTemplates;
+ rhsTemplates = that.getTemplates();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "templates", lhsTemplates), LocatorUtils.property(thatLocator, "templates", rhsTemplates), lhsTemplates, rhsTemplates)) {
+ return false;
+ }
+ }
+ {
+ List<TransformsInfoType> lhsTransformsInfo;
+ lhsTransformsInfo = (((this.transformsInfo!= null)&&(!this.transformsInfo.isEmpty()))?this.getTransformsInfo():null);
+ List<TransformsInfoType> rhsTransformsInfo;
+ rhsTransformsInfo = (((that.transformsInfo!= null)&&(!that.transformsInfo.isEmpty()))?that.getTransformsInfo():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "transformsInfo", lhsTransformsInfo), LocatorUtils.property(thatLocator, "transformsInfo", rhsTransformsInfo), lhsTransformsInfo, rhsTransformsInfo)) {
+ return false;
+ }
+ }
+ {
+ Mandates lhsMandates;
+ lhsMandates = this.getMandates();
+ Mandates rhsMandates;
+ rhsMandates = that.getMandates();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mandates", lhsMandates), LocatorUtils.property(thatLocator, "mandates", rhsMandates), lhsMandates, rhsMandates)) {
+ return false;
+ }
+ }
+ {
+ TestCredentials lhsTestCredentials;
+ lhsTestCredentials = this.getTestCredentials();
+ TestCredentials rhsTestCredentials;
+ rhsTestCredentials = that.getTestCredentials();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "testCredentials", lhsTestCredentials), LocatorUtils.property(thatLocator, "testCredentials", rhsTestCredentials), lhsTestCredentials, rhsTestCredentials)) {
+ return false;
+ }
+ }
+ {
+ OASTORK lhsOASTORK;
+ lhsOASTORK = this.getOASTORK();
+ OASTORK rhsOASTORK;
+ rhsOASTORK = that.getOASTORK();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oastork", lhsOASTORK), LocatorUtils.property(thatLocator, "oastork", rhsOASTORK), lhsOASTORK, rhsOASTORK)) {
+ return false;
+ }
+ }
+ {
+ OASSO lhsOASSO;
+ lhsOASSO = this.getOASSO();
+ OASSO rhsOASSO;
+ rhsOASSO = that.getOASSO();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oasso", lhsOASSO), LocatorUtils.property(thatLocator, "oasso", rhsOASSO), lhsOASSO, rhsOASSO)) {
+ return false;
+ }
+ }
+ {
+ OASAML1 lhsOASAML1;
+ lhsOASAML1 = this.getOASAML1();
+ OASAML1 rhsOASAML1;
+ rhsOASAML1 = that.getOASAML1();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oasaml1", lhsOASAML1), LocatorUtils.property(thatLocator, "oasaml1", rhsOASAML1), lhsOASAML1, rhsOASAML1)) {
+ return false;
+ }
+ }
+ {
+ OAPVP2 lhsOAPVP2;
+ lhsOAPVP2 = this.getOAPVP2();
+ OAPVP2 rhsOAPVP2;
+ rhsOAPVP2 = that.getOAPVP2();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oapvp2", lhsOAPVP2), LocatorUtils.property(thatLocator, "oapvp2", rhsOAPVP2), lhsOAPVP2, rhsOAPVP2)) {
+ return false;
+ }
+ }
+ {
+ OAOAUTH20 lhsOAOAUTH20;
+ lhsOAOAUTH20 = this.getOAOAUTH20();
+ OAOAUTH20 rhsOAOAUTH20;
+ rhsOAOAUTH20 = that.getOAOAUTH20();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oaoauth20", lhsOAOAUTH20), LocatorUtils.property(thatLocator, "oaoauth20", rhsOAOAUTH20), lhsOAOAUTH20, rhsOAOAUTH20)) {
+ return false;
+ }
+ }
+ {
+ EncBPKInformation lhsEncBPKInformation;
+ lhsEncBPKInformation = this.getEncBPKInformation();
+ EncBPKInformation rhsEncBPKInformation;
+ rhsEncBPKInformation = that.getEncBPKInformation();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "encBPKInformation", lhsEncBPKInformation), LocatorUtils.property(thatLocator, "encBPKInformation", rhsEncBPKInformation), lhsEncBPKInformation, rhsEncBPKInformation)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ BKUURLS theBKUURLS;
+ theBKUURLS = this.getBKUURLS();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "bkuurls", theBKUURLS), currentHashCode, theBKUURLS);
+ }
+ {
+ IdentificationNumber theIdentificationNumber;
+ theIdentificationNumber = this.getIdentificationNumber();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "identificationNumber", theIdentificationNumber), currentHashCode, theIdentificationNumber);
+ }
+ {
+ TemplatesType theTemplates;
+ theTemplates = this.getTemplates();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "templates", theTemplates), currentHashCode, theTemplates);
+ }
+ {
+ List<TransformsInfoType> theTransformsInfo;
+ theTransformsInfo = (((this.transformsInfo!= null)&&(!this.transformsInfo.isEmpty()))?this.getTransformsInfo():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "transformsInfo", theTransformsInfo), currentHashCode, theTransformsInfo);
+ }
+ {
+ Mandates theMandates;
+ theMandates = this.getMandates();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mandates", theMandates), currentHashCode, theMandates);
+ }
+ {
+ TestCredentials theTestCredentials;
+ theTestCredentials = this.getTestCredentials();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "testCredentials", theTestCredentials), currentHashCode, theTestCredentials);
+ }
+ {
+ OASTORK theOASTORK;
+ theOASTORK = this.getOASTORK();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oastork", theOASTORK), currentHashCode, theOASTORK);
+ }
+ {
+ OASSO theOASSO;
+ theOASSO = this.getOASSO();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oasso", theOASSO), currentHashCode, theOASSO);
+ }
+ {
+ OASAML1 theOASAML1;
+ theOASAML1 = this.getOASAML1();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oasaml1", theOASAML1), currentHashCode, theOASAML1);
+ }
+ {
+ OAPVP2 theOAPVP2;
+ theOAPVP2 = this.getOAPVP2();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oapvp2", theOAPVP2), currentHashCode, theOAPVP2);
+ }
+ {
+ OAOAUTH20 theOAOAUTH20;
+ theOAOAUTH20 = this.getOAOAUTH20();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oaoauth20", theOAOAUTH20), currentHashCode, theOAOAUTH20);
+ }
+ {
+ EncBPKInformation theEncBPKInformation;
+ theEncBPKInformation = this.getEncBPKInformation();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "encBPKInformation", theEncBPKInformation), currentHashCode, theEncBPKInformation);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentType.java
new file mode 100644
index 000000000..d02c65c42
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/AuthComponentType.java
@@ -0,0 +1,650 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for AuthComponentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AuthComponentType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}GeneralConfiguration"/>
+ * &lt;element name="Protocols">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SAML1" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SourceID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="PVP2" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="PublicURLPrefix" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="IssuerName" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="Organization">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="DisplayName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="URL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Contact" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="OAuth" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="LegacyAllowed">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ProtocolName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="SSO">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="target" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}IdentificationNumber"/>
+ * &lt;/choice>
+ * &lt;attribute name="PublicURL" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="SpecialText" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="SecurityLayer">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="TransformsInfo" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TransformsInfoType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="MOA-SP">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType" minOccurs="0"/>
+ * &lt;element name="VerifyIdentityLink">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="VerifyAuthBlock">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;element name="VerifyTransformsInfoProfileID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="IdentityLinkSigners" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="X509SubjectName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="ForeignIdentities" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}STORK" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="OnlineMandates" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthComponentType", propOrder = {
+ "generalConfiguration",
+ "protocols",
+ "sso",
+ "securityLayer",
+ "moasp",
+ "identityLinkSigners",
+ "foreignIdentities",
+ "onlineMandates"
+})
+@XmlSeeAlso({
+ AuthComponentGeneral.class
+})
+
+
+
+public class AuthComponentType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "GeneralConfiguration", required = true)
+ protected GeneralConfiguration generalConfiguration;
+ @XmlElement(name = "Protocols", required = true)
+ protected Protocols protocols;
+ @XmlElement(name = "SSO", required = true)
+ protected SSO sso;
+ @XmlElement(name = "SecurityLayer", required = true)
+ protected SecurityLayer securityLayer;
+ @XmlElement(name = "MOA-SP", required = true)
+ protected MOASP moasp;
+ @XmlElement(name = "IdentityLinkSigners")
+ protected IdentityLinkSigners identityLinkSigners;
+ @XmlElement(name = "ForeignIdentities")
+ protected ForeignIdentities foreignIdentities;
+ @XmlElement(name = "OnlineMandates")
+ protected OnlineMandates onlineMandates;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the generalConfiguration property.
+ *
+ * @return
+ * possible object is
+ * {@link GeneralConfiguration }
+ *
+ */
+ @ManyToOne(targetEntity = GeneralConfiguration.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public GeneralConfiguration getGeneralConfiguration() {
+ return generalConfiguration;
+ }
+
+ /**
+ * Sets the value of the generalConfiguration property.
+ *
+ * @param value
+ * allowed object is
+ * {@link GeneralConfiguration }
+ *
+ */
+ public void setGeneralConfiguration(GeneralConfiguration value) {
+ this.generalConfiguration = value;
+ }
+
+ /**
+ * Gets the value of the protocols property.
+ *
+ * @return
+ * possible object is
+ * {@link Protocols }
+ *
+ */
+ @ManyToOne(targetEntity = Protocols.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public Protocols getProtocols() {
+ return protocols;
+ }
+
+ /**
+ * Sets the value of the protocols property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Protocols }
+ *
+ */
+ public void setProtocols(Protocols value) {
+ this.protocols = value;
+ }
+
+ /**
+ * Gets the value of the sso property.
+ *
+ * @return
+ * possible object is
+ * {@link SSO }
+ *
+ */
+ @ManyToOne(targetEntity = SSO.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SSO getSSO() {
+ return sso;
+ }
+
+ /**
+ * Sets the value of the sso property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SSO }
+ *
+ */
+ public void setSSO(SSO value) {
+ this.sso = value;
+ }
+
+ /**
+ * Gets the value of the securityLayer property.
+ *
+ * @return
+ * possible object is
+ * {@link SecurityLayer }
+ *
+ */
+ @ManyToOne(targetEntity = SecurityLayer.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SecurityLayer getSecurityLayer() {
+ return securityLayer;
+ }
+
+ /**
+ * Sets the value of the securityLayer property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SecurityLayer }
+ *
+ */
+ public void setSecurityLayer(SecurityLayer value) {
+ this.securityLayer = value;
+ }
+
+ /**
+ * Gets the value of the moasp property.
+ *
+ * @return
+ * possible object is
+ * {@link MOASP }
+ *
+ */
+ @ManyToOne(targetEntity = MOASP.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public MOASP getMOASP() {
+ return moasp;
+ }
+
+ /**
+ * Sets the value of the moasp property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MOASP }
+ *
+ */
+ public void setMOASP(MOASP value) {
+ this.moasp = value;
+ }
+
+ /**
+ * Gets the value of the identityLinkSigners property.
+ *
+ * @return
+ * possible object is
+ * {@link IdentityLinkSigners }
+ *
+ */
+ @ManyToOne(targetEntity = IdentityLinkSigners.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public IdentityLinkSigners getIdentityLinkSigners() {
+ return identityLinkSigners;
+ }
+
+ /**
+ * Sets the value of the identityLinkSigners property.
+ *
+ * @param value
+ * allowed object is
+ * {@link IdentityLinkSigners }
+ *
+ */
+ public void setIdentityLinkSigners(IdentityLinkSigners value) {
+ this.identityLinkSigners = value;
+ }
+
+ /**
+ * Gets the value of the foreignIdentities property.
+ *
+ * @return
+ * possible object is
+ * {@link ForeignIdentities }
+ *
+ */
+ @ManyToOne(targetEntity = ForeignIdentities.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ForeignIdentities getForeignIdentities() {
+ return foreignIdentities;
+ }
+
+ /**
+ * Sets the value of the foreignIdentities property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ForeignIdentities }
+ *
+ */
+ public void setForeignIdentities(ForeignIdentities value) {
+ this.foreignIdentities = value;
+ }
+
+ /**
+ * Gets the value of the onlineMandates property.
+ *
+ * @return
+ * possible object is
+ * {@link OnlineMandates }
+ *
+ */
+ @ManyToOne(targetEntity = OnlineMandates.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OnlineMandates getOnlineMandates() {
+ return onlineMandates;
+ }
+
+ /**
+ * Sets the value of the onlineMandates property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OnlineMandates }
+ *
+ */
+ public void setOnlineMandates(OnlineMandates value) {
+ this.onlineMandates = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof AuthComponentType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final AuthComponentType that = ((AuthComponentType) object);
+ {
+ GeneralConfiguration lhsGeneralConfiguration;
+ lhsGeneralConfiguration = this.getGeneralConfiguration();
+ GeneralConfiguration rhsGeneralConfiguration;
+ rhsGeneralConfiguration = that.getGeneralConfiguration();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "generalConfiguration", lhsGeneralConfiguration), LocatorUtils.property(thatLocator, "generalConfiguration", rhsGeneralConfiguration), lhsGeneralConfiguration, rhsGeneralConfiguration)) {
+ return false;
+ }
+ }
+ {
+ Protocols lhsProtocols;
+ lhsProtocols = this.getProtocols();
+ Protocols rhsProtocols;
+ rhsProtocols = that.getProtocols();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "protocols", lhsProtocols), LocatorUtils.property(thatLocator, "protocols", rhsProtocols), lhsProtocols, rhsProtocols)) {
+ return false;
+ }
+ }
+ {
+ SSO lhsSSO;
+ lhsSSO = this.getSSO();
+ SSO rhsSSO;
+ rhsSSO = that.getSSO();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "sso", lhsSSO), LocatorUtils.property(thatLocator, "sso", rhsSSO), lhsSSO, rhsSSO)) {
+ return false;
+ }
+ }
+ {
+ SecurityLayer lhsSecurityLayer;
+ lhsSecurityLayer = this.getSecurityLayer();
+ SecurityLayer rhsSecurityLayer;
+ rhsSecurityLayer = that.getSecurityLayer();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "securityLayer", lhsSecurityLayer), LocatorUtils.property(thatLocator, "securityLayer", rhsSecurityLayer), lhsSecurityLayer, rhsSecurityLayer)) {
+ return false;
+ }
+ }
+ {
+ MOASP lhsMOASP;
+ lhsMOASP = this.getMOASP();
+ MOASP rhsMOASP;
+ rhsMOASP = that.getMOASP();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "moasp", lhsMOASP), LocatorUtils.property(thatLocator, "moasp", rhsMOASP), lhsMOASP, rhsMOASP)) {
+ return false;
+ }
+ }
+ {
+ IdentityLinkSigners lhsIdentityLinkSigners;
+ lhsIdentityLinkSigners = this.getIdentityLinkSigners();
+ IdentityLinkSigners rhsIdentityLinkSigners;
+ rhsIdentityLinkSigners = that.getIdentityLinkSigners();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "identityLinkSigners", lhsIdentityLinkSigners), LocatorUtils.property(thatLocator, "identityLinkSigners", rhsIdentityLinkSigners), lhsIdentityLinkSigners, rhsIdentityLinkSigners)) {
+ return false;
+ }
+ }
+ {
+ ForeignIdentities lhsForeignIdentities;
+ lhsForeignIdentities = this.getForeignIdentities();
+ ForeignIdentities rhsForeignIdentities;
+ rhsForeignIdentities = that.getForeignIdentities();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "foreignIdentities", lhsForeignIdentities), LocatorUtils.property(thatLocator, "foreignIdentities", rhsForeignIdentities), lhsForeignIdentities, rhsForeignIdentities)) {
+ return false;
+ }
+ }
+ {
+ OnlineMandates lhsOnlineMandates;
+ lhsOnlineMandates = this.getOnlineMandates();
+ OnlineMandates rhsOnlineMandates;
+ rhsOnlineMandates = that.getOnlineMandates();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlineMandates", lhsOnlineMandates), LocatorUtils.property(thatLocator, "onlineMandates", rhsOnlineMandates), lhsOnlineMandates, rhsOnlineMandates)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ GeneralConfiguration theGeneralConfiguration;
+ theGeneralConfiguration = this.getGeneralConfiguration();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "generalConfiguration", theGeneralConfiguration), currentHashCode, theGeneralConfiguration);
+ }
+ {
+ Protocols theProtocols;
+ theProtocols = this.getProtocols();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "protocols", theProtocols), currentHashCode, theProtocols);
+ }
+ {
+ SSO theSSO;
+ theSSO = this.getSSO();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "sso", theSSO), currentHashCode, theSSO);
+ }
+ {
+ SecurityLayer theSecurityLayer;
+ theSecurityLayer = this.getSecurityLayer();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "securityLayer", theSecurityLayer), currentHashCode, theSecurityLayer);
+ }
+ {
+ MOASP theMOASP;
+ theMOASP = this.getMOASP();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "moasp", theMOASP), currentHashCode, theMOASP);
+ }
+ {
+ IdentityLinkSigners theIdentityLinkSigners;
+ theIdentityLinkSigners = this.getIdentityLinkSigners();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "identityLinkSigners", theIdentityLinkSigners), currentHashCode, theIdentityLinkSigners);
+ }
+ {
+ ForeignIdentities theForeignIdentities;
+ theForeignIdentities = this.getForeignIdentities();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "foreignIdentities", theForeignIdentities), currentHashCode, theForeignIdentities);
+ }
+ {
+ OnlineMandates theOnlineMandates;
+ theOnlineMandates = this.getOnlineMandates();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlineMandates", theOnlineMandates), currentHashCode, theOnlineMandates);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionCustomizationType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionCustomizationType.java
new file mode 100644
index 000000000..72dadbcf8
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionCustomizationType.java
@@ -0,0 +1,743 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for BKUSelectionCustomizationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="BKUSelectionCustomizationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="FontType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="BackGroundColor" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="FrontColor" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="HeaderBackGroundColor" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="HeaderFrontColor" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="HeaderText" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="ButtonBackGroundColor" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="ButtonBackGroundColorFocus" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="ButtonFontColor" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="AppletRedirectTarget" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="AppletHeight" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="AppletWidth" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="MandateLoginButton" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="OnlyMandateLoginAllowed" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BKUSelectionCustomizationType", propOrder = {
+ "fontType",
+ "backGroundColor",
+ "frontColor",
+ "headerBackGroundColor",
+ "headerFrontColor",
+ "headerText",
+ "buttonBackGroundColor",
+ "buttonBackGroundColorFocus",
+ "buttonFontColor",
+ "appletRedirectTarget",
+ "appletHeight",
+ "appletWidth",
+ "mandateLoginButton",
+ "onlyMandateLoginAllowed"
+})
+
+
+
+public class BKUSelectionCustomizationType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "FontType")
+ protected String fontType;
+ @XmlElement(name = "BackGroundColor")
+ protected String backGroundColor;
+ @XmlElement(name = "FrontColor")
+ protected String frontColor;
+ @XmlElement(name = "HeaderBackGroundColor")
+ protected String headerBackGroundColor;
+ @XmlElement(name = "HeaderFrontColor")
+ protected String headerFrontColor;
+ @XmlElement(name = "HeaderText")
+ protected String headerText;
+ @XmlElement(name = "ButtonBackGroundColor")
+ protected String buttonBackGroundColor;
+ @XmlElement(name = "ButtonBackGroundColorFocus")
+ protected String buttonBackGroundColorFocus;
+ @XmlElement(name = "ButtonFontColor")
+ protected String buttonFontColor;
+ @XmlElement(name = "AppletRedirectTarget")
+ protected String appletRedirectTarget;
+ @XmlElement(name = "AppletHeight")
+ protected String appletHeight;
+ @XmlElement(name = "AppletWidth")
+ protected String appletWidth;
+ @XmlElement(name = "MandateLoginButton", type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean mandateLoginButton;
+ @XmlElement(name = "OnlyMandateLoginAllowed", type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean onlyMandateLoginAllowed;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the fontType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getFontType() {
+ return fontType;
+ }
+
+ /**
+ * Sets the value of the fontType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFontType(String value) {
+ this.fontType = value;
+ }
+
+ /**
+ * Gets the value of the backGroundColor property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getBackGroundColor() {
+ return backGroundColor;
+ }
+
+ /**
+ * Sets the value of the backGroundColor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBackGroundColor(String value) {
+ this.backGroundColor = value;
+ }
+
+ /**
+ * Gets the value of the frontColor property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getFrontColor() {
+ return frontColor;
+ }
+
+ /**
+ * Sets the value of the frontColor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFrontColor(String value) {
+ this.frontColor = value;
+ }
+
+ /**
+ * Gets the value of the headerBackGroundColor property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getHeaderBackGroundColor() {
+ return headerBackGroundColor;
+ }
+
+ /**
+ * Sets the value of the headerBackGroundColor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHeaderBackGroundColor(String value) {
+ this.headerBackGroundColor = value;
+ }
+
+ /**
+ * Gets the value of the headerFrontColor property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getHeaderFrontColor() {
+ return headerFrontColor;
+ }
+
+ /**
+ * Sets the value of the headerFrontColor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHeaderFrontColor(String value) {
+ this.headerFrontColor = value;
+ }
+
+ /**
+ * Gets the value of the headerText property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getHeaderText() {
+ return headerText;
+ }
+
+ /**
+ * Sets the value of the headerText property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHeaderText(String value) {
+ this.headerText = value;
+ }
+
+ /**
+ * Gets the value of the buttonBackGroundColor property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getButtonBackGroundColor() {
+ return buttonBackGroundColor;
+ }
+
+ /**
+ * Sets the value of the buttonBackGroundColor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setButtonBackGroundColor(String value) {
+ this.buttonBackGroundColor = value;
+ }
+
+ /**
+ * Gets the value of the buttonBackGroundColorFocus property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getButtonBackGroundColorFocus() {
+ return buttonBackGroundColorFocus;
+ }
+
+ /**
+ * Sets the value of the buttonBackGroundColorFocus property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setButtonBackGroundColorFocus(String value) {
+ this.buttonBackGroundColorFocus = value;
+ }
+
+ /**
+ * Gets the value of the buttonFontColor property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getButtonFontColor() {
+ return buttonFontColor;
+ }
+
+ /**
+ * Sets the value of the buttonFontColor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setButtonFontColor(String value) {
+ this.buttonFontColor = value;
+ }
+
+ /**
+ * Gets the value of the appletRedirectTarget property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAppletRedirectTarget() {
+ return appletRedirectTarget;
+ }
+
+ /**
+ * Sets the value of the appletRedirectTarget property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAppletRedirectTarget(String value) {
+ this.appletRedirectTarget = value;
+ }
+
+ /**
+ * Gets the value of the appletHeight property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAppletHeight() {
+ return appletHeight;
+ }
+
+ /**
+ * Sets the value of the appletHeight property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAppletHeight(String value) {
+ this.appletHeight = value;
+ }
+
+ /**
+ * Gets the value of the appletWidth property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAppletWidth() {
+ return appletWidth;
+ }
+
+ /**
+ * Sets the value of the appletWidth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAppletWidth(String value) {
+ this.appletWidth = value;
+ }
+
+ /**
+ * Gets the value of the mandateLoginButton property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isMandateLoginButton() {
+ return mandateLoginButton;
+ }
+
+ /**
+ * Sets the value of the mandateLoginButton property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMandateLoginButton(Boolean value) {
+ this.mandateLoginButton = value;
+ }
+
+ /**
+ * Gets the value of the onlyMandateLoginAllowed property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isOnlyMandateLoginAllowed() {
+ return onlyMandateLoginAllowed;
+ }
+
+ /**
+ * Sets the value of the onlyMandateLoginAllowed property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOnlyMandateLoginAllowed(Boolean value) {
+ this.onlyMandateLoginAllowed = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof BKUSelectionCustomizationType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final BKUSelectionCustomizationType that = ((BKUSelectionCustomizationType) object);
+ {
+ String lhsFontType;
+ lhsFontType = this.getFontType();
+ String rhsFontType;
+ rhsFontType = that.getFontType();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "fontType", lhsFontType), LocatorUtils.property(thatLocator, "fontType", rhsFontType), lhsFontType, rhsFontType)) {
+ return false;
+ }
+ }
+ {
+ String lhsBackGroundColor;
+ lhsBackGroundColor = this.getBackGroundColor();
+ String rhsBackGroundColor;
+ rhsBackGroundColor = that.getBackGroundColor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "backGroundColor", lhsBackGroundColor), LocatorUtils.property(thatLocator, "backGroundColor", rhsBackGroundColor), lhsBackGroundColor, rhsBackGroundColor)) {
+ return false;
+ }
+ }
+ {
+ String lhsFrontColor;
+ lhsFrontColor = this.getFrontColor();
+ String rhsFrontColor;
+ rhsFrontColor = that.getFrontColor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "frontColor", lhsFrontColor), LocatorUtils.property(thatLocator, "frontColor", rhsFrontColor), lhsFrontColor, rhsFrontColor)) {
+ return false;
+ }
+ }
+ {
+ String lhsHeaderBackGroundColor;
+ lhsHeaderBackGroundColor = this.getHeaderBackGroundColor();
+ String rhsHeaderBackGroundColor;
+ rhsHeaderBackGroundColor = that.getHeaderBackGroundColor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "headerBackGroundColor", lhsHeaderBackGroundColor), LocatorUtils.property(thatLocator, "headerBackGroundColor", rhsHeaderBackGroundColor), lhsHeaderBackGroundColor, rhsHeaderBackGroundColor)) {
+ return false;
+ }
+ }
+ {
+ String lhsHeaderFrontColor;
+ lhsHeaderFrontColor = this.getHeaderFrontColor();
+ String rhsHeaderFrontColor;
+ rhsHeaderFrontColor = that.getHeaderFrontColor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "headerFrontColor", lhsHeaderFrontColor), LocatorUtils.property(thatLocator, "headerFrontColor", rhsHeaderFrontColor), lhsHeaderFrontColor, rhsHeaderFrontColor)) {
+ return false;
+ }
+ }
+ {
+ String lhsHeaderText;
+ lhsHeaderText = this.getHeaderText();
+ String rhsHeaderText;
+ rhsHeaderText = that.getHeaderText();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "headerText", lhsHeaderText), LocatorUtils.property(thatLocator, "headerText", rhsHeaderText), lhsHeaderText, rhsHeaderText)) {
+ return false;
+ }
+ }
+ {
+ String lhsButtonBackGroundColor;
+ lhsButtonBackGroundColor = this.getButtonBackGroundColor();
+ String rhsButtonBackGroundColor;
+ rhsButtonBackGroundColor = that.getButtonBackGroundColor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "buttonBackGroundColor", lhsButtonBackGroundColor), LocatorUtils.property(thatLocator, "buttonBackGroundColor", rhsButtonBackGroundColor), lhsButtonBackGroundColor, rhsButtonBackGroundColor)) {
+ return false;
+ }
+ }
+ {
+ String lhsButtonBackGroundColorFocus;
+ lhsButtonBackGroundColorFocus = this.getButtonBackGroundColorFocus();
+ String rhsButtonBackGroundColorFocus;
+ rhsButtonBackGroundColorFocus = that.getButtonBackGroundColorFocus();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "buttonBackGroundColorFocus", lhsButtonBackGroundColorFocus), LocatorUtils.property(thatLocator, "buttonBackGroundColorFocus", rhsButtonBackGroundColorFocus), lhsButtonBackGroundColorFocus, rhsButtonBackGroundColorFocus)) {
+ return false;
+ }
+ }
+ {
+ String lhsButtonFontColor;
+ lhsButtonFontColor = this.getButtonFontColor();
+ String rhsButtonFontColor;
+ rhsButtonFontColor = that.getButtonFontColor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "buttonFontColor", lhsButtonFontColor), LocatorUtils.property(thatLocator, "buttonFontColor", rhsButtonFontColor), lhsButtonFontColor, rhsButtonFontColor)) {
+ return false;
+ }
+ }
+ {
+ String lhsAppletRedirectTarget;
+ lhsAppletRedirectTarget = this.getAppletRedirectTarget();
+ String rhsAppletRedirectTarget;
+ rhsAppletRedirectTarget = that.getAppletRedirectTarget();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "appletRedirectTarget", lhsAppletRedirectTarget), LocatorUtils.property(thatLocator, "appletRedirectTarget", rhsAppletRedirectTarget), lhsAppletRedirectTarget, rhsAppletRedirectTarget)) {
+ return false;
+ }
+ }
+ {
+ String lhsAppletHeight;
+ lhsAppletHeight = this.getAppletHeight();
+ String rhsAppletHeight;
+ rhsAppletHeight = that.getAppletHeight();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "appletHeight", lhsAppletHeight), LocatorUtils.property(thatLocator, "appletHeight", rhsAppletHeight), lhsAppletHeight, rhsAppletHeight)) {
+ return false;
+ }
+ }
+ {
+ String lhsAppletWidth;
+ lhsAppletWidth = this.getAppletWidth();
+ String rhsAppletWidth;
+ rhsAppletWidth = that.getAppletWidth();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "appletWidth", lhsAppletWidth), LocatorUtils.property(thatLocator, "appletWidth", rhsAppletWidth), lhsAppletWidth, rhsAppletWidth)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsMandateLoginButton;
+ lhsMandateLoginButton = this.isMandateLoginButton();
+ Boolean rhsMandateLoginButton;
+ rhsMandateLoginButton = that.isMandateLoginButton();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mandateLoginButton", lhsMandateLoginButton), LocatorUtils.property(thatLocator, "mandateLoginButton", rhsMandateLoginButton), lhsMandateLoginButton, rhsMandateLoginButton)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsOnlyMandateLoginAllowed;
+ lhsOnlyMandateLoginAllowed = this.isOnlyMandateLoginAllowed();
+ Boolean rhsOnlyMandateLoginAllowed;
+ rhsOnlyMandateLoginAllowed = that.isOnlyMandateLoginAllowed();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlyMandateLoginAllowed", lhsOnlyMandateLoginAllowed), LocatorUtils.property(thatLocator, "onlyMandateLoginAllowed", rhsOnlyMandateLoginAllowed), lhsOnlyMandateLoginAllowed, rhsOnlyMandateLoginAllowed)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theFontType;
+ theFontType = this.getFontType();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "fontType", theFontType), currentHashCode, theFontType);
+ }
+ {
+ String theBackGroundColor;
+ theBackGroundColor = this.getBackGroundColor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "backGroundColor", theBackGroundColor), currentHashCode, theBackGroundColor);
+ }
+ {
+ String theFrontColor;
+ theFrontColor = this.getFrontColor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "frontColor", theFrontColor), currentHashCode, theFrontColor);
+ }
+ {
+ String theHeaderBackGroundColor;
+ theHeaderBackGroundColor = this.getHeaderBackGroundColor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "headerBackGroundColor", theHeaderBackGroundColor), currentHashCode, theHeaderBackGroundColor);
+ }
+ {
+ String theHeaderFrontColor;
+ theHeaderFrontColor = this.getHeaderFrontColor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "headerFrontColor", theHeaderFrontColor), currentHashCode, theHeaderFrontColor);
+ }
+ {
+ String theHeaderText;
+ theHeaderText = this.getHeaderText();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "headerText", theHeaderText), currentHashCode, theHeaderText);
+ }
+ {
+ String theButtonBackGroundColor;
+ theButtonBackGroundColor = this.getButtonBackGroundColor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "buttonBackGroundColor", theButtonBackGroundColor), currentHashCode, theButtonBackGroundColor);
+ }
+ {
+ String theButtonBackGroundColorFocus;
+ theButtonBackGroundColorFocus = this.getButtonBackGroundColorFocus();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "buttonBackGroundColorFocus", theButtonBackGroundColorFocus), currentHashCode, theButtonBackGroundColorFocus);
+ }
+ {
+ String theButtonFontColor;
+ theButtonFontColor = this.getButtonFontColor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "buttonFontColor", theButtonFontColor), currentHashCode, theButtonFontColor);
+ }
+ {
+ String theAppletRedirectTarget;
+ theAppletRedirectTarget = this.getAppletRedirectTarget();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "appletRedirectTarget", theAppletRedirectTarget), currentHashCode, theAppletRedirectTarget);
+ }
+ {
+ String theAppletHeight;
+ theAppletHeight = this.getAppletHeight();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "appletHeight", theAppletHeight), currentHashCode, theAppletHeight);
+ }
+ {
+ String theAppletWidth;
+ theAppletWidth = this.getAppletWidth();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "appletWidth", theAppletWidth), currentHashCode, theAppletWidth);
+ }
+ {
+ Boolean theMandateLoginButton;
+ theMandateLoginButton = this.isMandateLoginButton();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mandateLoginButton", theMandateLoginButton), currentHashCode, theMandateLoginButton);
+ }
+ {
+ Boolean theOnlyMandateLoginAllowed;
+ theOnlyMandateLoginAllowed = this.isOnlyMandateLoginAllowed();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlyMandateLoginAllowed", theOnlyMandateLoginAllowed), currentHashCode, theOnlyMandateLoginAllowed);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionType.java
new file mode 100644
index 000000000..4c93cc784
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUSelectionType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BKUSelectionType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="BKUSelectionType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="HTMLComplete"/>
+ * &lt;enumeration value="HTMLSelect"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "BKUSelectionType")
+@XmlEnum
+public enum BKUSelectionType {
+
+ @XmlEnumValue("HTMLComplete")
+ HTML_COMPLETE("HTMLComplete"),
+ @XmlEnumValue("HTMLSelect")
+ HTML_SELECT("HTMLSelect");
+ private final String value;
+
+ BKUSelectionType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static BKUSelectionType fromValue(String v) {
+ for (BKUSelectionType c: BKUSelectionType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUURLS.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUURLS.java
new file mode 100644
index 000000000..e995c3404
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BKUURLS.java
@@ -0,0 +1,256 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "onlineBKU",
+ "handyBKU",
+ "localBKU"
+})
+
+
+
+public class BKUURLS
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "OnlineBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String onlineBKU;
+ @XmlElement(name = "HandyBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String handyBKU;
+ @XmlElement(name = "LocalBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String localBKU;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the onlineBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOnlineBKU() {
+ return onlineBKU;
+ }
+
+ /**
+ * Sets the value of the onlineBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOnlineBKU(String value) {
+ this.onlineBKU = value;
+ }
+
+ /**
+ * Gets the value of the handyBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getHandyBKU() {
+ return handyBKU;
+ }
+
+ /**
+ * Sets the value of the handyBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHandyBKU(String value) {
+ this.handyBKU = value;
+ }
+
+ /**
+ * Gets the value of the localBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getLocalBKU() {
+ return localBKU;
+ }
+
+ /**
+ * Sets the value of the localBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLocalBKU(String value) {
+ this.localBKU = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof BKUURLS)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final BKUURLS that = ((BKUURLS) object);
+ {
+ String lhsOnlineBKU;
+ lhsOnlineBKU = this.getOnlineBKU();
+ String rhsOnlineBKU;
+ rhsOnlineBKU = that.getOnlineBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlineBKU", lhsOnlineBKU), LocatorUtils.property(thatLocator, "onlineBKU", rhsOnlineBKU), lhsOnlineBKU, rhsOnlineBKU)) {
+ return false;
+ }
+ }
+ {
+ String lhsHandyBKU;
+ lhsHandyBKU = this.getHandyBKU();
+ String rhsHandyBKU;
+ rhsHandyBKU = that.getHandyBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "handyBKU", lhsHandyBKU), LocatorUtils.property(thatLocator, "handyBKU", rhsHandyBKU), lhsHandyBKU, rhsHandyBKU)) {
+ return false;
+ }
+ }
+ {
+ String lhsLocalBKU;
+ lhsLocalBKU = this.getLocalBKU();
+ String rhsLocalBKU;
+ rhsLocalBKU = that.getLocalBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "localBKU", lhsLocalBKU), LocatorUtils.property(thatLocator, "localBKU", rhsLocalBKU), lhsLocalBKU, rhsLocalBKU)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theOnlineBKU;
+ theOnlineBKU = this.getOnlineBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlineBKU", theOnlineBKU), currentHashCode, theOnlineBKU);
+ }
+ {
+ String theHandyBKU;
+ theHandyBKU = this.getHandyBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "handyBKU", theHandyBKU), currentHashCode, theHandyBKU);
+ }
+ {
+ String theLocalBKU;
+ theLocalBKU = this.getLocalBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "localBKU", theLocalBKU), currentHashCode, theLocalBKU);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKDecryption.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKDecryption.java
new file mode 100644
index 000000000..3101f2f92
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKDecryption.java
@@ -0,0 +1,293 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="keyInformation" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="iv" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="keyStoreFileName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="keyAlias" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "keyInformation",
+ "iv",
+ "keyStoreFileName",
+ "keyAlias"
+})
+
+
+
+public class BPKDecryption
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected byte[] keyInformation;
+ @XmlElement(required = true)
+ protected byte[] iv;
+ protected String keyStoreFileName;
+ protected String keyAlias;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the keyInformation property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+
+
+ @Lob
+ public byte[] getKeyInformation() {
+ return keyInformation;
+ }
+
+ /**
+ * Sets the value of the keyInformation property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setKeyInformation(byte[] value) {
+ this.keyInformation = value;
+ }
+
+ /**
+ * Gets the value of the iv property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+
+
+ @Lob
+ public byte[] getIv() {
+ return iv;
+ }
+
+ /**
+ * Sets the value of the iv property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setIv(byte[] value) {
+ this.iv = value;
+ }
+
+ /**
+ * Gets the value of the keyStoreFileName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getKeyStoreFileName() {
+ return keyStoreFileName;
+ }
+
+ /**
+ * Sets the value of the keyStoreFileName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyStoreFileName(String value) {
+ this.keyStoreFileName = value;
+ }
+
+ /**
+ * Gets the value of the keyAlias property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getKeyAlias() {
+ return keyAlias;
+ }
+
+ /**
+ * Sets the value of the keyAlias property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyAlias(String value) {
+ this.keyAlias = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof BPKDecryption)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final BPKDecryption that = ((BPKDecryption) object);
+ {
+ byte[] lhsKeyInformation;
+ lhsKeyInformation = this.getKeyInformation();
+ byte[] rhsKeyInformation;
+ rhsKeyInformation = that.getKeyInformation();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "keyInformation", lhsKeyInformation), LocatorUtils.property(thatLocator, "keyInformation", rhsKeyInformation), lhsKeyInformation, rhsKeyInformation)) {
+ return false;
+ }
+ }
+ {
+ byte[] lhsIv;
+ lhsIv = this.getIv();
+ byte[] rhsIv;
+ rhsIv = that.getIv();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "iv", lhsIv), LocatorUtils.property(thatLocator, "iv", rhsIv), lhsIv, rhsIv)) {
+ return false;
+ }
+ }
+ {
+ String lhsKeyStoreFileName;
+ lhsKeyStoreFileName = this.getKeyStoreFileName();
+ String rhsKeyStoreFileName;
+ rhsKeyStoreFileName = that.getKeyStoreFileName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "keyStoreFileName", lhsKeyStoreFileName), LocatorUtils.property(thatLocator, "keyStoreFileName", rhsKeyStoreFileName), lhsKeyStoreFileName, rhsKeyStoreFileName)) {
+ return false;
+ }
+ }
+ {
+ String lhsKeyAlias;
+ lhsKeyAlias = this.getKeyAlias();
+ String rhsKeyAlias;
+ rhsKeyAlias = that.getKeyAlias();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "keyAlias", lhsKeyAlias), LocatorUtils.property(thatLocator, "keyAlias", rhsKeyAlias), lhsKeyAlias, rhsKeyAlias)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ byte[] theKeyInformation;
+ theKeyInformation = this.getKeyInformation();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "keyInformation", theKeyInformation), currentHashCode, theKeyInformation);
+ }
+ {
+ byte[] theIv;
+ theIv = this.getIv();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "iv", theIv), currentHashCode, theIv);
+ }
+ {
+ String theKeyStoreFileName;
+ theKeyStoreFileName = this.getKeyStoreFileName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "keyStoreFileName", theKeyStoreFileName), currentHashCode, theKeyStoreFileName);
+ }
+ {
+ String theKeyAlias;
+ theKeyAlias = this.getKeyAlias();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "keyAlias", theKeyAlias), currentHashCode, theKeyAlias);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKEncryption.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKEncryption.java
new file mode 100644
index 000000000..f21833c13
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BPKEncryption.java
@@ -0,0 +1,252 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="publicKey" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="target" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="vkz" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "publicKey",
+ "target",
+ "vkz"
+})
+
+
+
+public class BPKEncryption
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected byte[] publicKey;
+ @XmlElement(required = true)
+ protected String target;
+ @XmlElement(required = true)
+ protected String vkz;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the publicKey property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+
+
+ @Lob
+ public byte[] getPublicKey() {
+ return publicKey;
+ }
+
+ /**
+ * Sets the value of the publicKey property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setPublicKey(byte[] value) {
+ this.publicKey = value;
+ }
+
+ /**
+ * Gets the value of the target property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * Sets the value of the target property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTarget(String value) {
+ this.target = value;
+ }
+
+ /**
+ * Gets the value of the vkz property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getVkz() {
+ return vkz;
+ }
+
+ /**
+ * Sets the value of the vkz property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setVkz(String value) {
+ this.vkz = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof BPKEncryption)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final BPKEncryption that = ((BPKEncryption) object);
+ {
+ byte[] lhsPublicKey;
+ lhsPublicKey = this.getPublicKey();
+ byte[] rhsPublicKey;
+ rhsPublicKey = that.getPublicKey();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "publicKey", lhsPublicKey), LocatorUtils.property(thatLocator, "publicKey", rhsPublicKey), lhsPublicKey, rhsPublicKey)) {
+ return false;
+ }
+ }
+ {
+ String lhsTarget;
+ lhsTarget = this.getTarget();
+ String rhsTarget;
+ rhsTarget = that.getTarget();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "target", lhsTarget), LocatorUtils.property(thatLocator, "target", rhsTarget), lhsTarget, rhsTarget)) {
+ return false;
+ }
+ }
+ {
+ String lhsVkz;
+ lhsVkz = this.getVkz();
+ String rhsVkz;
+ rhsVkz = that.getVkz();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "vkz", lhsVkz), LocatorUtils.property(thatLocator, "vkz", rhsVkz), lhsVkz, rhsVkz)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ byte[] thePublicKey;
+ thePublicKey = this.getPublicKey();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "publicKey", thePublicKey), currentHashCode, thePublicKey);
+ }
+ {
+ String theTarget;
+ theTarget = this.getTarget();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "target", theTarget), currentHashCode, theTarget);
+ }
+ {
+ String theVkz;
+ theVkz = this.getVkz();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "vkz", theVkz), currentHashCode, theVkz);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BasicAuth.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BasicAuth.java
new file mode 100644
index 000000000..d22fde8e9
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/BasicAuth.java
@@ -0,0 +1,214 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="UserID" type="{http://www.buergerkarte.at/namespaces/moaconfig#}MOAAuthDataType"/>
+ * &lt;element name="Password" type="{http://www.buergerkarte.at/namespaces/moaconfig#}MOAAuthDataType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "userID",
+ "password"
+})
+@XmlRootElement(name = "BasicAuth")
+
+
+
+public class BasicAuth
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "UserID", required = true)
+ protected MOAAuthDataType userID;
+ @XmlElement(name = "Password", required = true)
+ protected MOAAuthDataType password;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the userID property.
+ *
+ * @return
+ * possible object is
+ * {@link MOAAuthDataType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public MOAAuthDataType getUserID() {
+ return userID;
+ }
+
+ /**
+ * Sets the value of the userID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MOAAuthDataType }
+ *
+ */
+ public void setUserID(MOAAuthDataType value) {
+ this.userID = value;
+ }
+
+ /**
+ * Gets the value of the password property.
+ *
+ * @return
+ * possible object is
+ * {@link MOAAuthDataType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public MOAAuthDataType getPassword() {
+ return password;
+ }
+
+ /**
+ * Sets the value of the password property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MOAAuthDataType }
+ *
+ */
+ public void setPassword(MOAAuthDataType value) {
+ this.password = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof BasicAuth)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final BasicAuth that = ((BasicAuth) object);
+ {
+ MOAAuthDataType lhsUserID;
+ lhsUserID = this.getUserID();
+ MOAAuthDataType rhsUserID;
+ rhsUserID = that.getUserID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "userID", lhsUserID), LocatorUtils.property(thatLocator, "userID", rhsUserID), lhsUserID, rhsUserID)) {
+ return false;
+ }
+ }
+ {
+ MOAAuthDataType lhsPassword;
+ lhsPassword = this.getPassword();
+ MOAAuthDataType rhsPassword;
+ rhsPassword = that.getPassword();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "password", lhsPassword), LocatorUtils.property(thatLocator, "password", rhsPassword), lhsPassword, rhsPassword)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ MOAAuthDataType theUserID;
+ theUserID = this.getUserID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "userID", theUserID), currentHashCode, theUserID);
+ }
+ {
+ MOAAuthDataType thePassword;
+ thePassword = this.getPassword();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "password", thePassword), currentHashCode, thePassword);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPS.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPS.java
new file mode 100644
index 000000000..11eca81f5
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPS.java
@@ -0,0 +1,418 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="AttributeValue" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_STORK" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="countryCode" use="required" type="{http://www.buergerkarte.at/namespaces/moaconfig#}CountryCodeType" />
+ * &lt;attribute name="URL" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="supportsXMLSignature" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "attributeValue",
+ "oastork"
+})
+@XmlRootElement(name = "C-PEPS")
+
+
+
+public class CPEPS
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "AttributeValue")
+ protected List<String> attributeValue;
+ @XmlElement(name = "OA_STORK")
+ protected List<OASTORK> oastork;
+ @XmlAttribute(name = "countryCode", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String countryCode;
+ @XmlAttribute(name = "URL", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String url;
+ @XmlAttribute(name = "supportsXMLSignature")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean supportsXMLSignature;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<CPEPSAttributeValueItem> attributeValueItems;
+
+ /**
+ * Gets the value of the attributeValue property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attributeValue property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttributeValue().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getAttributeValue() {
+ if (attributeValue == null) {
+ attributeValue = new ArrayList<String>();
+ }
+ return this.attributeValue;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setAttributeValue(List<String> attributeValue) {
+ this.attributeValue = attributeValue;
+ }
+
+ /**
+ * Gets the value of the oastork property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the oastork property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOASTORK().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link OASTORK }
+ *
+ *
+ */
+ @ManyToMany(targetEntity = OASTORK.class, cascade = {
+ CascadeType.ALL
+ })
+ @JoinTable(name = "OA_CPEPS", joinColumns = {
+
+ }, inverseJoinColumns = {
+
+ })
+ public List<OASTORK> getOASTORK() {
+ if (oastork == null) {
+ oastork = new ArrayList<OASTORK>();
+ }
+ return this.oastork;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setOASTORK(List<OASTORK> oastork) {
+ this.oastork = oastork;
+ }
+
+ /**
+ * Gets the value of the countryCode property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getCountryCode() {
+ return countryCode;
+ }
+
+ /**
+ * Sets the value of the countryCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCountryCode(String value) {
+ this.countryCode = value;
+ }
+
+ /**
+ * Gets the value of the url property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getURL() {
+ return url;
+ }
+
+ /**
+ * Sets the value of the url property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURL(String value) {
+ this.url = value;
+ }
+
+ /**
+ * Gets the value of the supportsXMLSignature property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isSupportsXMLSignature() {
+ if (supportsXMLSignature == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("true");
+ } else {
+ return supportsXMLSignature;
+ }
+ }
+
+ /**
+ * Sets the value of the supportsXMLSignature property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSupportsXMLSignature(Boolean value) {
+ this.supportsXMLSignature = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = CPEPSAttributeValueItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<CPEPSAttributeValueItem> getAttributeValueItems() {
+ if (this.attributeValueItems == null) {
+ this.attributeValueItems = new ArrayList<CPEPSAttributeValueItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.attributeValue)) {
+ this.attributeValue = ItemUtils.wrap(this.attributeValue, this.attributeValueItems, CPEPSAttributeValueItem.class);
+ }
+ return this.attributeValueItems;
+ }
+
+ public void setAttributeValueItems(List<CPEPSAttributeValueItem> value) {
+ this.attributeValue = null;
+ this.attributeValueItems = null;
+ this.attributeValueItems = value;
+ if (this.attributeValueItems == null) {
+ this.attributeValueItems = new ArrayList<CPEPSAttributeValueItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.attributeValue)) {
+ this.attributeValue = ItemUtils.wrap(this.attributeValue, this.attributeValueItems, CPEPSAttributeValueItem.class);
+ }
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof CPEPS)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final CPEPS that = ((CPEPS) object);
+ {
+ List<String> lhsAttributeValue;
+ lhsAttributeValue = (((this.attributeValue!= null)&&(!this.attributeValue.isEmpty()))?this.getAttributeValue():null);
+ List<String> rhsAttributeValue;
+ rhsAttributeValue = (((that.attributeValue!= null)&&(!that.attributeValue.isEmpty()))?that.getAttributeValue():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "attributeValue", lhsAttributeValue), LocatorUtils.property(thatLocator, "attributeValue", rhsAttributeValue), lhsAttributeValue, rhsAttributeValue)) {
+ return false;
+ }
+ }
+ {
+ List<OASTORK> lhsOASTORK;
+ lhsOASTORK = (((this.oastork!= null)&&(!this.oastork.isEmpty()))?this.getOASTORK():null);
+ List<OASTORK> rhsOASTORK;
+ rhsOASTORK = (((that.oastork!= null)&&(!that.oastork.isEmpty()))?that.getOASTORK():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oastork", lhsOASTORK), LocatorUtils.property(thatLocator, "oastork", rhsOASTORK), lhsOASTORK, rhsOASTORK)) {
+ return false;
+ }
+ }
+ {
+ String lhsCountryCode;
+ lhsCountryCode = this.getCountryCode();
+ String rhsCountryCode;
+ rhsCountryCode = that.getCountryCode();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "countryCode", lhsCountryCode), LocatorUtils.property(thatLocator, "countryCode", rhsCountryCode), lhsCountryCode, rhsCountryCode)) {
+ return false;
+ }
+ }
+ {
+ String lhsURL;
+ lhsURL = this.getURL();
+ String rhsURL;
+ rhsURL = that.getURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "url", lhsURL), LocatorUtils.property(thatLocator, "url", rhsURL), lhsURL, rhsURL)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsSupportsXMLSignature;
+ lhsSupportsXMLSignature = ((this.supportsXMLSignature!= null)?this.isSupportsXMLSignature():false);
+ boolean rhsSupportsXMLSignature;
+ rhsSupportsXMLSignature = ((that.supportsXMLSignature!= null)?that.isSupportsXMLSignature():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "supportsXMLSignature", lhsSupportsXMLSignature), LocatorUtils.property(thatLocator, "supportsXMLSignature", rhsSupportsXMLSignature), lhsSupportsXMLSignature, rhsSupportsXMLSignature)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<String> theAttributeValue;
+ theAttributeValue = (((this.attributeValue!= null)&&(!this.attributeValue.isEmpty()))?this.getAttributeValue():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributeValue", theAttributeValue), currentHashCode, theAttributeValue);
+ }
+ {
+ List<OASTORK> theOASTORK;
+ theOASTORK = (((this.oastork!= null)&&(!this.oastork.isEmpty()))?this.getOASTORK():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oastork", theOASTORK), currentHashCode, theOASTORK);
+ }
+ {
+ String theCountryCode;
+ theCountryCode = this.getCountryCode();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "countryCode", theCountryCode), currentHashCode, theCountryCode);
+ }
+ {
+ String theURL;
+ theURL = this.getURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "url", theURL), currentHashCode, theURL);
+ }
+ {
+ boolean theSupportsXMLSignature;
+ theSupportsXMLSignature = ((this.supportsXMLSignature!= null)?this.isSupportsXMLSignature():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "supportsXMLSignature", theSupportsXMLSignature), currentHashCode, theSupportsXMLSignature);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPSAttributeValueItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPSAttributeValueItem.java
new file mode 100644
index 000000000..0af8c64b4
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/CPEPSAttributeValueItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class CPEPSAttributeValueItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "AttributeValue", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModeType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModeType.java
new file mode 100644
index 000000000..56bb48820
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModeType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ChainingModeType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="ChainingModeType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="chaining"/>
+ * &lt;enumeration value="pkix"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "ChainingModeType")
+@XmlEnum
+public enum ChainingModeType {
+
+ @XmlEnumValue("chaining")
+ CHAINING("chaining"),
+ @XmlEnumValue("pkix")
+ PKIX("pkix");
+ private final String value;
+
+ ChainingModeType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static ChainingModeType fromValue(String v) {
+ for (ChainingModeType c: ChainingModeType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModes.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModes.java
new file mode 100644
index 000000000..597a9e56c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ChainingModes.java
@@ -0,0 +1,242 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;element name="TrustAnchor">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}X509IssuerSerialType">
+ * &lt;attribute name="mode" use="required" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ChainingModeType" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="systemDefaultMode" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ChainingModeType" default="pkix" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "trustAnchor"
+})
+
+
+
+public class ChainingModes
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TrustAnchor")
+ protected List<TrustAnchor> trustAnchor;
+ @XmlAttribute(name = "systemDefaultMode")
+ protected ChainingModeType systemDefaultMode;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the trustAnchor property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the trustAnchor property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTrustAnchor().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TrustAnchor }
+ *
+ *
+ */
+ @OneToMany(targetEntity = TrustAnchor.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<TrustAnchor> getTrustAnchor() {
+ if (trustAnchor == null) {
+ trustAnchor = new ArrayList<TrustAnchor>();
+ }
+ return this.trustAnchor;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setTrustAnchor(List<TrustAnchor> trustAnchor) {
+ this.trustAnchor = trustAnchor;
+ }
+
+ /**
+ * Gets the value of the systemDefaultMode property.
+ *
+ * @return
+ * possible object is
+ * {@link ChainingModeType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public ChainingModeType getSystemDefaultMode() {
+ if (systemDefaultMode == null) {
+ return ChainingModeType.PKIX;
+ } else {
+ return systemDefaultMode;
+ }
+ }
+
+ /**
+ * Sets the value of the systemDefaultMode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ChainingModeType }
+ *
+ */
+ public void setSystemDefaultMode(ChainingModeType value) {
+ this.systemDefaultMode = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof ChainingModes)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final ChainingModes that = ((ChainingModes) object);
+ {
+ List<TrustAnchor> lhsTrustAnchor;
+ lhsTrustAnchor = (((this.trustAnchor!= null)&&(!this.trustAnchor.isEmpty()))?this.getTrustAnchor():null);
+ List<TrustAnchor> rhsTrustAnchor;
+ rhsTrustAnchor = (((that.trustAnchor!= null)&&(!that.trustAnchor.isEmpty()))?that.getTrustAnchor():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustAnchor", lhsTrustAnchor), LocatorUtils.property(thatLocator, "trustAnchor", rhsTrustAnchor), lhsTrustAnchor, rhsTrustAnchor)) {
+ return false;
+ }
+ }
+ {
+ ChainingModeType lhsSystemDefaultMode;
+ lhsSystemDefaultMode = this.getSystemDefaultMode();
+ ChainingModeType rhsSystemDefaultMode;
+ rhsSystemDefaultMode = that.getSystemDefaultMode();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "systemDefaultMode", lhsSystemDefaultMode), LocatorUtils.property(thatLocator, "systemDefaultMode", rhsSystemDefaultMode), lhsSystemDefaultMode, rhsSystemDefaultMode)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<TrustAnchor> theTrustAnchor;
+ theTrustAnchor = (((this.trustAnchor!= null)&&(!this.trustAnchor.isEmpty()))?this.getTrustAnchor():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustAnchor", theTrustAnchor), currentHashCode, theTrustAnchor);
+ }
+ {
+ ChainingModeType theSystemDefaultMode;
+ theSystemDefaultMode = this.getSystemDefaultMode();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "systemDefaultMode", theSystemDefaultMode), currentHashCode, theSystemDefaultMode);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ClientKeyStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ClientKeyStore.java
new file mode 100644
index 000000000..1df2a813a
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ClientKeyStore.java
@@ -0,0 +1,206 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>anyURI">
+ * &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "value"
+})
+
+
+
+public class ClientKeyStore
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlValue
+ @XmlSchemaType(name = "anyURI")
+ protected String value;
+ @XmlAttribute(name = "password")
+ protected String password;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the password property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Sets the value of the password property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPassword(String value) {
+ this.password = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof ClientKeyStore)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final ClientKeyStore that = ((ClientKeyStore) object);
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ {
+ String lhsPassword;
+ lhsPassword = this.getPassword();
+ String rhsPassword;
+ rhsPassword = that.getPassword();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "password", lhsPassword), LocatorUtils.property(thatLocator, "password", rhsPassword), lhsPassword, rhsPassword)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ {
+ String thePassword;
+ thePassword = this.getPassword();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "password", thePassword), currentHashCode, thePassword);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Configuration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Configuration.java
new file mode 100644
index 000000000..3a5482864
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Configuration.java
@@ -0,0 +1,364 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="LoginType" type="{http://www.buergerkarte.at/namespaces/moaconfig#}LoginType"/>
+ * &lt;element name="Binding" minOccurs="0">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="full"/>
+ * &lt;enumeration value="userName"/>
+ * &lt;enumeration value="none"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/element>
+ * &lt;choice>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}ParamAuth"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}BasicAuth"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}HeaderAuth"/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "loginType",
+ "binding",
+ "paramAuth",
+ "basicAuth",
+ "headerAuth"
+})
+@XmlRootElement(name = "Configuration")
+
+
+
+public class Configuration
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "LoginType", required = true, defaultValue = "stateful")
+ protected LoginType loginType;
+ @XmlElement(name = "Binding")
+ protected String binding;
+ @XmlElement(name = "ParamAuth")
+ protected ParamAuth paramAuth;
+ @XmlElement(name = "BasicAuth")
+ protected BasicAuth basicAuth;
+ @XmlElement(name = "HeaderAuth")
+ protected HeaderAuth headerAuth;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the loginType property.
+ *
+ * @return
+ * possible object is
+ * {@link LoginType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public LoginType getLoginType() {
+ return loginType;
+ }
+
+ /**
+ * Sets the value of the loginType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link LoginType }
+ *
+ */
+ public void setLoginType(LoginType value) {
+ this.loginType = value;
+ }
+
+ /**
+ * Gets the value of the binding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getBinding() {
+ return binding;
+ }
+
+ /**
+ * Sets the value of the binding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBinding(String value) {
+ this.binding = value;
+ }
+
+ /**
+ * Gets the value of the paramAuth property.
+ *
+ * @return
+ * possible object is
+ * {@link ParamAuth }
+ *
+ */
+ @ManyToOne(targetEntity = ParamAuth.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ParamAuth getParamAuth() {
+ return paramAuth;
+ }
+
+ /**
+ * Sets the value of the paramAuth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ParamAuth }
+ *
+ */
+ public void setParamAuth(ParamAuth value) {
+ this.paramAuth = value;
+ }
+
+ /**
+ * Gets the value of the basicAuth property.
+ *
+ * @return
+ * possible object is
+ * {@link BasicAuth }
+ *
+ */
+ @ManyToOne(targetEntity = BasicAuth.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public BasicAuth getBasicAuth() {
+ return basicAuth;
+ }
+
+ /**
+ * Sets the value of the basicAuth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BasicAuth }
+ *
+ */
+ public void setBasicAuth(BasicAuth value) {
+ this.basicAuth = value;
+ }
+
+ /**
+ * Gets the value of the headerAuth property.
+ *
+ * @return
+ * possible object is
+ * {@link HeaderAuth }
+ *
+ */
+ @ManyToOne(targetEntity = HeaderAuth.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public HeaderAuth getHeaderAuth() {
+ return headerAuth;
+ }
+
+ /**
+ * Sets the value of the headerAuth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link HeaderAuth }
+ *
+ */
+ public void setHeaderAuth(HeaderAuth value) {
+ this.headerAuth = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Configuration)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Configuration that = ((Configuration) object);
+ {
+ LoginType lhsLoginType;
+ lhsLoginType = this.getLoginType();
+ LoginType rhsLoginType;
+ rhsLoginType = that.getLoginType();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "loginType", lhsLoginType), LocatorUtils.property(thatLocator, "loginType", rhsLoginType), lhsLoginType, rhsLoginType)) {
+ return false;
+ }
+ }
+ {
+ String lhsBinding;
+ lhsBinding = this.getBinding();
+ String rhsBinding;
+ rhsBinding = that.getBinding();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "binding", lhsBinding), LocatorUtils.property(thatLocator, "binding", rhsBinding), lhsBinding, rhsBinding)) {
+ return false;
+ }
+ }
+ {
+ ParamAuth lhsParamAuth;
+ lhsParamAuth = this.getParamAuth();
+ ParamAuth rhsParamAuth;
+ rhsParamAuth = that.getParamAuth();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "paramAuth", lhsParamAuth), LocatorUtils.property(thatLocator, "paramAuth", rhsParamAuth), lhsParamAuth, rhsParamAuth)) {
+ return false;
+ }
+ }
+ {
+ BasicAuth lhsBasicAuth;
+ lhsBasicAuth = this.getBasicAuth();
+ BasicAuth rhsBasicAuth;
+ rhsBasicAuth = that.getBasicAuth();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "basicAuth", lhsBasicAuth), LocatorUtils.property(thatLocator, "basicAuth", rhsBasicAuth), lhsBasicAuth, rhsBasicAuth)) {
+ return false;
+ }
+ }
+ {
+ HeaderAuth lhsHeaderAuth;
+ lhsHeaderAuth = this.getHeaderAuth();
+ HeaderAuth rhsHeaderAuth;
+ rhsHeaderAuth = that.getHeaderAuth();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "headerAuth", lhsHeaderAuth), LocatorUtils.property(thatLocator, "headerAuth", rhsHeaderAuth), lhsHeaderAuth, rhsHeaderAuth)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ LoginType theLoginType;
+ theLoginType = this.getLoginType();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "loginType", theLoginType), currentHashCode, theLoginType);
+ }
+ {
+ String theBinding;
+ theBinding = this.getBinding();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "binding", theBinding), currentHashCode, theBinding);
+ }
+ {
+ ParamAuth theParamAuth;
+ theParamAuth = this.getParamAuth();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "paramAuth", theParamAuth), currentHashCode, theParamAuth);
+ }
+ {
+ BasicAuth theBasicAuth;
+ theBasicAuth = this.getBasicAuth();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "basicAuth", theBasicAuth), currentHashCode, theBasicAuth);
+ }
+ {
+ HeaderAuth theHeaderAuth;
+ theHeaderAuth = this.getHeaderAuth();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "headerAuth", theHeaderAuth), currentHashCode, theHeaderAuth);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterClientAuthType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterClientAuthType.java
new file mode 100644
index 000000000..37c09858f
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterClientAuthType.java
@@ -0,0 +1,143 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for ConnectionParameterClientAuthType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ConnectionParameterClientAuthType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterServerAuthType">
+ * &lt;sequence>
+ * &lt;element name="ClientKeyStore" minOccurs="0">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>anyURI">
+ * &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ConnectionParameterClientAuthType", propOrder = {
+ "clientKeyStore"
+})
+
+
+public class ConnectionParameterClientAuthType
+ extends ConnectionParameterServerAuthType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "ClientKeyStore")
+ protected ClientKeyStore clientKeyStore;
+
+ /**
+ * Gets the value of the clientKeyStore property.
+ *
+ * @return
+ * possible object is
+ * {@link ClientKeyStore }
+ *
+ */
+ @ManyToOne(targetEntity = ClientKeyStore.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ClientKeyStore getClientKeyStore() {
+ return clientKeyStore;
+ }
+
+ /**
+ * Sets the value of the clientKeyStore property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ClientKeyStore }
+ *
+ */
+ public void setClientKeyStore(ClientKeyStore value) {
+ this.clientKeyStore = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof ConnectionParameterClientAuthType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ if (!super.equals(thisLocator, thatLocator, object, strategy)) {
+ return false;
+ }
+ final ConnectionParameterClientAuthType that = ((ConnectionParameterClientAuthType) object);
+ {
+ ClientKeyStore lhsClientKeyStore;
+ lhsClientKeyStore = this.getClientKeyStore();
+ ClientKeyStore rhsClientKeyStore;
+ rhsClientKeyStore = that.getClientKeyStore();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "clientKeyStore", lhsClientKeyStore), LocatorUtils.property(thatLocator, "clientKeyStore", rhsClientKeyStore), lhsClientKeyStore, rhsClientKeyStore)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = super.hashCode(locator, strategy);
+ {
+ ClientKeyStore theClientKeyStore;
+ theClientKeyStore = this.getClientKeyStore();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "clientKeyStore", theClientKeyStore), currentHashCode, theClientKeyStore);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterServerAuthType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterServerAuthType.java
new file mode 100644
index 000000000..8c7ae5fda
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ConnectionParameterServerAuthType.java
@@ -0,0 +1,214 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for ConnectionParameterServerAuthType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ConnectionParameterServerAuthType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="AcceptedServerCertificates" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="URL" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ConnectionParameterServerAuthType", propOrder = {
+ "acceptedServerCertificates"
+})
+@XmlSeeAlso({
+ ConnectionParameterClientAuthType.class
+})
+
+
+
+public class ConnectionParameterServerAuthType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "AcceptedServerCertificates")
+ @XmlSchemaType(name = "anyURI")
+ protected String acceptedServerCertificates;
+ @XmlAttribute(name = "URL", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String url;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the acceptedServerCertificates property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAcceptedServerCertificates() {
+ return acceptedServerCertificates;
+ }
+
+ /**
+ * Sets the value of the acceptedServerCertificates property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAcceptedServerCertificates(String value) {
+ this.acceptedServerCertificates = value;
+ }
+
+ /**
+ * Gets the value of the url property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getURL() {
+ return url;
+ }
+
+ /**
+ * Sets the value of the url property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURL(String value) {
+ this.url = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof ConnectionParameterServerAuthType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final ConnectionParameterServerAuthType that = ((ConnectionParameterServerAuthType) object);
+ {
+ String lhsAcceptedServerCertificates;
+ lhsAcceptedServerCertificates = this.getAcceptedServerCertificates();
+ String rhsAcceptedServerCertificates;
+ rhsAcceptedServerCertificates = that.getAcceptedServerCertificates();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "acceptedServerCertificates", lhsAcceptedServerCertificates), LocatorUtils.property(thatLocator, "acceptedServerCertificates", rhsAcceptedServerCertificates), lhsAcceptedServerCertificates, rhsAcceptedServerCertificates)) {
+ return false;
+ }
+ }
+ {
+ String lhsURL;
+ lhsURL = this.getURL();
+ String rhsURL;
+ rhsURL = that.getURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "url", lhsURL), LocatorUtils.property(thatLocator, "url", rhsURL), lhsURL, rhsURL)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theAcceptedServerCertificates;
+ theAcceptedServerCertificates = this.getAcceptedServerCertificates();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "acceptedServerCertificates", theAcceptedServerCertificates), currentHashCode, theAcceptedServerCertificates);
+ }
+ {
+ String theURL;
+ theURL = this.getURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "url", theURL), currentHashCode, theURL);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Contact.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Contact.java
new file mode 100644
index 000000000..38835db05
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Contact.java
@@ -0,0 +1,484 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SurName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="GivenName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="Mail" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ * &lt;element name="Type">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="technical"/>
+ * &lt;enumeration value="support"/>
+ * &lt;enumeration value="administrative"/>
+ * &lt;enumeration value="billing"/>
+ * &lt;enumeration value="other"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/element>
+ * &lt;element name="Company" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="Phone" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "surName",
+ "givenName",
+ "mail",
+ "type",
+ "company",
+ "phone"
+})
+@XmlRootElement(name = "Contact")
+
+
+
+public class Contact
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "SurName", required = true)
+ protected String surName;
+ @XmlElement(name = "GivenName", required = true)
+ protected String givenName;
+ @XmlElement(name = "Mail", required = true)
+ protected List<String> mail;
+ @XmlElement(name = "Type", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String type;
+ @XmlElement(name = "Company", required = true)
+ protected String company;
+ @XmlElement(name = "Phone", required = true)
+ protected List<String> phone;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<ContactMailItem> mailItems;
+ protected transient List<ContactPhoneItem> phoneItems;
+
+ /**
+ * Gets the value of the surName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getSurName() {
+ return surName;
+ }
+
+ /**
+ * Sets the value of the surName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSurName(String value) {
+ this.surName = value;
+ }
+
+ /**
+ * Gets the value of the givenName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getGivenName() {
+ return givenName;
+ }
+
+ /**
+ * Sets the value of the givenName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setGivenName(String value) {
+ this.givenName = value;
+ }
+
+ /**
+ * Gets the value of the mail property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the mail property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getMail().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getMail() {
+ if (mail == null) {
+ mail = new ArrayList<String>();
+ }
+ return this.mail;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setMail(List<String> mail) {
+ this.mail = mail;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ /**
+ * Gets the value of the company property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getCompany() {
+ return company;
+ }
+
+ /**
+ * Sets the value of the company property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCompany(String value) {
+ this.company = value;
+ }
+
+ /**
+ * Gets the value of the phone property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the phone property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getPhone().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getPhone() {
+ if (phone == null) {
+ phone = new ArrayList<String>();
+ }
+ return this.phone;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setPhone(List<String> phone) {
+ this.phone = phone;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = ContactMailItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<ContactMailItem> getMailItems() {
+ if (this.mailItems == null) {
+ this.mailItems = new ArrayList<ContactMailItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.mail)) {
+ this.mail = ItemUtils.wrap(this.mail, this.mailItems, ContactMailItem.class);
+ }
+ return this.mailItems;
+ }
+
+ public void setMailItems(List<ContactMailItem> value) {
+ this.mail = null;
+ this.mailItems = null;
+ this.mailItems = value;
+ if (this.mailItems == null) {
+ this.mailItems = new ArrayList<ContactMailItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.mail)) {
+ this.mail = ItemUtils.wrap(this.mail, this.mailItems, ContactMailItem.class);
+ }
+ }
+
+ @OneToMany(targetEntity = ContactPhoneItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<ContactPhoneItem> getPhoneItems() {
+ if (this.phoneItems == null) {
+ this.phoneItems = new ArrayList<ContactPhoneItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.phone)) {
+ this.phone = ItemUtils.wrap(this.phone, this.phoneItems, ContactPhoneItem.class);
+ }
+ return this.phoneItems;
+ }
+
+ public void setPhoneItems(List<ContactPhoneItem> value) {
+ this.phone = null;
+ this.phoneItems = null;
+ this.phoneItems = value;
+ if (this.phoneItems == null) {
+ this.phoneItems = new ArrayList<ContactPhoneItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.phone)) {
+ this.phone = ItemUtils.wrap(this.phone, this.phoneItems, ContactPhoneItem.class);
+ }
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Contact)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Contact that = ((Contact) object);
+ {
+ String lhsSurName;
+ lhsSurName = this.getSurName();
+ String rhsSurName;
+ rhsSurName = that.getSurName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "surName", lhsSurName), LocatorUtils.property(thatLocator, "surName", rhsSurName), lhsSurName, rhsSurName)) {
+ return false;
+ }
+ }
+ {
+ String lhsGivenName;
+ lhsGivenName = this.getGivenName();
+ String rhsGivenName;
+ rhsGivenName = that.getGivenName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "givenName", lhsGivenName), LocatorUtils.property(thatLocator, "givenName", rhsGivenName), lhsGivenName, rhsGivenName)) {
+ return false;
+ }
+ }
+ {
+ List<String> lhsMail;
+ lhsMail = (((this.mail!= null)&&(!this.mail.isEmpty()))?this.getMail():null);
+ List<String> rhsMail;
+ rhsMail = (((that.mail!= null)&&(!that.mail.isEmpty()))?that.getMail():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mail", lhsMail), LocatorUtils.property(thatLocator, "mail", rhsMail), lhsMail, rhsMail)) {
+ return false;
+ }
+ }
+ {
+ String lhsType;
+ lhsType = this.getType();
+ String rhsType;
+ rhsType = that.getType();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "type", lhsType), LocatorUtils.property(thatLocator, "type", rhsType), lhsType, rhsType)) {
+ return false;
+ }
+ }
+ {
+ String lhsCompany;
+ lhsCompany = this.getCompany();
+ String rhsCompany;
+ rhsCompany = that.getCompany();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "company", lhsCompany), LocatorUtils.property(thatLocator, "company", rhsCompany), lhsCompany, rhsCompany)) {
+ return false;
+ }
+ }
+ {
+ List<String> lhsPhone;
+ lhsPhone = (((this.phone!= null)&&(!this.phone.isEmpty()))?this.getPhone():null);
+ List<String> rhsPhone;
+ rhsPhone = (((that.phone!= null)&&(!that.phone.isEmpty()))?that.getPhone():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "phone", lhsPhone), LocatorUtils.property(thatLocator, "phone", rhsPhone), lhsPhone, rhsPhone)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theSurName;
+ theSurName = this.getSurName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "surName", theSurName), currentHashCode, theSurName);
+ }
+ {
+ String theGivenName;
+ theGivenName = this.getGivenName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "givenName", theGivenName), currentHashCode, theGivenName);
+ }
+ {
+ List<String> theMail;
+ theMail = (((this.mail!= null)&&(!this.mail.isEmpty()))?this.getMail():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mail", theMail), currentHashCode, theMail);
+ }
+ {
+ String theType;
+ theType = this.getType();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "type", theType), currentHashCode, theType);
+ }
+ {
+ String theCompany;
+ theCompany = this.getCompany();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "company", theCompany), currentHashCode, theCompany);
+ }
+ {
+ List<String> thePhone;
+ thePhone = (((this.phone!= null)&&(!this.phone.isEmpty()))?this.getPhone():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "phone", thePhone), currentHashCode, thePhone);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactMailItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactMailItem.java
new file mode 100644
index 000000000..d7c656bd7
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactMailItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class ContactMailItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "Mail", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactPhoneItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactPhoneItem.java
new file mode 100644
index 000000000..ae9c57ea0
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ContactPhoneItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class ContactPhoneItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "Phone", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultBKUs.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultBKUs.java
new file mode 100644
index 000000000..f0655c3f0
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultBKUs.java
@@ -0,0 +1,256 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "onlineBKU",
+ "handyBKU",
+ "localBKU"
+})
+
+
+
+public class DefaultBKUs
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "OnlineBKU")
+ @XmlSchemaType(name = "anyURI")
+ protected String onlineBKU;
+ @XmlElement(name = "HandyBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String handyBKU;
+ @XmlElement(name = "LocalBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String localBKU;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the onlineBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOnlineBKU() {
+ return onlineBKU;
+ }
+
+ /**
+ * Sets the value of the onlineBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOnlineBKU(String value) {
+ this.onlineBKU = value;
+ }
+
+ /**
+ * Gets the value of the handyBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getHandyBKU() {
+ return handyBKU;
+ }
+
+ /**
+ * Sets the value of the handyBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHandyBKU(String value) {
+ this.handyBKU = value;
+ }
+
+ /**
+ * Gets the value of the localBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getLocalBKU() {
+ return localBKU;
+ }
+
+ /**
+ * Sets the value of the localBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLocalBKU(String value) {
+ this.localBKU = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof DefaultBKUs)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final DefaultBKUs that = ((DefaultBKUs) object);
+ {
+ String lhsOnlineBKU;
+ lhsOnlineBKU = this.getOnlineBKU();
+ String rhsOnlineBKU;
+ rhsOnlineBKU = that.getOnlineBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlineBKU", lhsOnlineBKU), LocatorUtils.property(thatLocator, "onlineBKU", rhsOnlineBKU), lhsOnlineBKU, rhsOnlineBKU)) {
+ return false;
+ }
+ }
+ {
+ String lhsHandyBKU;
+ lhsHandyBKU = this.getHandyBKU();
+ String rhsHandyBKU;
+ rhsHandyBKU = that.getHandyBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "handyBKU", lhsHandyBKU), LocatorUtils.property(thatLocator, "handyBKU", rhsHandyBKU), lhsHandyBKU, rhsHandyBKU)) {
+ return false;
+ }
+ }
+ {
+ String lhsLocalBKU;
+ lhsLocalBKU = this.getLocalBKU();
+ String rhsLocalBKU;
+ rhsLocalBKU = that.getLocalBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "localBKU", lhsLocalBKU), LocatorUtils.property(thatLocator, "localBKU", rhsLocalBKU), lhsLocalBKU, rhsLocalBKU)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theOnlineBKU;
+ theOnlineBKU = this.getOnlineBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlineBKU", theOnlineBKU), currentHashCode, theOnlineBKU);
+ }
+ {
+ String theHandyBKU;
+ theHandyBKU = this.getHandyBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "handyBKU", theHandyBKU), currentHashCode, theHandyBKU);
+ }
+ {
+ String theLocalBKU;
+ theLocalBKU = this.getLocalBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "localBKU", theLocalBKU), currentHashCode, theLocalBKU);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultTrustProfile.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultTrustProfile.java
new file mode 100644
index 000000000..9b23729c3
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/DefaultTrustProfile.java
@@ -0,0 +1,164 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "trustProfileID"
+})
+
+
+
+public class DefaultTrustProfile
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TrustProfileID", required = true)
+ protected String trustProfileID;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the trustProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ /**
+ * Sets the value of the trustProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustProfileID(String value) {
+ this.trustProfileID = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof DefaultTrustProfile)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final DefaultTrustProfile that = ((DefaultTrustProfile) object);
+ {
+ String lhsTrustProfileID;
+ lhsTrustProfileID = this.getTrustProfileID();
+ String rhsTrustProfileID;
+ rhsTrustProfileID = that.getTrustProfileID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustProfileID", lhsTrustProfileID), LocatorUtils.property(thatLocator, "trustProfileID", rhsTrustProfileID), lhsTrustProfileID, rhsTrustProfileID)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theTrustProfileID;
+ theTrustProfileID = this.getTrustProfileID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustProfileID", theTrustProfileID), currentHashCode, theTrustProfileID);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/EncBPKInformation.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/EncBPKInformation.java
new file mode 100644
index 000000000..0edffdc28
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/EncBPKInformation.java
@@ -0,0 +1,257 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="bPKDecryption" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="keyInformation" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="iv" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="keyStoreFileName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="keyAlias" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="bPKEncryption" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="publicKey" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="target" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="vkz" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "bpkDecryption",
+ "bpkEncryption"
+})
+@XmlRootElement(name = "EncBPKInformation")
+
+
+
+public class EncBPKInformation
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "bPKDecryption")
+ protected BPKDecryption bpkDecryption;
+ @XmlElement(name = "bPKEncryption")
+ protected List<BPKEncryption> bpkEncryption;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the bpkDecryption property.
+ *
+ * @return
+ * possible object is
+ * {@link BPKDecryption }
+ *
+ */
+ @ManyToOne(targetEntity = BPKDecryption.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public BPKDecryption getBPKDecryption() {
+ return bpkDecryption;
+ }
+
+ /**
+ * Sets the value of the bpkDecryption property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BPKDecryption }
+ *
+ */
+ public void setBPKDecryption(BPKDecryption value) {
+ this.bpkDecryption = value;
+ }
+
+ /**
+ * Gets the value of the bpkEncryption property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the bpkEncryption property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getBPKEncryption().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link BPKEncryption }
+ *
+ *
+ */
+ @OneToMany(targetEntity = BPKEncryption.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<BPKEncryption> getBPKEncryption() {
+ if (bpkEncryption == null) {
+ bpkEncryption = new ArrayList<BPKEncryption>();
+ }
+ return this.bpkEncryption;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setBPKEncryption(List<BPKEncryption> bpkEncryption) {
+ this.bpkEncryption = bpkEncryption;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof EncBPKInformation)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final EncBPKInformation that = ((EncBPKInformation) object);
+ {
+ BPKDecryption lhsBPKDecryption;
+ lhsBPKDecryption = this.getBPKDecryption();
+ BPKDecryption rhsBPKDecryption;
+ rhsBPKDecryption = that.getBPKDecryption();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "bpkDecryption", lhsBPKDecryption), LocatorUtils.property(thatLocator, "bpkDecryption", rhsBPKDecryption), lhsBPKDecryption, rhsBPKDecryption)) {
+ return false;
+ }
+ }
+ {
+ List<BPKEncryption> lhsBPKEncryption;
+ lhsBPKEncryption = (((this.bpkEncryption!= null)&&(!this.bpkEncryption.isEmpty()))?this.getBPKEncryption():null);
+ List<BPKEncryption> rhsBPKEncryption;
+ rhsBPKEncryption = (((that.bpkEncryption!= null)&&(!that.bpkEncryption.isEmpty()))?that.getBPKEncryption():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "bpkEncryption", lhsBPKEncryption), LocatorUtils.property(thatLocator, "bpkEncryption", rhsBPKEncryption), lhsBPKEncryption, rhsBPKEncryption)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ BPKDecryption theBPKDecryption;
+ theBPKDecryption = this.getBPKDecryption();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "bpkDecryption", theBPKDecryption), currentHashCode, theBPKDecryption);
+ }
+ {
+ List<BPKEncryption> theBPKEncryption;
+ theBPKEncryption = (((this.bpkEncryption!= null)&&(!this.bpkEncryption.isEmpty()))?this.getBPKEncryption():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "bpkEncryption", theBPKEncryption), currentHashCode, theBPKEncryption);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ForeignIdentities.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ForeignIdentities.java
new file mode 100644
index 000000000..9f9ae0bba
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ForeignIdentities.java
@@ -0,0 +1,216 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}STORK" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "connectionParameter",
+ "stork"
+})
+
+
+
+public class ForeignIdentities
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "ConnectionParameter", required = true)
+ protected ConnectionParameterClientAuthType connectionParameter;
+ @XmlElement(name = "STORK")
+ protected STORK stork;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the connectionParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ @ManyToOne(targetEntity = ConnectionParameterClientAuthType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ConnectionParameterClientAuthType getConnectionParameter() {
+ return connectionParameter;
+ }
+
+ /**
+ * Sets the value of the connectionParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ public void setConnectionParameter(ConnectionParameterClientAuthType value) {
+ this.connectionParameter = value;
+ }
+
+ /**
+ * Verbindungsparameter zu den Country-PEPS
+ * (C-PEPS)
+ *
+ *
+ * @return
+ * possible object is
+ * {@link STORK }
+ *
+ */
+ @ManyToOne(targetEntity = STORK.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public STORK getSTORK() {
+ return stork;
+ }
+
+ /**
+ * Sets the value of the stork property.
+ *
+ * @param value
+ * allowed object is
+ * {@link STORK }
+ *
+ */
+ public void setSTORK(STORK value) {
+ this.stork = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof ForeignIdentities)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final ForeignIdentities that = ((ForeignIdentities) object);
+ {
+ ConnectionParameterClientAuthType lhsConnectionParameter;
+ lhsConnectionParameter = this.getConnectionParameter();
+ ConnectionParameterClientAuthType rhsConnectionParameter;
+ rhsConnectionParameter = that.getConnectionParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "connectionParameter", lhsConnectionParameter), LocatorUtils.property(thatLocator, "connectionParameter", rhsConnectionParameter), lhsConnectionParameter, rhsConnectionParameter)) {
+ return false;
+ }
+ }
+ {
+ STORK lhsSTORK;
+ lhsSTORK = this.getSTORK();
+ STORK rhsSTORK;
+ rhsSTORK = that.getSTORK();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "stork", lhsSTORK), LocatorUtils.property(thatLocator, "stork", rhsSTORK), lhsSTORK, rhsSTORK)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ ConnectionParameterClientAuthType theConnectionParameter;
+ theConnectionParameter = this.getConnectionParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "connectionParameter", theConnectionParameter), currentHashCode, theConnectionParameter);
+ }
+ {
+ STORK theSTORK;
+ theSTORK = this.getSTORK();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "stork", theSTORK), currentHashCode, theSTORK);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GeneralConfiguration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GeneralConfiguration.java
new file mode 100644
index 000000000..883245da8
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GeneralConfiguration.java
@@ -0,0 +1,365 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="TimeOuts">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Assertion" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;element name="MOASessionCreated" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;element name="MOASessionUpdated" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="AlternativeSourceID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="CertStoreDirectory" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="TrustManagerRevocationChecking" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="PublicURLPreFix" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "timeOuts",
+ "alternativeSourceID",
+ "certStoreDirectory",
+ "trustManagerRevocationChecking",
+ "publicURLPreFix"
+})
+@XmlRootElement(name = "GeneralConfiguration")
+
+
+
+public class GeneralConfiguration
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TimeOuts", required = true)
+ protected TimeOuts timeOuts;
+ @XmlElement(name = "AlternativeSourceID", required = true)
+ protected String alternativeSourceID;
+ @XmlElement(name = "CertStoreDirectory", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String certStoreDirectory;
+ @XmlElement(name = "TrustManagerRevocationChecking", required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean trustManagerRevocationChecking;
+ @XmlElement(name = "PublicURLPreFix", required = true)
+ protected String publicURLPreFix;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the timeOuts property.
+ *
+ * @return
+ * possible object is
+ * {@link TimeOuts }
+ *
+ */
+ @ManyToOne(targetEntity = TimeOuts.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public TimeOuts getTimeOuts() {
+ return timeOuts;
+ }
+
+ /**
+ * Sets the value of the timeOuts property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TimeOuts }
+ *
+ */
+ public void setTimeOuts(TimeOuts value) {
+ this.timeOuts = value;
+ }
+
+ /**
+ * Gets the value of the alternativeSourceID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAlternativeSourceID() {
+ return alternativeSourceID;
+ }
+
+ /**
+ * Sets the value of the alternativeSourceID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlternativeSourceID(String value) {
+ this.alternativeSourceID = value;
+ }
+
+ /**
+ * Gets the value of the certStoreDirectory property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getCertStoreDirectory() {
+ return certStoreDirectory;
+ }
+
+ /**
+ * Sets the value of the certStoreDirectory property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCertStoreDirectory(String value) {
+ this.certStoreDirectory = value;
+ }
+
+ /**
+ * Gets the value of the trustManagerRevocationChecking property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isTrustManagerRevocationChecking() {
+ return trustManagerRevocationChecking;
+ }
+
+ /**
+ * Sets the value of the trustManagerRevocationChecking property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustManagerRevocationChecking(Boolean value) {
+ this.trustManagerRevocationChecking = value;
+ }
+
+ /**
+ * Gets the value of the publicURLPreFix property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPublicURLPreFix() {
+ return publicURLPreFix;
+ }
+
+ /**
+ * Sets the value of the publicURLPreFix property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPublicURLPreFix(String value) {
+ this.publicURLPreFix = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof GeneralConfiguration)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final GeneralConfiguration that = ((GeneralConfiguration) object);
+ {
+ TimeOuts lhsTimeOuts;
+ lhsTimeOuts = this.getTimeOuts();
+ TimeOuts rhsTimeOuts;
+ rhsTimeOuts = that.getTimeOuts();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "timeOuts", lhsTimeOuts), LocatorUtils.property(thatLocator, "timeOuts", rhsTimeOuts), lhsTimeOuts, rhsTimeOuts)) {
+ return false;
+ }
+ }
+ {
+ String lhsAlternativeSourceID;
+ lhsAlternativeSourceID = this.getAlternativeSourceID();
+ String rhsAlternativeSourceID;
+ rhsAlternativeSourceID = that.getAlternativeSourceID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "alternativeSourceID", lhsAlternativeSourceID), LocatorUtils.property(thatLocator, "alternativeSourceID", rhsAlternativeSourceID), lhsAlternativeSourceID, rhsAlternativeSourceID)) {
+ return false;
+ }
+ }
+ {
+ String lhsCertStoreDirectory;
+ lhsCertStoreDirectory = this.getCertStoreDirectory();
+ String rhsCertStoreDirectory;
+ rhsCertStoreDirectory = that.getCertStoreDirectory();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "certStoreDirectory", lhsCertStoreDirectory), LocatorUtils.property(thatLocator, "certStoreDirectory", rhsCertStoreDirectory), lhsCertStoreDirectory, rhsCertStoreDirectory)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsTrustManagerRevocationChecking;
+ lhsTrustManagerRevocationChecking = this.isTrustManagerRevocationChecking();
+ Boolean rhsTrustManagerRevocationChecking;
+ rhsTrustManagerRevocationChecking = that.isTrustManagerRevocationChecking();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustManagerRevocationChecking", lhsTrustManagerRevocationChecking), LocatorUtils.property(thatLocator, "trustManagerRevocationChecking", rhsTrustManagerRevocationChecking), lhsTrustManagerRevocationChecking, rhsTrustManagerRevocationChecking)) {
+ return false;
+ }
+ }
+ {
+ String lhsPublicURLPreFix;
+ lhsPublicURLPreFix = this.getPublicURLPreFix();
+ String rhsPublicURLPreFix;
+ rhsPublicURLPreFix = that.getPublicURLPreFix();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "publicURLPreFix", lhsPublicURLPreFix), LocatorUtils.property(thatLocator, "publicURLPreFix", rhsPublicURLPreFix), lhsPublicURLPreFix, rhsPublicURLPreFix)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ TimeOuts theTimeOuts;
+ theTimeOuts = this.getTimeOuts();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "timeOuts", theTimeOuts), currentHashCode, theTimeOuts);
+ }
+ {
+ String theAlternativeSourceID;
+ theAlternativeSourceID = this.getAlternativeSourceID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "alternativeSourceID", theAlternativeSourceID), currentHashCode, theAlternativeSourceID);
+ }
+ {
+ String theCertStoreDirectory;
+ theCertStoreDirectory = this.getCertStoreDirectory();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "certStoreDirectory", theCertStoreDirectory), currentHashCode, theCertStoreDirectory);
+ }
+ {
+ Boolean theTrustManagerRevocationChecking;
+ theTrustManagerRevocationChecking = this.isTrustManagerRevocationChecking();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustManagerRevocationChecking", theTrustManagerRevocationChecking), currentHashCode, theTrustManagerRevocationChecking);
+ }
+ {
+ String thePublicURLPreFix;
+ thePublicURLPreFix = this.getPublicURLPreFix();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "publicURLPreFix", thePublicURLPreFix), currentHashCode, thePublicURLPreFix);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GenericConfiguration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GenericConfiguration.java
new file mode 100644
index 000000000..bd88f30f9
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/GenericConfiguration.java
@@ -0,0 +1,216 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="name" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="DirectoryCertStoreParameters.RootDir"/>
+ * &lt;enumeration value="AuthenticationSession.TimeOut"/>
+ * &lt;enumeration value="AuthenticationData.TimeOut"/>
+ * &lt;enumeration value="TrustManager.RevocationChecking"/>
+ * &lt;enumeration value="FrontendServlets.EnableHTTPConnection"/>
+ * &lt;enumeration value="FrontendServlets.DataURLPrefix"/>
+ * &lt;enumeration value="AuthenticationServer.KeepAssertion"/>
+ * &lt;enumeration value="AuthenticationServer.WriteAssertionToFile"/>
+ * &lt;enumeration value="AuthenticationServer.SourceID"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+
+
+
+public class GenericConfiguration
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "name", required = true)
+ protected String name;
+ @XmlAttribute(name = "value", required = true)
+ protected String value;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof GenericConfiguration)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final GenericConfiguration that = ((GenericConfiguration) object);
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Header.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Header.java
new file mode 100644
index 000000000..da652019e
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Header.java
@@ -0,0 +1,212 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="Value" use="required" type="{http://www.buergerkarte.at/namespaces/moaconfig#}MOAAuthDataType" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "Header")
+
+
+
+public class Header
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "Name", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String name;
+ @XmlAttribute(name = "Value", required = true)
+ protected MOAAuthDataType value;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link MOAAuthDataType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public MOAAuthDataType getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MOAAuthDataType }
+ *
+ */
+ public void setValue(MOAAuthDataType value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Header)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Header that = ((Header) object);
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ {
+ MOAAuthDataType lhsValue;
+ lhsValue = this.getValue();
+ MOAAuthDataType rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ {
+ MOAAuthDataType theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/HeaderAuth.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/HeaderAuth.java
new file mode 100644
index 000000000..e9ddaf6d3
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/HeaderAuth.java
@@ -0,0 +1,185 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Header" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "header"
+})
+@XmlRootElement(name = "HeaderAuth")
+
+
+
+public class HeaderAuth
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Header", required = true)
+ protected List<Header> header;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the header property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the header property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getHeader().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Header }
+ *
+ *
+ */
+ @OneToMany(targetEntity = Header.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<Header> getHeader() {
+ if (header == null) {
+ header = new ArrayList<Header>();
+ }
+ return this.header;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setHeader(List<Header> header) {
+ this.header = header;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof HeaderAuth)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final HeaderAuth that = ((HeaderAuth) object);
+ {
+ List<Header> lhsHeader;
+ lhsHeader = (((this.header!= null)&&(!this.header.isEmpty()))?this.getHeader():null);
+ List<Header> rhsHeader;
+ rhsHeader = (((that.header!= null)&&(!that.header.isEmpty()))?that.getHeader():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "header", lhsHeader), LocatorUtils.property(thatLocator, "header", rhsHeader), lhsHeader, rhsHeader)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<Header> theHeader;
+ theHeader = (((this.header!= null)&&(!this.header.isEmpty()))?this.getHeader():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "header", theHeader), currentHashCode, theHeader);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentificationNumber.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentificationNumber.java
new file mode 100644
index 000000000..e9a88d7f8
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentificationNumber.java
@@ -0,0 +1,210 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="Value" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "type",
+ "value"
+})
+@XmlRootElement(name = "IdentificationNumber")
+
+
+
+public class IdentificationNumber
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Type", required = true)
+ protected String type;
+ @XmlElement(name = "Value", required = true)
+ protected String value;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof IdentificationNumber)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final IdentificationNumber that = ((IdentificationNumber) object);
+ {
+ String lhsType;
+ lhsType = this.getType();
+ String rhsType;
+ rhsType = that.getType();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "type", lhsType), LocatorUtils.property(thatLocator, "type", rhsType), lhsType, rhsType)) {
+ return false;
+ }
+ }
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theType;
+ theType = this.getType();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "type", theType), currentHashCode, theType);
+ }
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSigners.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSigners.java
new file mode 100644
index 000000000..c48d4522d
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSigners.java
@@ -0,0 +1,209 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="X509SubjectName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "x509SubjectName"
+})
+
+
+
+public class IdentityLinkSigners
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "X509SubjectName", required = true)
+ protected List<String> x509SubjectName;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<IdentityLinkSignersX509SubjectNameItem> x509SubjectNameItems;
+
+ /**
+ * Gets the value of the x509SubjectName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the x509SubjectName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getX509SubjectName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getX509SubjectName() {
+ if (x509SubjectName == null) {
+ x509SubjectName = new ArrayList<String>();
+ }
+ return this.x509SubjectName;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setX509SubjectName(List<String> x509SubjectName) {
+ this.x509SubjectName = x509SubjectName;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = IdentityLinkSignersX509SubjectNameItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<IdentityLinkSignersX509SubjectNameItem> getX509SubjectNameItems() {
+ if (this.x509SubjectNameItems == null) {
+ this.x509SubjectNameItems = new ArrayList<IdentityLinkSignersX509SubjectNameItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.x509SubjectName)) {
+ this.x509SubjectName = ItemUtils.wrap(this.x509SubjectName, this.x509SubjectNameItems, IdentityLinkSignersX509SubjectNameItem.class);
+ }
+ return this.x509SubjectNameItems;
+ }
+
+ public void setX509SubjectNameItems(List<IdentityLinkSignersX509SubjectNameItem> value) {
+ this.x509SubjectName = null;
+ this.x509SubjectNameItems = null;
+ this.x509SubjectNameItems = value;
+ if (this.x509SubjectNameItems == null) {
+ this.x509SubjectNameItems = new ArrayList<IdentityLinkSignersX509SubjectNameItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.x509SubjectName)) {
+ this.x509SubjectName = ItemUtils.wrap(this.x509SubjectName, this.x509SubjectNameItems, IdentityLinkSignersX509SubjectNameItem.class);
+ }
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof IdentityLinkSigners)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final IdentityLinkSigners that = ((IdentityLinkSigners) object);
+ {
+ List<String> lhsX509SubjectName;
+ lhsX509SubjectName = (((this.x509SubjectName!= null)&&(!this.x509SubjectName.isEmpty()))?this.getX509SubjectName():null);
+ List<String> rhsX509SubjectName;
+ rhsX509SubjectName = (((that.x509SubjectName!= null)&&(!that.x509SubjectName.isEmpty()))?that.getX509SubjectName():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "x509SubjectName", lhsX509SubjectName), LocatorUtils.property(thatLocator, "x509SubjectName", rhsX509SubjectName), lhsX509SubjectName, rhsX509SubjectName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<String> theX509SubjectName;
+ theX509SubjectName = (((this.x509SubjectName!= null)&&(!this.x509SubjectName.isEmpty()))?this.getX509SubjectName():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "x509SubjectName", theX509SubjectName), currentHashCode, theX509SubjectName);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSignersX509SubjectNameItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSignersX509SubjectNameItem.java
new file mode 100644
index 000000000..c0679df1c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/IdentityLinkSignersX509SubjectNameItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class IdentityLinkSignersX509SubjectNameItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "X509SubjectName", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InputProcessorType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InputProcessorType.java
new file mode 100644
index 000000000..3752a7754
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InputProcessorType.java
@@ -0,0 +1,206 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for InputProcessorType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InputProcessorType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="template" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InputProcessorType", propOrder = {
+ "value"
+})
+
+
+
+public class InputProcessorType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "template")
+ @XmlSchemaType(name = "anyURI")
+ protected String template;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the template property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTemplate() {
+ return template;
+ }
+
+ /**
+ * Sets the value of the template property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTemplate(String value) {
+ this.template = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof InputProcessorType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final InputProcessorType that = ((InputProcessorType) object);
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ {
+ String lhsTemplate;
+ lhsTemplate = this.getTemplate();
+ String rhsTemplate;
+ rhsTemplate = that.getTemplate();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "template", lhsTemplate), LocatorUtils.property(thatLocator, "template", rhsTemplate), lhsTemplate, rhsTemplate)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ {
+ String theTemplate;
+ theTemplate = this.getTemplate();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "template", theTemplate), currentHashCode, theTemplate);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationGatewayType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationGatewayType.java
new file mode 100644
index 000000000..29069f758
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationGatewayType.java
@@ -0,0 +1,208 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for InterfederationGatewayType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InterfederationGatewayType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="forwardIDPIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="forwardProtocolIdentifer" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InterfederationGatewayType", propOrder = {
+ "forwardIDPIdentifier",
+ "forwardProtocolIdentifer"
+})
+
+
+
+public class InterfederationGatewayType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected String forwardIDPIdentifier;
+ @XmlElement(required = true)
+ protected String forwardProtocolIdentifer;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the forwardIDPIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getForwardIDPIdentifier() {
+ return forwardIDPIdentifier;
+ }
+
+ /**
+ * Sets the value of the forwardIDPIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setForwardIDPIdentifier(String value) {
+ this.forwardIDPIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the forwardProtocolIdentifer property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getForwardProtocolIdentifer() {
+ return forwardProtocolIdentifer;
+ }
+
+ /**
+ * Sets the value of the forwardProtocolIdentifer property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setForwardProtocolIdentifer(String value) {
+ this.forwardProtocolIdentifer = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof InterfederationGatewayType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final InterfederationGatewayType that = ((InterfederationGatewayType) object);
+ {
+ String lhsForwardIDPIdentifier;
+ lhsForwardIDPIdentifier = this.getForwardIDPIdentifier();
+ String rhsForwardIDPIdentifier;
+ rhsForwardIDPIdentifier = that.getForwardIDPIdentifier();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "forwardIDPIdentifier", lhsForwardIDPIdentifier), LocatorUtils.property(thatLocator, "forwardIDPIdentifier", rhsForwardIDPIdentifier), lhsForwardIDPIdentifier, rhsForwardIDPIdentifier)) {
+ return false;
+ }
+ }
+ {
+ String lhsForwardProtocolIdentifer;
+ lhsForwardProtocolIdentifer = this.getForwardProtocolIdentifer();
+ String rhsForwardProtocolIdentifer;
+ rhsForwardProtocolIdentifer = that.getForwardProtocolIdentifer();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "forwardProtocolIdentifer", lhsForwardProtocolIdentifer), LocatorUtils.property(thatLocator, "forwardProtocolIdentifer", rhsForwardProtocolIdentifer), lhsForwardProtocolIdentifer, rhsForwardProtocolIdentifer)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theForwardIDPIdentifier;
+ theForwardIDPIdentifier = this.getForwardIDPIdentifier();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "forwardIDPIdentifier", theForwardIDPIdentifier), currentHashCode, theForwardIDPIdentifier);
+ }
+ {
+ String theForwardProtocolIdentifer;
+ theForwardProtocolIdentifer = this.getForwardProtocolIdentifer();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "forwardProtocolIdentifer", theForwardProtocolIdentifer), currentHashCode, theForwardProtocolIdentifer);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationIDPType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationIDPType.java
new file mode 100644
index 000000000..f6bdb2293
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/InterfederationIDPType.java
@@ -0,0 +1,402 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for InterfederationIDPType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InterfederationIDPType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="attributeQueryURL" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="storeSSOSession" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="performPassivRequest" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="performLocalAuthenticationOnError" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;/sequence>
+ * &lt;attribute name="inboundSSO" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;attribute name="outboundSSO" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InterfederationIDPType", propOrder = {
+ "attributeQueryURL",
+ "storeSSOSession",
+ "performPassivRequest",
+ "performLocalAuthenticationOnError"
+})
+
+
+
+public class InterfederationIDPType
+ implements Serializable, Equals, HashCode
+{
+
+ protected String attributeQueryURL;
+ @XmlElement(required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean storeSSOSession;
+ @XmlElement(required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean performPassivRequest;
+ @XmlElement(required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean performLocalAuthenticationOnError;
+ @XmlAttribute(name = "inboundSSO")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean inboundSSO;
+ @XmlAttribute(name = "outboundSSO")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean outboundSSO;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the attributeQueryURL property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAttributeQueryURL() {
+ return attributeQueryURL;
+ }
+
+ /**
+ * Sets the value of the attributeQueryURL property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAttributeQueryURL(String value) {
+ this.attributeQueryURL = value;
+ }
+
+ /**
+ * Gets the value of the storeSSOSession property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isStoreSSOSession() {
+ return storeSSOSession;
+ }
+
+ /**
+ * Sets the value of the storeSSOSession property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStoreSSOSession(Boolean value) {
+ this.storeSSOSession = value;
+ }
+
+ /**
+ * Gets the value of the performPassivRequest property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isPerformPassivRequest() {
+ return performPassivRequest;
+ }
+
+ /**
+ * Sets the value of the performPassivRequest property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPerformPassivRequest(Boolean value) {
+ this.performPassivRequest = value;
+ }
+
+ /**
+ * Gets the value of the performLocalAuthenticationOnError property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isPerformLocalAuthenticationOnError() {
+ return performLocalAuthenticationOnError;
+ }
+
+ /**
+ * Sets the value of the performLocalAuthenticationOnError property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPerformLocalAuthenticationOnError(Boolean value) {
+ this.performLocalAuthenticationOnError = value;
+ }
+
+ /**
+ * Gets the value of the inboundSSO property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isInboundSSO() {
+ if (inboundSSO == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("true");
+ } else {
+ return inboundSSO;
+ }
+ }
+
+ /**
+ * Sets the value of the inboundSSO property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInboundSSO(Boolean value) {
+ this.inboundSSO = value;
+ }
+
+ /**
+ * Gets the value of the outboundSSO property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isOutboundSSO() {
+ if (outboundSSO == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("true");
+ } else {
+ return outboundSSO;
+ }
+ }
+
+ /**
+ * Sets the value of the outboundSSO property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOutboundSSO(Boolean value) {
+ this.outboundSSO = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof InterfederationIDPType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final InterfederationIDPType that = ((InterfederationIDPType) object);
+ {
+ String lhsAttributeQueryURL;
+ lhsAttributeQueryURL = this.getAttributeQueryURL();
+ String rhsAttributeQueryURL;
+ rhsAttributeQueryURL = that.getAttributeQueryURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "attributeQueryURL", lhsAttributeQueryURL), LocatorUtils.property(thatLocator, "attributeQueryURL", rhsAttributeQueryURL), lhsAttributeQueryURL, rhsAttributeQueryURL)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsStoreSSOSession;
+ lhsStoreSSOSession = this.isStoreSSOSession();
+ Boolean rhsStoreSSOSession;
+ rhsStoreSSOSession = that.isStoreSSOSession();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "storeSSOSession", lhsStoreSSOSession), LocatorUtils.property(thatLocator, "storeSSOSession", rhsStoreSSOSession), lhsStoreSSOSession, rhsStoreSSOSession)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsPerformPassivRequest;
+ lhsPerformPassivRequest = this.isPerformPassivRequest();
+ Boolean rhsPerformPassivRequest;
+ rhsPerformPassivRequest = that.isPerformPassivRequest();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "performPassivRequest", lhsPerformPassivRequest), LocatorUtils.property(thatLocator, "performPassivRequest", rhsPerformPassivRequest), lhsPerformPassivRequest, rhsPerformPassivRequest)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsPerformLocalAuthenticationOnError;
+ lhsPerformLocalAuthenticationOnError = this.isPerformLocalAuthenticationOnError();
+ Boolean rhsPerformLocalAuthenticationOnError;
+ rhsPerformLocalAuthenticationOnError = that.isPerformLocalAuthenticationOnError();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "performLocalAuthenticationOnError", lhsPerformLocalAuthenticationOnError), LocatorUtils.property(thatLocator, "performLocalAuthenticationOnError", rhsPerformLocalAuthenticationOnError), lhsPerformLocalAuthenticationOnError, rhsPerformLocalAuthenticationOnError)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsInboundSSO;
+ lhsInboundSSO = ((this.inboundSSO!= null)?this.isInboundSSO():false);
+ boolean rhsInboundSSO;
+ rhsInboundSSO = ((that.inboundSSO!= null)?that.isInboundSSO():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "inboundSSO", lhsInboundSSO), LocatorUtils.property(thatLocator, "inboundSSO", rhsInboundSSO), lhsInboundSSO, rhsInboundSSO)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsOutboundSSO;
+ lhsOutboundSSO = ((this.outboundSSO!= null)?this.isOutboundSSO():false);
+ boolean rhsOutboundSSO;
+ rhsOutboundSSO = ((that.outboundSSO!= null)?that.isOutboundSSO():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "outboundSSO", lhsOutboundSSO), LocatorUtils.property(thatLocator, "outboundSSO", rhsOutboundSSO), lhsOutboundSSO, rhsOutboundSSO)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theAttributeQueryURL;
+ theAttributeQueryURL = this.getAttributeQueryURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributeQueryURL", theAttributeQueryURL), currentHashCode, theAttributeQueryURL);
+ }
+ {
+ Boolean theStoreSSOSession;
+ theStoreSSOSession = this.isStoreSSOSession();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "storeSSOSession", theStoreSSOSession), currentHashCode, theStoreSSOSession);
+ }
+ {
+ Boolean thePerformPassivRequest;
+ thePerformPassivRequest = this.isPerformPassivRequest();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "performPassivRequest", thePerformPassivRequest), currentHashCode, thePerformPassivRequest);
+ }
+ {
+ Boolean thePerformLocalAuthenticationOnError;
+ thePerformLocalAuthenticationOnError = this.isPerformLocalAuthenticationOnError();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "performLocalAuthenticationOnError", thePerformLocalAuthenticationOnError), currentHashCode, thePerformLocalAuthenticationOnError);
+ }
+ {
+ boolean theInboundSSO;
+ theInboundSSO = ((this.inboundSSO!= null)?this.isInboundSSO():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "inboundSSO", theInboundSSO), currentHashCode, theInboundSSO);
+ }
+ {
+ boolean theOutboundSSO;
+ theOutboundSSO = ((this.outboundSSO!= null)?this.isOutboundSSO():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "outboundSSO", theOutboundSSO), currentHashCode, theOutboundSSO);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyName.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyName.java
new file mode 100644
index 000000000..3eef9cd49
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyName.java
@@ -0,0 +1,206 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "value"
+})
+@XmlRootElement(name = "KeyName")
+
+
+
+public class KeyName
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "password")
+ protected String password;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the password property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Sets the value of the password property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPassword(String value) {
+ this.password = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof KeyName)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final KeyName that = ((KeyName) object);
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ {
+ String lhsPassword;
+ lhsPassword = this.getPassword();
+ String rhsPassword;
+ rhsPassword = that.getPassword();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "password", lhsPassword), LocatorUtils.property(thatLocator, "password", rhsPassword), lhsPassword, rhsPassword)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ {
+ String thePassword;
+ thePassword = this.getPassword();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "password", thePassword), currentHashCode, thePassword);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyStore.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyStore.java
new file mode 100644
index 000000000..f1c0d51f6
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/KeyStore.java
@@ -0,0 +1,208 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>anyURI">
+ * &lt;attribute name="password" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "value"
+})
+@XmlRootElement(name = "KeyStore")
+
+
+
+public class KeyStore
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlValue
+ @XmlSchemaType(name = "anyURI")
+ protected String value;
+ @XmlAttribute(name = "password")
+ protected String password;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the password property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Sets the value of the password property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPassword(String value) {
+ this.password = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof KeyStore)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final KeyStore that = ((KeyStore) object);
+ {
+ String lhsValue;
+ lhsValue = this.getValue();
+ String rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ {
+ String lhsPassword;
+ lhsPassword = this.getPassword();
+ String rhsPassword;
+ rhsPassword = that.getPassword();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "password", lhsPassword), LocatorUtils.property(thatLocator, "password", rhsPassword), lhsPassword, rhsPassword)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ {
+ String thePassword;
+ thePassword = this.getPassword();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "password", thePassword), currentHashCode, thePassword);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowed.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowed.java
new file mode 100644
index 000000000..12a48c88e
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowed.java
@@ -0,0 +1,209 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ProtocolName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "protocolName"
+})
+
+
+
+public class LegacyAllowed
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "ProtocolName")
+ protected List<String> protocolName;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<LegacyAllowedProtocolNameItem> protocolNameItems;
+
+ /**
+ * Gets the value of the protocolName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the protocolName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getProtocolName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getProtocolName() {
+ if (protocolName == null) {
+ protocolName = new ArrayList<String>();
+ }
+ return this.protocolName;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setProtocolName(List<String> protocolName) {
+ this.protocolName = protocolName;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = LegacyAllowedProtocolNameItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<LegacyAllowedProtocolNameItem> getProtocolNameItems() {
+ if (this.protocolNameItems == null) {
+ this.protocolNameItems = new ArrayList<LegacyAllowedProtocolNameItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.protocolName)) {
+ this.protocolName = ItemUtils.wrap(this.protocolName, this.protocolNameItems, LegacyAllowedProtocolNameItem.class);
+ }
+ return this.protocolNameItems;
+ }
+
+ public void setProtocolNameItems(List<LegacyAllowedProtocolNameItem> value) {
+ this.protocolName = null;
+ this.protocolNameItems = null;
+ this.protocolNameItems = value;
+ if (this.protocolNameItems == null) {
+ this.protocolNameItems = new ArrayList<LegacyAllowedProtocolNameItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.protocolName)) {
+ this.protocolName = ItemUtils.wrap(this.protocolName, this.protocolNameItems, LegacyAllowedProtocolNameItem.class);
+ }
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof LegacyAllowed)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final LegacyAllowed that = ((LegacyAllowed) object);
+ {
+ List<String> lhsProtocolName;
+ lhsProtocolName = (((this.protocolName!= null)&&(!this.protocolName.isEmpty()))?this.getProtocolName():null);
+ List<String> rhsProtocolName;
+ rhsProtocolName = (((that.protocolName!= null)&&(!that.protocolName.isEmpty()))?that.getProtocolName():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "protocolName", lhsProtocolName), LocatorUtils.property(thatLocator, "protocolName", rhsProtocolName), lhsProtocolName, rhsProtocolName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<String> theProtocolName;
+ theProtocolName = (((this.protocolName!= null)&&(!this.protocolName.isEmpty()))?this.getProtocolName():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "protocolName", theProtocolName), currentHashCode, theProtocolName);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowedProtocolNameItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowedProtocolNameItem.java
new file mode 100644
index 000000000..91aae9742
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LegacyAllowedProtocolNameItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class LegacyAllowedProtocolNameItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "ProtocolName", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LoginType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LoginType.java
new file mode 100644
index 000000000..5f1c6aa19
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/LoginType.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for LoginType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="LoginType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="stateless"/>
+ * &lt;enumeration value="stateful"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "LoginType")
+@XmlEnum
+public enum LoginType {
+
+ @XmlEnumValue("stateless")
+ STATELESS("stateless"),
+ @XmlEnumValue("stateful")
+ STATEFUL("stateful");
+ private final String value;
+
+ LoginType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static LoginType fromValue(String v) {
+ for (LoginType c: LoginType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAAuthDataType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAAuthDataType.java
new file mode 100644
index 000000000..a1846cfc5
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAAuthDataType.java
@@ -0,0 +1,82 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MOAAuthDataType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="MOAAuthDataType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="MOAGivenName"/>
+ * &lt;enumeration value="MOAFamilyName"/>
+ * &lt;enumeration value="MOADateOfBirth"/>
+ * &lt;enumeration value="MOABPK"/>
+ * &lt;enumeration value="MOAWBPK"/>
+ * &lt;enumeration value="MOAPublicAuthority"/>
+ * &lt;enumeration value="MOABKZ"/>
+ * &lt;enumeration value="MOAQualifiedCertificate"/>
+ * &lt;enumeration value="MOAStammzahl"/>
+ * &lt;enumeration value="MOAIdentificationValueType"/>
+ * &lt;enumeration value="MOAIPAddress"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "MOAAuthDataType")
+@XmlEnum
+public enum MOAAuthDataType {
+
+ @XmlEnumValue("MOAGivenName")
+ MOA_GIVEN_NAME("MOAGivenName"),
+ @XmlEnumValue("MOAFamilyName")
+ MOA_FAMILY_NAME("MOAFamilyName"),
+ @XmlEnumValue("MOADateOfBirth")
+ MOA_DATE_OF_BIRTH("MOADateOfBirth"),
+ MOABPK("MOABPK"),
+ MOAWBPK("MOAWBPK"),
+ @XmlEnumValue("MOAPublicAuthority")
+ MOA_PUBLIC_AUTHORITY("MOAPublicAuthority"),
+ MOABKZ("MOABKZ"),
+ @XmlEnumValue("MOAQualifiedCertificate")
+ MOA_QUALIFIED_CERTIFICATE("MOAQualifiedCertificate"),
+ @XmlEnumValue("MOAStammzahl")
+ MOA_STAMMZAHL("MOAStammzahl"),
+ @XmlEnumValue("MOAIdentificationValueType")
+ MOA_IDENTIFICATION_VALUE_TYPE("MOAIdentificationValueType"),
+ @XmlEnumValue("MOAIPAddress")
+ MOAIP_ADDRESS("MOAIPAddress");
+ private final String value;
+
+ MOAAuthDataType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static MOAAuthDataType fromValue(String v) {
+ for (MOAAuthDataType c: MOAAuthDataType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAIDConfiguration.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAIDConfiguration.java
new file mode 100644
index 000000000..64e4be82b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAIDConfiguration.java
@@ -0,0 +1,684 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.jvnet.hyperjaxb3.xml.bind.annotation.adapters.XMLGregorianCalendarAsDateTime;
+import org.jvnet.hyperjaxb3.xml.bind.annotation.adapters.XmlAdapterUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="AuthComponent_General" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}AuthComponentType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="OnlineApplication" type="{http://www.buergerkarte.at/namespaces/moaconfig#}OnlineApplication" maxOccurs="unbounded"/>
+ * &lt;element name="ChainingModes" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;element name="TrustAnchor">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}X509IssuerSerialType">
+ * &lt;attribute name="mode" use="required" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ChainingModeType" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="systemDefaultMode" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ChainingModeType" default="pkix" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="TrustedCACertificates" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;element name="GenericConfiguration" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="name" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="DirectoryCertStoreParameters.RootDir"/>
+ * &lt;enumeration value="AuthenticationSession.TimeOut"/>
+ * &lt;enumeration value="AuthenticationData.TimeOut"/>
+ * &lt;enumeration value="TrustManager.RevocationChecking"/>
+ * &lt;enumeration value="FrontendServlets.EnableHTTPConnection"/>
+ * &lt;enumeration value="FrontendServlets.DataURLPrefix"/>
+ * &lt;enumeration value="AuthenticationServer.KeepAssertion"/>
+ * &lt;enumeration value="AuthenticationServer.WriteAssertionToFile"/>
+ * &lt;enumeration value="AuthenticationServer.SourceID"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="DefaultBKUs">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="SLRequestTemplates">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="timestamp" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ * &lt;attribute name="pvp2refresh" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "authComponentGeneral",
+ "onlineApplication",
+ "chainingModes",
+ "trustedCACertificates",
+ "genericConfiguration",
+ "defaultBKUs",
+ "slRequestTemplates"
+})
+@XmlRootElement(name = "MOA-IDConfiguration")
+
+
+
+public class MOAIDConfiguration
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "AuthComponent_General")
+ protected AuthComponentGeneral authComponentGeneral;
+ @XmlElement(name = "OnlineApplication", required = true)
+ protected List<OnlineApplication> onlineApplication;
+ @XmlElement(name = "ChainingModes")
+ protected ChainingModes chainingModes;
+ @XmlElement(name = "TrustedCACertificates")
+ @XmlSchemaType(name = "anyURI")
+ protected String trustedCACertificates;
+ @XmlElement(name = "GenericConfiguration")
+ protected List<GenericConfiguration> genericConfiguration;
+ @XmlElement(name = "DefaultBKUs", required = true)
+ protected DefaultBKUs defaultBKUs;
+ @XmlElement(name = "SLRequestTemplates", required = true)
+ protected SLRequestTemplates slRequestTemplates;
+ @XmlAttribute(name = "timestamp")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar timestamp;
+ @XmlAttribute(name = "pvp2refresh")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar pvp2Refresh;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ @XmlTransient
+ protected String eventCodes = null;
+
+
+
+ /**
+ * @return the eventCodes
+ */
+ public String getEventCodes() {
+ return eventCodes;
+ }
+
+ /**
+ * @param eventCodes the eventCodes to set
+ */
+ public void setEventCodes(String eventCodes) {
+ this.eventCodes = eventCodes;
+ }
+
+ /**
+ * Gets the value of the authComponentGeneral property.
+ *
+ * @return
+ * possible object is
+ * {@link AuthComponentGeneral }
+ *
+ */
+ @ManyToOne(targetEntity = AuthComponentGeneral.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public AuthComponentGeneral getAuthComponentGeneral() {
+ return authComponentGeneral;
+ }
+
+ /**
+ * Sets the value of the authComponentGeneral property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AuthComponentGeneral }
+ *
+ */
+ public void setAuthComponentGeneral(AuthComponentGeneral value) {
+ this.authComponentGeneral = value;
+ }
+
+ /**
+ * Gets the value of the onlineApplication property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the onlineApplication property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOnlineApplication().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link OnlineApplication }
+ *
+ *
+ */
+ @OneToMany(targetEntity = OnlineApplication.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<OnlineApplication> getOnlineApplication() {
+ if (onlineApplication == null) {
+ onlineApplication = new ArrayList<OnlineApplication>();
+ }
+ return this.onlineApplication;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setOnlineApplication(List<OnlineApplication> onlineApplication) {
+ this.onlineApplication = onlineApplication;
+ }
+
+ /**
+ * Gets the value of the chainingModes property.
+ *
+ * @return
+ * possible object is
+ * {@link ChainingModes }
+ *
+ */
+ @ManyToOne(targetEntity = ChainingModes.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ChainingModes getChainingModes() {
+ return chainingModes;
+ }
+
+ /**
+ * Sets the value of the chainingModes property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ChainingModes }
+ *
+ */
+ public void setChainingModes(ChainingModes value) {
+ this.chainingModes = value;
+ }
+
+ /**
+ * Gets the value of the trustedCACertificates property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTrustedCACertificates() {
+ return trustedCACertificates;
+ }
+
+ /**
+ * Sets the value of the trustedCACertificates property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustedCACertificates(String value) {
+ this.trustedCACertificates = value;
+ }
+
+ /**
+ * Gets the value of the genericConfiguration property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the genericConfiguration property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getGenericConfiguration().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link GenericConfiguration }
+ *
+ *
+ */
+ @OneToMany(targetEntity = GenericConfiguration.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<GenericConfiguration> getGenericConfiguration() {
+ if (genericConfiguration == null) {
+ genericConfiguration = new ArrayList<GenericConfiguration>();
+ }
+ return this.genericConfiguration;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setGenericConfiguration(List<GenericConfiguration> genericConfiguration) {
+ this.genericConfiguration = genericConfiguration;
+ }
+
+ /**
+ * Gets the value of the defaultBKUs property.
+ *
+ * @return
+ * possible object is
+ * {@link DefaultBKUs }
+ *
+ */
+ @ManyToOne(targetEntity = DefaultBKUs.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public DefaultBKUs getDefaultBKUs() {
+ return defaultBKUs;
+ }
+
+ /**
+ * Sets the value of the defaultBKUs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DefaultBKUs }
+ *
+ */
+ public void setDefaultBKUs(DefaultBKUs value) {
+ this.defaultBKUs = value;
+ }
+
+ /**
+ * Gets the value of the slRequestTemplates property.
+ *
+ * @return
+ * possible object is
+ * {@link SLRequestTemplates }
+ *
+ */
+ @ManyToOne(targetEntity = SLRequestTemplates.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SLRequestTemplates getSLRequestTemplates() {
+ return slRequestTemplates;
+ }
+
+ /**
+ * Sets the value of the slRequestTemplates property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SLRequestTemplates }
+ *
+ */
+ public void setSLRequestTemplates(SLRequestTemplates value) {
+ this.slRequestTemplates = value;
+ }
+
+ /**
+ * Gets the value of the timestamp property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ @Transient
+ public XMLGregorianCalendar getTimestamp() {
+ return timestamp;
+ }
+
+ /**
+ * Sets the value of the timestamp property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setTimestamp(XMLGregorianCalendar value) {
+ this.timestamp = value;
+ }
+
+ /**
+ * Gets the value of the pvp2Refresh property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ @Transient
+ public XMLGregorianCalendar getPvp2Refresh() {
+ return pvp2Refresh;
+ }
+
+ /**
+ * Sets the value of the pvp2Refresh property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setPvp2Refresh(XMLGregorianCalendar value) {
+ this.pvp2Refresh = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+
+
+ @Temporal(TemporalType.TIMESTAMP)
+ public Date getTimestampItem() {
+ return XmlAdapterUtils.unmarshall(XMLGregorianCalendarAsDateTime.class, this.getTimestamp());
+ }
+
+ public void setTimestampItem(Date target) {
+ setTimestamp(XmlAdapterUtils.marshall(XMLGregorianCalendarAsDateTime.class, target));
+ }
+
+
+
+ @Temporal(TemporalType.TIMESTAMP)
+ public Date getPvp2RefreshItem() {
+ return XmlAdapterUtils.unmarshall(XMLGregorianCalendarAsDateTime.class, this.getPvp2Refresh());
+ }
+
+ public void setPvp2RefreshItem(Date target) {
+ setPvp2Refresh(XmlAdapterUtils.marshall(XMLGregorianCalendarAsDateTime.class, target));
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof MOAIDConfiguration)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final MOAIDConfiguration that = ((MOAIDConfiguration) object);
+ {
+ AuthComponentGeneral lhsAuthComponentGeneral;
+ lhsAuthComponentGeneral = this.getAuthComponentGeneral();
+ AuthComponentGeneral rhsAuthComponentGeneral;
+ rhsAuthComponentGeneral = that.getAuthComponentGeneral();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "authComponentGeneral", lhsAuthComponentGeneral), LocatorUtils.property(thatLocator, "authComponentGeneral", rhsAuthComponentGeneral), lhsAuthComponentGeneral, rhsAuthComponentGeneral)) {
+ return false;
+ }
+ }
+ {
+ List<OnlineApplication> lhsOnlineApplication;
+ lhsOnlineApplication = (((this.onlineApplication!= null)&&(!this.onlineApplication.isEmpty()))?this.getOnlineApplication():null);
+ List<OnlineApplication> rhsOnlineApplication;
+ rhsOnlineApplication = (((that.onlineApplication!= null)&&(!that.onlineApplication.isEmpty()))?that.getOnlineApplication():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlineApplication", lhsOnlineApplication), LocatorUtils.property(thatLocator, "onlineApplication", rhsOnlineApplication), lhsOnlineApplication, rhsOnlineApplication)) {
+ return false;
+ }
+ }
+ {
+ ChainingModes lhsChainingModes;
+ lhsChainingModes = this.getChainingModes();
+ ChainingModes rhsChainingModes;
+ rhsChainingModes = that.getChainingModes();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "chainingModes", lhsChainingModes), LocatorUtils.property(thatLocator, "chainingModes", rhsChainingModes), lhsChainingModes, rhsChainingModes)) {
+ return false;
+ }
+ }
+ {
+ String lhsTrustedCACertificates;
+ lhsTrustedCACertificates = this.getTrustedCACertificates();
+ String rhsTrustedCACertificates;
+ rhsTrustedCACertificates = that.getTrustedCACertificates();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustedCACertificates", lhsTrustedCACertificates), LocatorUtils.property(thatLocator, "trustedCACertificates", rhsTrustedCACertificates), lhsTrustedCACertificates, rhsTrustedCACertificates)) {
+ return false;
+ }
+ }
+ {
+ List<GenericConfiguration> lhsGenericConfiguration;
+ lhsGenericConfiguration = (((this.genericConfiguration!= null)&&(!this.genericConfiguration.isEmpty()))?this.getGenericConfiguration():null);
+ List<GenericConfiguration> rhsGenericConfiguration;
+ rhsGenericConfiguration = (((that.genericConfiguration!= null)&&(!that.genericConfiguration.isEmpty()))?that.getGenericConfiguration():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "genericConfiguration", lhsGenericConfiguration), LocatorUtils.property(thatLocator, "genericConfiguration", rhsGenericConfiguration), lhsGenericConfiguration, rhsGenericConfiguration)) {
+ return false;
+ }
+ }
+ {
+ DefaultBKUs lhsDefaultBKUs;
+ lhsDefaultBKUs = this.getDefaultBKUs();
+ DefaultBKUs rhsDefaultBKUs;
+ rhsDefaultBKUs = that.getDefaultBKUs();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "defaultBKUs", lhsDefaultBKUs), LocatorUtils.property(thatLocator, "defaultBKUs", rhsDefaultBKUs), lhsDefaultBKUs, rhsDefaultBKUs)) {
+ return false;
+ }
+ }
+ {
+ SLRequestTemplates lhsSLRequestTemplates;
+ lhsSLRequestTemplates = this.getSLRequestTemplates();
+ SLRequestTemplates rhsSLRequestTemplates;
+ rhsSLRequestTemplates = that.getSLRequestTemplates();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "slRequestTemplates", lhsSLRequestTemplates), LocatorUtils.property(thatLocator, "slRequestTemplates", rhsSLRequestTemplates), lhsSLRequestTemplates, rhsSLRequestTemplates)) {
+ return false;
+ }
+ }
+ {
+ XMLGregorianCalendar lhsTimestamp;
+ lhsTimestamp = this.getTimestamp();
+ XMLGregorianCalendar rhsTimestamp;
+ rhsTimestamp = that.getTimestamp();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "timestamp", lhsTimestamp), LocatorUtils.property(thatLocator, "timestamp", rhsTimestamp), lhsTimestamp, rhsTimestamp)) {
+ return false;
+ }
+ }
+ {
+ XMLGregorianCalendar lhsPvp2Refresh;
+ lhsPvp2Refresh = this.getPvp2Refresh();
+ XMLGregorianCalendar rhsPvp2Refresh;
+ rhsPvp2Refresh = that.getPvp2Refresh();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "pvp2Refresh", lhsPvp2Refresh), LocatorUtils.property(thatLocator, "pvp2Refresh", rhsPvp2Refresh), lhsPvp2Refresh, rhsPvp2Refresh)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ AuthComponentGeneral theAuthComponentGeneral;
+ theAuthComponentGeneral = this.getAuthComponentGeneral();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "authComponentGeneral", theAuthComponentGeneral), currentHashCode, theAuthComponentGeneral);
+ }
+ {
+ List<OnlineApplication> theOnlineApplication;
+ theOnlineApplication = (((this.onlineApplication!= null)&&(!this.onlineApplication.isEmpty()))?this.getOnlineApplication():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlineApplication", theOnlineApplication), currentHashCode, theOnlineApplication);
+ }
+ {
+ ChainingModes theChainingModes;
+ theChainingModes = this.getChainingModes();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "chainingModes", theChainingModes), currentHashCode, theChainingModes);
+ }
+ {
+ String theTrustedCACertificates;
+ theTrustedCACertificates = this.getTrustedCACertificates();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustedCACertificates", theTrustedCACertificates), currentHashCode, theTrustedCACertificates);
+ }
+ {
+ List<GenericConfiguration> theGenericConfiguration;
+ theGenericConfiguration = (((this.genericConfiguration!= null)&&(!this.genericConfiguration.isEmpty()))?this.getGenericConfiguration():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "genericConfiguration", theGenericConfiguration), currentHashCode, theGenericConfiguration);
+ }
+ {
+ DefaultBKUs theDefaultBKUs;
+ theDefaultBKUs = this.getDefaultBKUs();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "defaultBKUs", theDefaultBKUs), currentHashCode, theDefaultBKUs);
+ }
+ {
+ SLRequestTemplates theSLRequestTemplates;
+ theSLRequestTemplates = this.getSLRequestTemplates();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "slRequestTemplates", theSLRequestTemplates), currentHashCode, theSLRequestTemplates);
+ }
+ {
+ XMLGregorianCalendar theTimestamp;
+ theTimestamp = this.getTimestamp();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "timestamp", theTimestamp), currentHashCode, theTimestamp);
+ }
+ {
+ XMLGregorianCalendar thePvp2Refresh;
+ thePvp2Refresh = this.getPvp2Refresh();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "pvp2Refresh", thePvp2Refresh), currentHashCode, thePvp2Refresh);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAKeyBoxSelector.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAKeyBoxSelector.java
new file mode 100644
index 000000000..d69611c95
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOAKeyBoxSelector.java
@@ -0,0 +1,58 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MOAKeyBoxSelector.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="MOAKeyBoxSelector">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="SecureSignatureKeypair"/>
+ * &lt;enumeration value="CertifiedKeypair"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "MOAKeyBoxSelector")
+@XmlEnum
+public enum MOAKeyBoxSelector {
+
+ @XmlEnumValue("SecureSignatureKeypair")
+ SECURE_SIGNATURE_KEYPAIR("SecureSignatureKeypair"),
+ @XmlEnumValue("CertifiedKeypair")
+ CERTIFIED_KEYPAIR("CertifiedKeypair");
+ private final String value;
+
+ MOAKeyBoxSelector(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static MOAKeyBoxSelector fromValue(String v) {
+ for (MOAKeyBoxSelector c: MOAKeyBoxSelector.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOASP.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOASP.java
new file mode 100644
index 000000000..9e2629d42
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MOASP.java
@@ -0,0 +1,281 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType" minOccurs="0"/>
+ * &lt;element name="VerifyIdentityLink">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="VerifyAuthBlock">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;element name="VerifyTransformsInfoProfileID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "connectionParameter",
+ "verifyIdentityLink",
+ "verifyAuthBlock"
+})
+
+
+
+public class MOASP
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "ConnectionParameter")
+ protected ConnectionParameterClientAuthType connectionParameter;
+ @XmlElement(name = "VerifyIdentityLink", required = true)
+ protected VerifyIdentityLink verifyIdentityLink;
+ @XmlElement(name = "VerifyAuthBlock", required = true)
+ protected VerifyAuthBlock verifyAuthBlock;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the connectionParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ @ManyToOne(targetEntity = ConnectionParameterClientAuthType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ConnectionParameterClientAuthType getConnectionParameter() {
+ return connectionParameter;
+ }
+
+ /**
+ * Sets the value of the connectionParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ public void setConnectionParameter(ConnectionParameterClientAuthType value) {
+ this.connectionParameter = value;
+ }
+
+ /**
+ * Gets the value of the verifyIdentityLink property.
+ *
+ * @return
+ * possible object is
+ * {@link VerifyIdentityLink }
+ *
+ */
+ @ManyToOne(targetEntity = VerifyIdentityLink.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public VerifyIdentityLink getVerifyIdentityLink() {
+ return verifyIdentityLink;
+ }
+
+ /**
+ * Sets the value of the verifyIdentityLink property.
+ *
+ * @param value
+ * allowed object is
+ * {@link VerifyIdentityLink }
+ *
+ */
+ public void setVerifyIdentityLink(VerifyIdentityLink value) {
+ this.verifyIdentityLink = value;
+ }
+
+ /**
+ * Gets the value of the verifyAuthBlock property.
+ *
+ * @return
+ * possible object is
+ * {@link VerifyAuthBlock }
+ *
+ */
+ @ManyToOne(targetEntity = VerifyAuthBlock.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public VerifyAuthBlock getVerifyAuthBlock() {
+ return verifyAuthBlock;
+ }
+
+ /**
+ * Sets the value of the verifyAuthBlock property.
+ *
+ * @param value
+ * allowed object is
+ * {@link VerifyAuthBlock }
+ *
+ */
+ public void setVerifyAuthBlock(VerifyAuthBlock value) {
+ this.verifyAuthBlock = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof MOASP)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final MOASP that = ((MOASP) object);
+ {
+ ConnectionParameterClientAuthType lhsConnectionParameter;
+ lhsConnectionParameter = this.getConnectionParameter();
+ ConnectionParameterClientAuthType rhsConnectionParameter;
+ rhsConnectionParameter = that.getConnectionParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "connectionParameter", lhsConnectionParameter), LocatorUtils.property(thatLocator, "connectionParameter", rhsConnectionParameter), lhsConnectionParameter, rhsConnectionParameter)) {
+ return false;
+ }
+ }
+ {
+ VerifyIdentityLink lhsVerifyIdentityLink;
+ lhsVerifyIdentityLink = this.getVerifyIdentityLink();
+ VerifyIdentityLink rhsVerifyIdentityLink;
+ rhsVerifyIdentityLink = that.getVerifyIdentityLink();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "verifyIdentityLink", lhsVerifyIdentityLink), LocatorUtils.property(thatLocator, "verifyIdentityLink", rhsVerifyIdentityLink), lhsVerifyIdentityLink, rhsVerifyIdentityLink)) {
+ return false;
+ }
+ }
+ {
+ VerifyAuthBlock lhsVerifyAuthBlock;
+ lhsVerifyAuthBlock = this.getVerifyAuthBlock();
+ VerifyAuthBlock rhsVerifyAuthBlock;
+ rhsVerifyAuthBlock = that.getVerifyAuthBlock();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "verifyAuthBlock", lhsVerifyAuthBlock), LocatorUtils.property(thatLocator, "verifyAuthBlock", rhsVerifyAuthBlock), lhsVerifyAuthBlock, rhsVerifyAuthBlock)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ ConnectionParameterClientAuthType theConnectionParameter;
+ theConnectionParameter = this.getConnectionParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "connectionParameter", theConnectionParameter), currentHashCode, theConnectionParameter);
+ }
+ {
+ VerifyIdentityLink theVerifyIdentityLink;
+ theVerifyIdentityLink = this.getVerifyIdentityLink();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "verifyIdentityLink", theVerifyIdentityLink), currentHashCode, theVerifyIdentityLink);
+ }
+ {
+ VerifyAuthBlock theVerifyAuthBlock;
+ theVerifyAuthBlock = this.getVerifyAuthBlock();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "verifyAuthBlock", theVerifyAuthBlock), currentHashCode, theVerifyAuthBlock);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Mandates.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Mandates.java
new file mode 100644
index 000000000..247be940c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Mandates.java
@@ -0,0 +1,254 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Profiles" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="ProfileName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "profiles",
+ "profileName"
+})
+
+
+
+public class Mandates
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Profiles", required = true)
+ protected String profiles;
+ @XmlElement(name = "ProfileName")
+ protected List<String> profileName;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<MandatesProfileNameItem> profileNameItems;
+
+ /**
+ * Gets the value of the profiles property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getProfiles() {
+ return profiles;
+ }
+
+ /**
+ * Sets the value of the profiles property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProfiles(String value) {
+ this.profiles = value;
+ }
+
+ /**
+ * Gets the value of the profileName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the profileName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getProfileName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getProfileName() {
+ if (profileName == null) {
+ profileName = new ArrayList<String>();
+ }
+ return this.profileName;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setProfileName(List<String> profileName) {
+ this.profileName = profileName;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = MandatesProfileNameItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<MandatesProfileNameItem> getProfileNameItems() {
+ if (this.profileNameItems == null) {
+ this.profileNameItems = new ArrayList<MandatesProfileNameItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.profileName)) {
+ this.profileName = ItemUtils.wrap(this.profileName, this.profileNameItems, MandatesProfileNameItem.class);
+ }
+ return this.profileNameItems;
+ }
+
+ public void setProfileNameItems(List<MandatesProfileNameItem> value) {
+ this.profileName = null;
+ this.profileNameItems = null;
+ this.profileNameItems = value;
+ if (this.profileNameItems == null) {
+ this.profileNameItems = new ArrayList<MandatesProfileNameItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.profileName)) {
+ this.profileName = ItemUtils.wrap(this.profileName, this.profileNameItems, MandatesProfileNameItem.class);
+ }
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Mandates)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Mandates that = ((Mandates) object);
+ {
+ String lhsProfiles;
+ lhsProfiles = this.getProfiles();
+ String rhsProfiles;
+ rhsProfiles = that.getProfiles();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "profiles", lhsProfiles), LocatorUtils.property(thatLocator, "profiles", rhsProfiles), lhsProfiles, rhsProfiles)) {
+ return false;
+ }
+ }
+ {
+ List<String> lhsProfileName;
+ lhsProfileName = (((this.profileName!= null)&&(!this.profileName.isEmpty()))?this.getProfileName():null);
+ List<String> rhsProfileName;
+ rhsProfileName = (((that.profileName!= null)&&(!that.profileName.isEmpty()))?that.getProfileName():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "profileName", lhsProfileName), LocatorUtils.property(thatLocator, "profileName", rhsProfileName), lhsProfileName, rhsProfileName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theProfiles;
+ theProfiles = this.getProfiles();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "profiles", theProfiles), currentHashCode, theProfiles);
+ }
+ {
+ List<String> theProfileName;
+ theProfileName = (((this.profileName!= null)&&(!this.profileName.isEmpty()))?this.getProfileName():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "profileName", theProfileName), currentHashCode, theProfileName);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MandatesProfileNameItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MandatesProfileNameItem.java
new file mode 100644
index 000000000..0ef09c0dc
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/MandatesProfileNameItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class MandatesProfileNameItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "ProfileName", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAOAUTH20.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAOAUTH20.java
new file mode 100644
index 000000000..8b533c5ff
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAOAUTH20.java
@@ -0,0 +1,254 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="oAuthClientId" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="oAuthClientSecret" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="oAuthRedirectUri" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "oAuthClientId",
+ "oAuthClientSecret",
+ "oAuthRedirectUri"
+})
+@XmlRootElement(name = "OA_OAUTH20")
+
+
+
+public class OAOAUTH20
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected String oAuthClientId;
+ @XmlElement(required = true)
+ protected String oAuthClientSecret;
+ @XmlElement(required = true)
+ protected String oAuthRedirectUri;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the oAuthClientId property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOAuthClientId() {
+ return oAuthClientId;
+ }
+
+ /**
+ * Sets the value of the oAuthClientId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOAuthClientId(String value) {
+ this.oAuthClientId = value;
+ }
+
+ /**
+ * Gets the value of the oAuthClientSecret property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOAuthClientSecret() {
+ return oAuthClientSecret;
+ }
+
+ /**
+ * Sets the value of the oAuthClientSecret property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOAuthClientSecret(String value) {
+ this.oAuthClientSecret = value;
+ }
+
+ /**
+ * Gets the value of the oAuthRedirectUri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOAuthRedirectUri() {
+ return oAuthRedirectUri;
+ }
+
+ /**
+ * Sets the value of the oAuthRedirectUri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOAuthRedirectUri(String value) {
+ this.oAuthRedirectUri = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OAOAUTH20)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OAOAUTH20 that = ((OAOAUTH20) object);
+ {
+ String lhsOAuthClientId;
+ lhsOAuthClientId = this.getOAuthClientId();
+ String rhsOAuthClientId;
+ rhsOAuthClientId = that.getOAuthClientId();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oAuthClientId", lhsOAuthClientId), LocatorUtils.property(thatLocator, "oAuthClientId", rhsOAuthClientId), lhsOAuthClientId, rhsOAuthClientId)) {
+ return false;
+ }
+ }
+ {
+ String lhsOAuthClientSecret;
+ lhsOAuthClientSecret = this.getOAuthClientSecret();
+ String rhsOAuthClientSecret;
+ rhsOAuthClientSecret = that.getOAuthClientSecret();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oAuthClientSecret", lhsOAuthClientSecret), LocatorUtils.property(thatLocator, "oAuthClientSecret", rhsOAuthClientSecret), lhsOAuthClientSecret, rhsOAuthClientSecret)) {
+ return false;
+ }
+ }
+ {
+ String lhsOAuthRedirectUri;
+ lhsOAuthRedirectUri = this.getOAuthRedirectUri();
+ String rhsOAuthRedirectUri;
+ rhsOAuthRedirectUri = that.getOAuthRedirectUri();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oAuthRedirectUri", lhsOAuthRedirectUri), LocatorUtils.property(thatLocator, "oAuthRedirectUri", rhsOAuthRedirectUri), lhsOAuthRedirectUri, rhsOAuthRedirectUri)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theOAuthClientId;
+ theOAuthClientId = this.getOAuthClientId();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oAuthClientId", theOAuthClientId), currentHashCode, theOAuthClientId);
+ }
+ {
+ String theOAuthClientSecret;
+ theOAuthClientSecret = this.getOAuthClientSecret();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oAuthClientSecret", theOAuthClientSecret), currentHashCode, theOAuthClientSecret);
+ }
+ {
+ String theOAuthRedirectUri;
+ theOAuthRedirectUri = this.getOAuthRedirectUri();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oAuthRedirectUri", theOAuthRedirectUri), currentHashCode, theOAuthRedirectUri);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAPVP2.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAPVP2.java
new file mode 100644
index 000000000..d5cee7b83
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAPVP2.java
@@ -0,0 +1,274 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.jvnet.hyperjaxb3.xml.bind.annotation.adapters.XMLGregorianCalendarAsDateTime;
+import org.jvnet.hyperjaxb3.xml.bind.annotation.adapters.XmlAdapterUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="metadataURL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="certificate" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="updateRequired" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "metadataURL",
+ "certificate",
+ "updateRequired"
+})
+@XmlRootElement(name = "OA_PVP2")
+
+
+
+public class OAPVP2
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String metadataURL;
+ @XmlElement(required = true)
+ protected byte[] certificate;
+ @XmlElement(required = true)
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar updateRequired;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the metadataURL property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getMetadataURL() {
+ return metadataURL;
+ }
+
+ /**
+ * Sets the value of the metadataURL property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMetadataURL(String value) {
+ this.metadataURL = value;
+ }
+
+ /**
+ * Gets the value of the certificate property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+
+
+ @Lob
+ public byte[] getCertificate() {
+ return certificate;
+ }
+
+ /**
+ * Sets the value of the certificate property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setCertificate(byte[] value) {
+ this.certificate = value;
+ }
+
+ /**
+ * Gets the value of the updateRequired property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ @Transient
+ public XMLGregorianCalendar getUpdateRequired() {
+ return updateRequired;
+ }
+
+ /**
+ * Sets the value of the updateRequired property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setUpdateRequired(XMLGregorianCalendar value) {
+ this.updateRequired = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+
+
+ @Temporal(TemporalType.TIMESTAMP)
+ public Date getUpdateRequiredItem() {
+ return XmlAdapterUtils.unmarshall(XMLGregorianCalendarAsDateTime.class, this.getUpdateRequired());
+ }
+
+ public void setUpdateRequiredItem(Date target) {
+ setUpdateRequired(XmlAdapterUtils.marshall(XMLGregorianCalendarAsDateTime.class, target));
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OAPVP2)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OAPVP2 that = ((OAPVP2) object);
+ {
+ String lhsMetadataURL;
+ lhsMetadataURL = this.getMetadataURL();
+ String rhsMetadataURL;
+ rhsMetadataURL = that.getMetadataURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "metadataURL", lhsMetadataURL), LocatorUtils.property(thatLocator, "metadataURL", rhsMetadataURL), lhsMetadataURL, rhsMetadataURL)) {
+ return false;
+ }
+ }
+ {
+ byte[] lhsCertificate;
+ lhsCertificate = this.getCertificate();
+ byte[] rhsCertificate;
+ rhsCertificate = that.getCertificate();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "certificate", lhsCertificate), LocatorUtils.property(thatLocator, "certificate", rhsCertificate), lhsCertificate, rhsCertificate)) {
+ return false;
+ }
+ }
+ {
+ XMLGregorianCalendar lhsUpdateRequired;
+ lhsUpdateRequired = this.getUpdateRequired();
+ XMLGregorianCalendar rhsUpdateRequired;
+ rhsUpdateRequired = that.getUpdateRequired();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "updateRequired", lhsUpdateRequired), LocatorUtils.property(thatLocator, "updateRequired", rhsUpdateRequired), lhsUpdateRequired, rhsUpdateRequired)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theMetadataURL;
+ theMetadataURL = this.getMetadataURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "metadataURL", theMetadataURL), currentHashCode, theMetadataURL);
+ }
+ {
+ byte[] theCertificate;
+ theCertificate = this.getCertificate();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "certificate", theCertificate), currentHashCode, theCertificate);
+ }
+ {
+ XMLGregorianCalendar theUpdateRequired;
+ theUpdateRequired = this.getUpdateRequired();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "updateRequired", theUpdateRequired), currentHashCode, theUpdateRequired);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASAML1.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASAML1.java
new file mode 100644
index 000000000..b8ebf5e48
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASAML1.java
@@ -0,0 +1,580 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.math.BigInteger;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="provideStammzahl" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="provideAUTHBlock" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="provideIdentityLink" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="provideCertificate" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="provideFullMandatorData" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="useCondition" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="conditionLength" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
+ * &lt;element name="sourceID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="provideAllErrors" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "isActive",
+ "provideStammzahl",
+ "provideAUTHBlock",
+ "provideIdentityLink",
+ "provideCertificate",
+ "provideFullMandatorData",
+ "useCondition",
+ "conditionLength",
+ "sourceID",
+ "provideAllErrors"
+})
+@XmlRootElement(name = "OA_SAML1")
+
+
+
+public class OASAML1
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isActive;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean provideStammzahl;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean provideAUTHBlock;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean provideIdentityLink;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean provideCertificate;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean provideFullMandatorData;
+ @XmlElement(type = String.class)
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean useCondition;
+ protected BigInteger conditionLength;
+ protected String sourceID;
+ @XmlElement(type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean provideAllErrors;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsActive() {
+ return isActive;
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the provideStammzahl property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isProvideStammzahl() {
+ return provideStammzahl;
+ }
+
+ /**
+ * Sets the value of the provideStammzahl property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProvideStammzahl(Boolean value) {
+ this.provideStammzahl = value;
+ }
+
+ /**
+ * Gets the value of the provideAUTHBlock property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isProvideAUTHBlock() {
+ return provideAUTHBlock;
+ }
+
+ /**
+ * Sets the value of the provideAUTHBlock property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProvideAUTHBlock(Boolean value) {
+ this.provideAUTHBlock = value;
+ }
+
+ /**
+ * Gets the value of the provideIdentityLink property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isProvideIdentityLink() {
+ return provideIdentityLink;
+ }
+
+ /**
+ * Sets the value of the provideIdentityLink property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProvideIdentityLink(Boolean value) {
+ this.provideIdentityLink = value;
+ }
+
+ /**
+ * Gets the value of the provideCertificate property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isProvideCertificate() {
+ return provideCertificate;
+ }
+
+ /**
+ * Sets the value of the provideCertificate property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProvideCertificate(Boolean value) {
+ this.provideCertificate = value;
+ }
+
+ /**
+ * Gets the value of the provideFullMandatorData property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isProvideFullMandatorData() {
+ return provideFullMandatorData;
+ }
+
+ /**
+ * Sets the value of the provideFullMandatorData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProvideFullMandatorData(Boolean value) {
+ this.provideFullMandatorData = value;
+ }
+
+ /**
+ * Gets the value of the useCondition property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isUseCondition() {
+ return useCondition;
+ }
+
+ /**
+ * Sets the value of the useCondition property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUseCondition(Boolean value) {
+ this.useCondition = value;
+ }
+
+ /**
+ * Gets the value of the conditionLength property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+
+
+ public BigInteger getConditionLength() {
+ return conditionLength;
+ }
+
+ /**
+ * Sets the value of the conditionLength property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setConditionLength(BigInteger value) {
+ this.conditionLength = value;
+ }
+
+ /**
+ * Gets the value of the sourceID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getSourceID() {
+ return sourceID;
+ }
+
+ /**
+ * Sets the value of the sourceID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSourceID(String value) {
+ this.sourceID = value;
+ }
+
+ /**
+ * Gets the value of the provideAllErrors property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isProvideAllErrors() {
+ return provideAllErrors;
+ }
+
+ /**
+ * Sets the value of the provideAllErrors property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setProvideAllErrors(Boolean value) {
+ this.provideAllErrors = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OASAML1)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OASAML1 that = ((OASAML1) object);
+ {
+ Boolean lhsIsActive;
+ lhsIsActive = this.isIsActive();
+ Boolean rhsIsActive;
+ rhsIsActive = that.isIsActive();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isActive", lhsIsActive), LocatorUtils.property(thatLocator, "isActive", rhsIsActive), lhsIsActive, rhsIsActive)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsProvideStammzahl;
+ lhsProvideStammzahl = this.isProvideStammzahl();
+ Boolean rhsProvideStammzahl;
+ rhsProvideStammzahl = that.isProvideStammzahl();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "provideStammzahl", lhsProvideStammzahl), LocatorUtils.property(thatLocator, "provideStammzahl", rhsProvideStammzahl), lhsProvideStammzahl, rhsProvideStammzahl)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsProvideAUTHBlock;
+ lhsProvideAUTHBlock = this.isProvideAUTHBlock();
+ Boolean rhsProvideAUTHBlock;
+ rhsProvideAUTHBlock = that.isProvideAUTHBlock();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "provideAUTHBlock", lhsProvideAUTHBlock), LocatorUtils.property(thatLocator, "provideAUTHBlock", rhsProvideAUTHBlock), lhsProvideAUTHBlock, rhsProvideAUTHBlock)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsProvideIdentityLink;
+ lhsProvideIdentityLink = this.isProvideIdentityLink();
+ Boolean rhsProvideIdentityLink;
+ rhsProvideIdentityLink = that.isProvideIdentityLink();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "provideIdentityLink", lhsProvideIdentityLink), LocatorUtils.property(thatLocator, "provideIdentityLink", rhsProvideIdentityLink), lhsProvideIdentityLink, rhsProvideIdentityLink)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsProvideCertificate;
+ lhsProvideCertificate = this.isProvideCertificate();
+ Boolean rhsProvideCertificate;
+ rhsProvideCertificate = that.isProvideCertificate();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "provideCertificate", lhsProvideCertificate), LocatorUtils.property(thatLocator, "provideCertificate", rhsProvideCertificate), lhsProvideCertificate, rhsProvideCertificate)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsProvideFullMandatorData;
+ lhsProvideFullMandatorData = this.isProvideFullMandatorData();
+ Boolean rhsProvideFullMandatorData;
+ rhsProvideFullMandatorData = that.isProvideFullMandatorData();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "provideFullMandatorData", lhsProvideFullMandatorData), LocatorUtils.property(thatLocator, "provideFullMandatorData", rhsProvideFullMandatorData), lhsProvideFullMandatorData, rhsProvideFullMandatorData)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsUseCondition;
+ lhsUseCondition = this.isUseCondition();
+ Boolean rhsUseCondition;
+ rhsUseCondition = that.isUseCondition();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "useCondition", lhsUseCondition), LocatorUtils.property(thatLocator, "useCondition", rhsUseCondition), lhsUseCondition, rhsUseCondition)) {
+ return false;
+ }
+ }
+ {
+ BigInteger lhsConditionLength;
+ lhsConditionLength = this.getConditionLength();
+ BigInteger rhsConditionLength;
+ rhsConditionLength = that.getConditionLength();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "conditionLength", lhsConditionLength), LocatorUtils.property(thatLocator, "conditionLength", rhsConditionLength), lhsConditionLength, rhsConditionLength)) {
+ return false;
+ }
+ }
+ {
+ String lhsSourceID;
+ lhsSourceID = this.getSourceID();
+ String rhsSourceID;
+ rhsSourceID = that.getSourceID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "sourceID", lhsSourceID), LocatorUtils.property(thatLocator, "sourceID", rhsSourceID), lhsSourceID, rhsSourceID)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsProvideAllErrors;
+ lhsProvideAllErrors = this.isProvideAllErrors();
+ Boolean rhsProvideAllErrors;
+ rhsProvideAllErrors = that.isProvideAllErrors();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "provideAllErrors", lhsProvideAllErrors), LocatorUtils.property(thatLocator, "provideAllErrors", rhsProvideAllErrors), lhsProvideAllErrors, rhsProvideAllErrors)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ Boolean theIsActive;
+ theIsActive = this.isIsActive();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isActive", theIsActive), currentHashCode, theIsActive);
+ }
+ {
+ Boolean theProvideStammzahl;
+ theProvideStammzahl = this.isProvideStammzahl();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "provideStammzahl", theProvideStammzahl), currentHashCode, theProvideStammzahl);
+ }
+ {
+ Boolean theProvideAUTHBlock;
+ theProvideAUTHBlock = this.isProvideAUTHBlock();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "provideAUTHBlock", theProvideAUTHBlock), currentHashCode, theProvideAUTHBlock);
+ }
+ {
+ Boolean theProvideIdentityLink;
+ theProvideIdentityLink = this.isProvideIdentityLink();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "provideIdentityLink", theProvideIdentityLink), currentHashCode, theProvideIdentityLink);
+ }
+ {
+ Boolean theProvideCertificate;
+ theProvideCertificate = this.isProvideCertificate();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "provideCertificate", theProvideCertificate), currentHashCode, theProvideCertificate);
+ }
+ {
+ Boolean theProvideFullMandatorData;
+ theProvideFullMandatorData = this.isProvideFullMandatorData();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "provideFullMandatorData", theProvideFullMandatorData), currentHashCode, theProvideFullMandatorData);
+ }
+ {
+ Boolean theUseCondition;
+ theUseCondition = this.isUseCondition();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "useCondition", theUseCondition), currentHashCode, theUseCondition);
+ }
+ {
+ BigInteger theConditionLength;
+ theConditionLength = this.getConditionLength();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "conditionLength", theConditionLength), currentHashCode, theConditionLength);
+ }
+ {
+ String theSourceID;
+ theSourceID = this.getSourceID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "sourceID", theSourceID), currentHashCode, theSourceID);
+ }
+ {
+ Boolean theProvideAllErrors;
+ theProvideAllErrors = this.isProvideAllErrors();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "provideAllErrors", theProvideAllErrors), currentHashCode, theProvideAllErrors);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASSO.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASSO.java
new file mode 100644
index 000000000..0768c1cc7
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASSO.java
@@ -0,0 +1,260 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="UseSSO" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="AuthDataFrame" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="SingleLogOutURL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "useSSO",
+ "authDataFrame",
+ "singleLogOutURL"
+})
+
+
+
+public class OASSO
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "UseSSO", required = true, type = String.class)
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean useSSO;
+ @XmlElement(name = "AuthDataFrame", required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean authDataFrame;
+ @XmlElement(name = "SingleLogOutURL", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String singleLogOutURL;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the useSSO property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isUseSSO() {
+ return useSSO;
+ }
+
+ /**
+ * Sets the value of the useSSO property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUseSSO(Boolean value) {
+ this.useSSO = value;
+ }
+
+ /**
+ * Gets the value of the authDataFrame property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isAuthDataFrame() {
+ return authDataFrame;
+ }
+
+ /**
+ * Sets the value of the authDataFrame property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAuthDataFrame(Boolean value) {
+ this.authDataFrame = value;
+ }
+
+ /**
+ * Gets the value of the singleLogOutURL property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getSingleLogOutURL() {
+ return singleLogOutURL;
+ }
+
+ /**
+ * Sets the value of the singleLogOutURL property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSingleLogOutURL(String value) {
+ this.singleLogOutURL = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OASSO)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OASSO that = ((OASSO) object);
+ {
+ Boolean lhsUseSSO;
+ lhsUseSSO = this.isUseSSO();
+ Boolean rhsUseSSO;
+ rhsUseSSO = that.isUseSSO();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "useSSO", lhsUseSSO), LocatorUtils.property(thatLocator, "useSSO", rhsUseSSO), lhsUseSSO, rhsUseSSO)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsAuthDataFrame;
+ lhsAuthDataFrame = this.isAuthDataFrame();
+ Boolean rhsAuthDataFrame;
+ rhsAuthDataFrame = that.isAuthDataFrame();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "authDataFrame", lhsAuthDataFrame), LocatorUtils.property(thatLocator, "authDataFrame", rhsAuthDataFrame), lhsAuthDataFrame, rhsAuthDataFrame)) {
+ return false;
+ }
+ }
+ {
+ String lhsSingleLogOutURL;
+ lhsSingleLogOutURL = this.getSingleLogOutURL();
+ String rhsSingleLogOutURL;
+ rhsSingleLogOutURL = that.getSingleLogOutURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "singleLogOutURL", lhsSingleLogOutURL), LocatorUtils.property(thatLocator, "singleLogOutURL", rhsSingleLogOutURL), lhsSingleLogOutURL, rhsSingleLogOutURL)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ Boolean theUseSSO;
+ theUseSSO = this.isUseSSO();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "useSSO", theUseSSO), currentHashCode, theUseSSO);
+ }
+ {
+ Boolean theAuthDataFrame;
+ theAuthDataFrame = this.isAuthDataFrame();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "authDataFrame", theAuthDataFrame), currentHashCode, theAuthDataFrame);
+ }
+ {
+ String theSingleLogOutURL;
+ theSingleLogOutURL = this.getSingleLogOutURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "singleLogOutURL", theSingleLogOutURL), currentHashCode, theSingleLogOutURL);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASTORK.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASTORK.java
new file mode 100644
index 000000000..397fd828b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OASTORK.java
@@ -0,0 +1,495 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="StorkLogonEnabled" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Qaa" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OAAttributes" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="VidpEnabled" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}AttributeProviders" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="requireConsent" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}C-PEPS" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "storkLogonEnabled",
+ "qaa",
+ "oaAttributes",
+ "vidpEnabled",
+ "attributeProviders",
+ "requireConsent",
+ "cpeps"
+})
+@XmlRootElement(name = "OA_STORK")
+
+
+
+public class OASTORK
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "StorkLogonEnabled", required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean storkLogonEnabled;
+ @XmlElement(name = "Qaa")
+ protected Integer qaa;
+ @XmlElement(name = "OAAttributes")
+ protected List<OAStorkAttribute> oaAttributes;
+ @XmlElement(name = "VidpEnabled", required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean vidpEnabled;
+ @XmlElement(name = "AttributeProviders")
+ protected List<AttributeProviderPlugin> attributeProviders;
+ @XmlElement(required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean requireConsent;
+ @XmlElement(name = "C-PEPS", required = true)
+ protected List<CPEPS> cpeps;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the storkLogonEnabled property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isStorkLogonEnabled() {
+ return storkLogonEnabled;
+ }
+
+ /**
+ * Sets the value of the storkLogonEnabled property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStorkLogonEnabled(Boolean value) {
+ this.storkLogonEnabled = value;
+ }
+
+ /**
+ * Gets the value of the qaa property.
+ *
+ * @return
+ * possible object is
+ * {@link Integer }
+ *
+ */
+
+
+ public Integer getQaa() {
+ return qaa;
+ }
+
+ /**
+ * Sets the value of the qaa property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Integer }
+ *
+ */
+ public void setQaa(Integer value) {
+ this.qaa = value;
+ }
+
+ /**
+ * Gets the value of the oaAttributes property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the oaAttributes property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOAAttributes().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link OAStorkAttribute }
+ *
+ *
+ */
+ @OneToMany(targetEntity = OAStorkAttribute.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<OAStorkAttribute> getOAAttributes() {
+ if (oaAttributes == null) {
+ oaAttributes = new ArrayList<OAStorkAttribute>();
+ }
+ return this.oaAttributes;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setOAAttributes(List<OAStorkAttribute> oaAttributes) {
+ this.oaAttributes = oaAttributes;
+ }
+
+ /**
+ * Gets the value of the vidpEnabled property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isVidpEnabled() {
+ return vidpEnabled;
+ }
+
+ /**
+ * Sets the value of the vidpEnabled property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setVidpEnabled(Boolean value) {
+ this.vidpEnabled = value;
+ }
+
+ /**
+ * Gets the value of the attributeProviders property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attributeProviders property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttributeProviders().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AttributeProviderPlugin }
+ *
+ *
+ */
+ @OneToMany(targetEntity = AttributeProviderPlugin.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<AttributeProviderPlugin> getAttributeProviders() {
+ if (attributeProviders == null) {
+ attributeProviders = new ArrayList<AttributeProviderPlugin>();
+ }
+ return this.attributeProviders;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setAttributeProviders(List<AttributeProviderPlugin> attributeProviders) {
+ this.attributeProviders = attributeProviders;
+ }
+
+ /**
+ * Gets the value of the requireConsent property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isRequireConsent() {
+ return requireConsent;
+ }
+
+ /**
+ * Sets the value of the requireConsent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRequireConsent(Boolean value) {
+ this.requireConsent = value;
+ }
+
+ /**
+ * Gets the value of the cpeps property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the cpeps property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCPEPS().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CPEPS }
+ *
+ *
+ */
+ @ManyToMany(targetEntity = CPEPS.class, cascade = {
+ CascadeType.ALL
+ })
+ @JoinTable(name = "OASTORK_CPEPS_CPEPS", joinColumns = {
+
+ }, inverseJoinColumns = {
+
+ })
+ public List<CPEPS> getCPEPS() {
+ if (cpeps == null) {
+ cpeps = new ArrayList<CPEPS>();
+ }
+ return this.cpeps;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setCPEPS(List<CPEPS> cpeps) {
+ this.cpeps = cpeps;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OASTORK)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OASTORK that = ((OASTORK) object);
+ {
+ Boolean lhsStorkLogonEnabled;
+ lhsStorkLogonEnabled = this.isStorkLogonEnabled();
+ Boolean rhsStorkLogonEnabled;
+ rhsStorkLogonEnabled = that.isStorkLogonEnabled();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "storkLogonEnabled", lhsStorkLogonEnabled), LocatorUtils.property(thatLocator, "storkLogonEnabled", rhsStorkLogonEnabled), lhsStorkLogonEnabled, rhsStorkLogonEnabled)) {
+ return false;
+ }
+ }
+ {
+ Integer lhsQaa;
+ lhsQaa = this.getQaa();
+ Integer rhsQaa;
+ rhsQaa = that.getQaa();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "qaa", lhsQaa), LocatorUtils.property(thatLocator, "qaa", rhsQaa), lhsQaa, rhsQaa)) {
+ return false;
+ }
+ }
+ {
+ List<OAStorkAttribute> lhsOAAttributes;
+ lhsOAAttributes = (((this.oaAttributes!= null)&&(!this.oaAttributes.isEmpty()))?this.getOAAttributes():null);
+ List<OAStorkAttribute> rhsOAAttributes;
+ rhsOAAttributes = (((that.oaAttributes!= null)&&(!that.oaAttributes.isEmpty()))?that.getOAAttributes():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oaAttributes", lhsOAAttributes), LocatorUtils.property(thatLocator, "oaAttributes", rhsOAAttributes), lhsOAAttributes, rhsOAAttributes)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsVidpEnabled;
+ lhsVidpEnabled = this.isVidpEnabled();
+ Boolean rhsVidpEnabled;
+ rhsVidpEnabled = that.isVidpEnabled();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "vidpEnabled", lhsVidpEnabled), LocatorUtils.property(thatLocator, "vidpEnabled", rhsVidpEnabled), lhsVidpEnabled, rhsVidpEnabled)) {
+ return false;
+ }
+ }
+ {
+ List<AttributeProviderPlugin> lhsAttributeProviders;
+ lhsAttributeProviders = (((this.attributeProviders!= null)&&(!this.attributeProviders.isEmpty()))?this.getAttributeProviders():null);
+ List<AttributeProviderPlugin> rhsAttributeProviders;
+ rhsAttributeProviders = (((that.attributeProviders!= null)&&(!that.attributeProviders.isEmpty()))?that.getAttributeProviders():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "attributeProviders", lhsAttributeProviders), LocatorUtils.property(thatLocator, "attributeProviders", rhsAttributeProviders), lhsAttributeProviders, rhsAttributeProviders)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsRequireConsent;
+ lhsRequireConsent = this.isRequireConsent();
+ Boolean rhsRequireConsent;
+ rhsRequireConsent = that.isRequireConsent();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "requireConsent", lhsRequireConsent), LocatorUtils.property(thatLocator, "requireConsent", rhsRequireConsent), lhsRequireConsent, rhsRequireConsent)) {
+ return false;
+ }
+ }
+ {
+ List<CPEPS> lhsCPEPS;
+ lhsCPEPS = (((this.cpeps!= null)&&(!this.cpeps.isEmpty()))?this.getCPEPS():null);
+ List<CPEPS> rhsCPEPS;
+ rhsCPEPS = (((that.cpeps!= null)&&(!that.cpeps.isEmpty()))?that.getCPEPS():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "cpeps", lhsCPEPS), LocatorUtils.property(thatLocator, "cpeps", rhsCPEPS), lhsCPEPS, rhsCPEPS)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ Boolean theStorkLogonEnabled;
+ theStorkLogonEnabled = this.isStorkLogonEnabled();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "storkLogonEnabled", theStorkLogonEnabled), currentHashCode, theStorkLogonEnabled);
+ }
+ {
+ Integer theQaa;
+ theQaa = this.getQaa();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "qaa", theQaa), currentHashCode, theQaa);
+ }
+ {
+ List<OAStorkAttribute> theOAAttributes;
+ theOAAttributes = (((this.oaAttributes!= null)&&(!this.oaAttributes.isEmpty()))?this.getOAAttributes():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oaAttributes", theOAAttributes), currentHashCode, theOAAttributes);
+ }
+ {
+ Boolean theVidpEnabled;
+ theVidpEnabled = this.isVidpEnabled();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "vidpEnabled", theVidpEnabled), currentHashCode, theVidpEnabled);
+ }
+ {
+ List<AttributeProviderPlugin> theAttributeProviders;
+ theAttributeProviders = (((this.attributeProviders!= null)&&(!this.attributeProviders.isEmpty()))?this.getAttributeProviders():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributeProviders", theAttributeProviders), currentHashCode, theAttributeProviders);
+ }
+ {
+ Boolean theRequireConsent;
+ theRequireConsent = this.isRequireConsent();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "requireConsent", theRequireConsent), currentHashCode, theRequireConsent);
+ }
+ {
+ List<CPEPS> theCPEPS;
+ theCPEPS = (((this.cpeps!= null)&&(!this.cpeps.isEmpty()))?this.getCPEPS():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "cpeps", theCPEPS), currentHashCode, theCPEPS);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAStorkAttribute.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAStorkAttribute.java
new file mode 100644
index 000000000..628c7f7b4
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAStorkAttribute.java
@@ -0,0 +1,213 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for OAStorkAttribute complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OAStorkAttribute">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="mandatory" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OAStorkAttribute", propOrder = {
+ "mandatory",
+ "name"
+})
+
+
+
+public class OAStorkAttribute
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true, type = String.class)
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean mandatory;
+ @XmlElement(required = true)
+ protected String name;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the mandatory property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isMandatory() {
+ return mandatory;
+ }
+
+ /**
+ * Sets the value of the mandatory property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMandatory(Boolean value) {
+ this.mandatory = value;
+ }
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OAStorkAttribute)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OAStorkAttribute that = ((OAStorkAttribute) object);
+ {
+ Boolean lhsMandatory;
+ lhsMandatory = this.isMandatory();
+ Boolean rhsMandatory;
+ rhsMandatory = that.isMandatory();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mandatory", lhsMandatory), LocatorUtils.property(thatLocator, "mandatory", rhsMandatory), lhsMandatory, rhsMandatory)) {
+ return false;
+ }
+ }
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ Boolean theMandatory;
+ theMandatory = this.isMandatory();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mandatory", theMandatory), currentHashCode, theMandatory);
+ }
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAuth.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAuth.java
new file mode 100644
index 000000000..fbfe6dfa5
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OAuth.java
@@ -0,0 +1,168 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+
+
+
+public class OAuth
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "isActive")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isActive;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isIsActive() {
+ if (isActive == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("true");
+ } else {
+ return isActive;
+ }
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OAuth)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OAuth that = ((OAuth) object);
+ {
+ boolean lhsIsActive;
+ lhsIsActive = ((this.isActive!= null)?this.isIsActive():false);
+ boolean rhsIsActive;
+ rhsIsActive = ((that.isActive!= null)?that.isIsActive():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isActive", lhsIsActive), LocatorUtils.property(thatLocator, "isActive", rhsIsActive), lhsIsActive, rhsIsActive)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ boolean theIsActive;
+ theIsActive = ((this.isActive!= null)?this.isIsActive():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isActive", theIsActive), currentHashCode, theIsActive);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ObjectFactory.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ObjectFactory.java
new file mode 100644
index 000000000..577de1706
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ObjectFactory.java
@@ -0,0 +1,757 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.gv.egovernment.moa.id.commons.db.dao.config.deprecated package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _EnableInfoboxValidator_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "EnableInfoboxValidator");
+ private final static QName _AlwaysShowForm_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "AlwaysShowForm");
+ private final static QName _AbstractSimpleIdentification_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "AbstractSimpleIdentification");
+ private final static QName _QualityAuthenticationAssuranceLevel_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "QualityAuthenticationAssuranceLevel");
+ private final static QName _Attributes_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "Attributes");
+ private final static QName _AttributeProviders_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "AttributeProviders");
+ private final static QName _OAAttributes_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "OAAttributes");
+ private final static QName _AttributeValue_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "AttributeValue");
+ private final static QName _CompatibilityMode_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "CompatibilityMode");
+ private final static QName _TrustProfileID_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "TrustProfileID");
+ private final static QName _Qaa_QNAME = new QName("http://www.buergerkarte.at/namespaces/moaconfig#", "Qaa");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egovernment.moa.id.commons.db.dao.config.deprecated
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link StorkAttribute }
+ *
+ */
+ public StorkAttribute createStorkAttribute() {
+ return new StorkAttribute();
+ }
+
+ /**
+ * Create an instance of {@link CPEPS }
+ *
+ */
+ public CPEPS createCPEPS() {
+ return new CPEPS();
+ }
+
+ /**
+ * Create an instance of {@link OASTORK }
+ *
+ */
+ public OASTORK createOASTORK() {
+ return new OASTORK();
+ }
+
+ /**
+ * Create an instance of {@link OAStorkAttribute }
+ *
+ */
+ public OAStorkAttribute createOAStorkAttribute() {
+ return new OAStorkAttribute();
+ }
+
+ /**
+ * Create an instance of {@link AttributeProviderPlugin }
+ *
+ */
+ public AttributeProviderPlugin createAttributeProviderPlugin() {
+ return new AttributeProviderPlugin();
+ }
+
+ /**
+ * Create an instance of {@link OAPVP2 }
+ *
+ */
+ public OAPVP2 createOAPVP2() {
+ return new OAPVP2();
+ }
+
+ /**
+ * Create an instance of {@link Header }
+ *
+ */
+ public Header createHeader() {
+ return new Header();
+ }
+
+ /**
+ * Create an instance of {@link Parameter }
+ *
+ */
+ public Parameter createParameter() {
+ return new Parameter();
+ }
+
+ /**
+ * Create an instance of {@link EncBPKInformation }
+ *
+ */
+ public EncBPKInformation createEncBPKInformation() {
+ return new EncBPKInformation();
+ }
+
+ /**
+ * Create an instance of {@link BPKDecryption }
+ *
+ */
+ public BPKDecryption createBPKDecryption() {
+ return new BPKDecryption();
+ }
+
+ /**
+ * Create an instance of {@link BPKEncryption }
+ *
+ */
+ public BPKEncryption createBPKEncryption() {
+ return new BPKEncryption();
+ }
+
+ /**
+ * Create an instance of {@link MOAIDConfiguration }
+ *
+ */
+ public MOAIDConfiguration createMOAIDConfiguration() {
+ return new MOAIDConfiguration();
+ }
+
+ /**
+ * Create an instance of {@link AuthComponentGeneral }
+ *
+ */
+ public AuthComponentGeneral createAuthComponentGeneral() {
+ return new AuthComponentGeneral();
+ }
+
+ /**
+ * Create an instance of {@link OnlineApplication }
+ *
+ */
+ public OnlineApplication createOnlineApplication() {
+ return new OnlineApplication();
+ }
+
+ /**
+ * Create an instance of {@link ChainingModes }
+ *
+ */
+ public ChainingModes createChainingModes() {
+ return new ChainingModes();
+ }
+
+ /**
+ * Create an instance of {@link GenericConfiguration }
+ *
+ */
+ public GenericConfiguration createGenericConfiguration() {
+ return new GenericConfiguration();
+ }
+
+ /**
+ * Create an instance of {@link DefaultBKUs }
+ *
+ */
+ public DefaultBKUs createDefaultBKUs() {
+ return new DefaultBKUs();
+ }
+
+ /**
+ * Create an instance of {@link SLRequestTemplates }
+ *
+ */
+ public SLRequestTemplates createSLRequestTemplates() {
+ return new SLRequestTemplates();
+ }
+
+ /**
+ * Create an instance of {@link GeneralConfiguration }
+ *
+ */
+ public GeneralConfiguration createGeneralConfiguration() {
+ return new GeneralConfiguration();
+ }
+
+ /**
+ * Create an instance of {@link TimeOuts }
+ *
+ */
+ public TimeOuts createTimeOuts() {
+ return new TimeOuts();
+ }
+
+ /**
+ * Create an instance of {@link Contact }
+ *
+ */
+ public Contact createContact() {
+ return new Contact();
+ }
+
+ /**
+ * Create an instance of {@link ParamAuth }
+ *
+ */
+ public ParamAuth createParamAuth() {
+ return new ParamAuth();
+ }
+
+ /**
+ * Create an instance of {@link Configuration }
+ *
+ */
+ public Configuration createConfiguration() {
+ return new Configuration();
+ }
+
+ /**
+ * Create an instance of {@link BasicAuth }
+ *
+ */
+ public BasicAuth createBasicAuth() {
+ return new BasicAuth();
+ }
+
+ /**
+ * Create an instance of {@link HeaderAuth }
+ *
+ */
+ public HeaderAuth createHeaderAuth() {
+ return new HeaderAuth();
+ }
+
+ /**
+ * Create an instance of {@link OAOAUTH20 }
+ *
+ */
+ public OAOAUTH20 createOAOAUTH20() {
+ return new OAOAUTH20();
+ }
+
+ /**
+ * Create an instance of {@link SAMLSigningParameter }
+ *
+ */
+ public SAMLSigningParameter createSAMLSigningParameter() {
+ return new SAMLSigningParameter();
+ }
+
+ /**
+ * Create an instance of {@link SignatureCreationParameterType }
+ *
+ */
+ public SignatureCreationParameterType createSignatureCreationParameterType() {
+ return new SignatureCreationParameterType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureVerificationParameterType }
+ *
+ */
+ public SignatureVerificationParameterType createSignatureVerificationParameterType() {
+ return new SignatureVerificationParameterType();
+ }
+
+ /**
+ * Create an instance of {@link OASAML1 }
+ *
+ */
+ public OASAML1 createOASAML1() {
+ return new OASAML1();
+ }
+
+ /**
+ * Create an instance of {@link IdentificationNumber }
+ *
+ */
+ public IdentificationNumber createIdentificationNumber() {
+ return new IdentificationNumber();
+ }
+
+ /**
+ * Create an instance of {@link KeyStore }
+ *
+ */
+ public KeyStore createKeyStore() {
+ return new KeyStore();
+ }
+
+ /**
+ * Create an instance of {@link STORK }
+ *
+ */
+ public STORK createSTORK() {
+ return new STORK();
+ }
+
+ /**
+ * Create an instance of {@link KeyName }
+ *
+ */
+ public KeyName createKeyName() {
+ return new KeyName();
+ }
+
+ /**
+ * Create an instance of {@link X509IssuerSerialType }
+ *
+ */
+ public X509IssuerSerialType createX509IssuerSerialType() {
+ return new X509IssuerSerialType();
+ }
+
+ /**
+ * Create an instance of {@link TemplateType }
+ *
+ */
+ public TemplateType createTemplateType() {
+ return new TemplateType();
+ }
+
+ /**
+ * Create an instance of {@link ConnectionParameterClientAuthType }
+ *
+ */
+ public ConnectionParameterClientAuthType createConnectionParameterClientAuthType() {
+ return new ConnectionParameterClientAuthType();
+ }
+
+ /**
+ * Create an instance of {@link BKUSelectionCustomizationType }
+ *
+ */
+ public BKUSelectionCustomizationType createBKUSelectionCustomizationType() {
+ return new BKUSelectionCustomizationType();
+ }
+
+ /**
+ * Create an instance of {@link PartyRepresentativeType }
+ *
+ */
+ public PartyRepresentativeType createPartyRepresentativeType() {
+ return new PartyRepresentativeType();
+ }
+
+ /**
+ * Create an instance of {@link AuthComponentType }
+ *
+ */
+ public AuthComponentType createAuthComponentType() {
+ return new AuthComponentType();
+ }
+
+ /**
+ * Create an instance of {@link TemplatesType }
+ *
+ */
+ public TemplatesType createTemplatesType() {
+ return new TemplatesType();
+ }
+
+ /**
+ * Create an instance of {@link OnlineApplicationType }
+ *
+ */
+ public OnlineApplicationType createOnlineApplicationType() {
+ return new OnlineApplicationType();
+ }
+
+ /**
+ * Create an instance of {@link TransformsInfoType }
+ *
+ */
+ public TransformsInfoType createTransformsInfoType() {
+ return new TransformsInfoType();
+ }
+
+ /**
+ * Create an instance of {@link InterfederationIDPType }
+ *
+ */
+ public InterfederationIDPType createInterfederationIDPType() {
+ return new InterfederationIDPType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyInfoboxesType }
+ *
+ */
+ public VerifyInfoboxesType createVerifyInfoboxesType() {
+ return new VerifyInfoboxesType();
+ }
+
+ /**
+ * Create an instance of {@link AbstractSimpleIdentificationType }
+ *
+ */
+ public AbstractSimpleIdentificationType createAbstractSimpleIdentificationType() {
+ return new AbstractSimpleIdentificationType();
+ }
+
+ /**
+ * Create an instance of {@link SchemaLocationType }
+ *
+ */
+ public SchemaLocationType createSchemaLocationType() {
+ return new SchemaLocationType();
+ }
+
+ /**
+ * Create an instance of {@link ConnectionParameterServerAuthType }
+ *
+ */
+ public ConnectionParameterServerAuthType createConnectionParameterServerAuthType() {
+ return new ConnectionParameterServerAuthType();
+ }
+
+ /**
+ * Create an instance of {@link PartyRepresentationType }
+ *
+ */
+ public PartyRepresentationType createPartyRepresentationType() {
+ return new PartyRepresentationType();
+ }
+
+ /**
+ * Create an instance of {@link UserDatabase }
+ *
+ */
+ public UserDatabase createUserDatabase() {
+ return new UserDatabase();
+ }
+
+ /**
+ * Create an instance of {@link InputProcessorType }
+ *
+ */
+ public InputProcessorType createInputProcessorType() {
+ return new InputProcessorType();
+ }
+
+ /**
+ * Create an instance of {@link InterfederationGatewayType }
+ *
+ */
+ public InterfederationGatewayType createInterfederationGatewayType() {
+ return new InterfederationGatewayType();
+ }
+
+ /**
+ * Create an instance of {@link Schema }
+ *
+ */
+ public Schema createSchema() {
+ return new Schema();
+ }
+
+ /**
+ * Create an instance of {@link DefaultTrustProfile }
+ *
+ */
+ public DefaultTrustProfile createDefaultTrustProfile() {
+ return new DefaultTrustProfile();
+ }
+
+ /**
+ * Create an instance of {@link AuthComponentOA }
+ *
+ */
+ public AuthComponentOA createAuthComponentOA() {
+ return new AuthComponentOA();
+ }
+
+ /**
+ * Create an instance of {@link BKUURLS }
+ *
+ */
+ public BKUURLS createBKUURLS() {
+ return new BKUURLS();
+ }
+
+ /**
+ * Create an instance of {@link Mandates }
+ *
+ */
+ public Mandates createMandates() {
+ return new Mandates();
+ }
+
+ /**
+ * Create an instance of {@link TestCredentials }
+ *
+ */
+ public TestCredentials createTestCredentials() {
+ return new TestCredentials();
+ }
+
+ /**
+ * Create an instance of {@link OASSO }
+ *
+ */
+ public OASSO createOASSO() {
+ return new OASSO();
+ }
+
+ /**
+ * Create an instance of {@link Protocols }
+ *
+ */
+ public Protocols createProtocols() {
+ return new Protocols();
+ }
+
+ /**
+ * Create an instance of {@link SSO }
+ *
+ */
+ public SSO createSSO() {
+ return new SSO();
+ }
+
+ /**
+ * Create an instance of {@link SecurityLayer }
+ *
+ */
+ public SecurityLayer createSecurityLayer() {
+ return new SecurityLayer();
+ }
+
+ /**
+ * Create an instance of {@link MOASP }
+ *
+ */
+ public MOASP createMOASP() {
+ return new MOASP();
+ }
+
+ /**
+ * Create an instance of {@link IdentityLinkSigners }
+ *
+ */
+ public IdentityLinkSigners createIdentityLinkSigners() {
+ return new IdentityLinkSigners();
+ }
+
+ /**
+ * Create an instance of {@link ForeignIdentities }
+ *
+ */
+ public ForeignIdentities createForeignIdentities() {
+ return new ForeignIdentities();
+ }
+
+ /**
+ * Create an instance of {@link OnlineMandates }
+ *
+ */
+ public OnlineMandates createOnlineMandates() {
+ return new OnlineMandates();
+ }
+
+ /**
+ * Create an instance of {@link VerifyIdentityLink }
+ *
+ */
+ public VerifyIdentityLink createVerifyIdentityLink() {
+ return new VerifyIdentityLink();
+ }
+
+ /**
+ * Create an instance of {@link VerifyAuthBlock }
+ *
+ */
+ public VerifyAuthBlock createVerifyAuthBlock() {
+ return new VerifyAuthBlock();
+ }
+
+ /**
+ * Create an instance of {@link SAML1 }
+ *
+ */
+ public SAML1 createSAML1() {
+ return new SAML1();
+ }
+
+ /**
+ * Create an instance of {@link PVP2 }
+ *
+ */
+ public PVP2 createPVP2() {
+ return new PVP2();
+ }
+
+ /**
+ * Create an instance of {@link OAuth }
+ *
+ */
+ public OAuth createOAuth() {
+ return new OAuth();
+ }
+
+ /**
+ * Create an instance of {@link LegacyAllowed }
+ *
+ */
+ public LegacyAllowed createLegacyAllowed() {
+ return new LegacyAllowed();
+ }
+
+ /**
+ * Create an instance of {@link Organization }
+ *
+ */
+ public Organization createOrganization() {
+ return new Organization();
+ }
+
+ /**
+ * Create an instance of {@link ClientKeyStore }
+ *
+ */
+ public ClientKeyStore createClientKeyStore() {
+ return new ClientKeyStore();
+ }
+
+ /**
+ * Create an instance of {@link TrustAnchor }
+ *
+ */
+ public TrustAnchor createTrustAnchor() {
+ return new TrustAnchor();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Boolean }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "EnableInfoboxValidator", defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ public JAXBElement<Boolean> createEnableInfoboxValidator(Boolean value) {
+ return new JAXBElement<Boolean>(_EnableInfoboxValidator_QNAME, Boolean.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Boolean }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "AlwaysShowForm", defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ public JAXBElement<Boolean> createAlwaysShowForm(Boolean value) {
+ return new JAXBElement<Boolean>(_AlwaysShowForm_QNAME, Boolean.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeProviderPlugin }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "AbstractSimpleIdentification")
+ public JAXBElement<AttributeProviderPlugin> createAbstractSimpleIdentification(AttributeProviderPlugin value) {
+ return new JAXBElement<AttributeProviderPlugin>(_AbstractSimpleIdentification_QNAME, AttributeProviderPlugin.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "QualityAuthenticationAssuranceLevel")
+ public JAXBElement<Integer> createQualityAuthenticationAssuranceLevel(Integer value) {
+ return new JAXBElement<Integer>(_QualityAuthenticationAssuranceLevel_QNAME, Integer.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link StorkAttribute }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "Attributes")
+ public JAXBElement<StorkAttribute> createAttributes(StorkAttribute value) {
+ return new JAXBElement<StorkAttribute>(_Attributes_QNAME, StorkAttribute.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeProviderPlugin }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "AttributeProviders")
+ public JAXBElement<AttributeProviderPlugin> createAttributeProviders(AttributeProviderPlugin value) {
+ return new JAXBElement<AttributeProviderPlugin>(_AttributeProviders_QNAME, AttributeProviderPlugin.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link OAStorkAttribute }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "OAAttributes")
+ public JAXBElement<OAStorkAttribute> createOAAttributes(OAStorkAttribute value) {
+ return new JAXBElement<OAStorkAttribute>(_OAAttributes_QNAME, OAStorkAttribute.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "AttributeValue")
+ public JAXBElement<Object> createAttributeValue(Object value) {
+ return new JAXBElement<Object>(_AttributeValue_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Boolean }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "CompatibilityMode", defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ public JAXBElement<Boolean> createCompatibilityMode(Boolean value) {
+ return new JAXBElement<Boolean>(_CompatibilityMode_QNAME, Boolean.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "TrustProfileID")
+ public JAXBElement<String> createTrustProfileID(String value) {
+ return new JAXBElement<String>(_TrustProfileID_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", name = "Qaa")
+ public JAXBElement<Integer> createQaa(Integer value) {
+ return new JAXBElement<Integer>(_Qaa_QNAME, Integer.class, null, value);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplication.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplication.java
new file mode 100644
index 000000000..6a838c261
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplication.java
@@ -0,0 +1,545 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for OnlineApplication complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OnlineApplication">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}OnlineApplicationType">
+ * &lt;attribute name="publicURLPrefix" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="keyBoxIdentifier" type="{http://www.buergerkarte.at/namespaces/moaconfig#}MOAKeyBoxSelector" default="SecureSignatureKeypair" />
+ * &lt;attribute name="type" default="publicService">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}NMTOKEN">
+ * &lt;enumeration value="businessService"/>
+ * &lt;enumeration value="publicService"/>
+ * &lt;enumeration value="storkService"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="calculateHPI" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;attribute name="friendlyName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="target" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="targetFriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="storkSPTargetCountry" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="removeBPKFromAuthBlock" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OnlineApplication")
+
+
+public class OnlineApplication
+ extends OnlineApplicationType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "publicURLPrefix", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String publicURLPrefix;
+ @XmlAttribute(name = "keyBoxIdentifier")
+ protected MOAKeyBoxSelector keyBoxIdentifier;
+ @XmlAttribute(name = "type")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String type;
+ @XmlAttribute(name = "calculateHPI")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean calculateHPI;
+ @XmlAttribute(name = "friendlyName")
+ protected String friendlyName;
+ @XmlAttribute(name = "target")
+ protected String target;
+ @XmlAttribute(name = "targetFriendlyName")
+ protected String targetFriendlyName;
+ @XmlAttribute(name = "storkSPTargetCountry")
+ protected String storkSPTargetCountry;
+ @XmlAttribute(name = "removeBPKFromAuthBlock")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean removeBPKFromAuthBlock;
+
+ @XmlTransient
+ protected Boolean isRevisionsLogActive = false;
+
+ @XmlTransient
+ protected String eventCodes = null;
+
+
+ /**
+ * @return the isRevisionsLogActive
+ */
+ public Boolean getIsRevisionsLogActive() {
+ return isRevisionsLogActive;
+ }
+
+ /**
+ * @param isRevisionsLogActive the isRevisionsLogActive to set
+ */
+ public void setIsRevisionsLogActive(Boolean isRevisionsLogActive) {
+ this.isRevisionsLogActive = isRevisionsLogActive;
+ }
+
+ /**
+ * @return the eventCodes
+ */
+ public String getEventCodes() {
+ return eventCodes;
+ }
+
+ /**
+ * @param eventCodes the eventCodes to set
+ */
+ public void setEventCodes(String eventCodes) {
+ this.eventCodes = eventCodes;
+ }
+
+ /**
+ * Gets the value of the publicURLPrefix property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPublicURLPrefix() {
+ return publicURLPrefix;
+ }
+
+ /**
+ * Sets the value of the publicURLPrefix property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPublicURLPrefix(String value) {
+ this.publicURLPrefix = value;
+ }
+
+ /**
+ * Gets the value of the keyBoxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link MOAKeyBoxSelector }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public MOAKeyBoxSelector getKeyBoxIdentifier() {
+ if (keyBoxIdentifier == null) {
+ return MOAKeyBoxSelector.SECURE_SIGNATURE_KEYPAIR;
+ } else {
+ return keyBoxIdentifier;
+ }
+ }
+
+ /**
+ * Sets the value of the keyBoxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MOAKeyBoxSelector }
+ *
+ */
+ public void setKeyBoxIdentifier(MOAKeyBoxSelector value) {
+ this.keyBoxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getType() {
+ if (type == null) {
+ return "publicService";
+ } else {
+ return type;
+ }
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ /**
+ * Gets the value of the calculateHPI property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isCalculateHPI() {
+ if (calculateHPI == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("false");
+ } else {
+ return calculateHPI;
+ }
+ }
+
+ /**
+ * Sets the value of the calculateHPI property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCalculateHPI(Boolean value) {
+ this.calculateHPI = value;
+ }
+
+ /**
+ * Gets the value of the friendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ /**
+ * Sets the value of the friendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFriendlyName(String value) {
+ this.friendlyName = value;
+ }
+
+ /**
+ * Gets the value of the target property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * Sets the value of the target property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTarget(String value) {
+ this.target = value;
+ }
+
+ /**
+ * Gets the value of the targetFriendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTargetFriendlyName() {
+ return targetFriendlyName;
+ }
+
+ /**
+ * Sets the value of the targetFriendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTargetFriendlyName(String value) {
+ this.targetFriendlyName = value;
+ }
+
+ /**
+ * Gets the value of the storkSPTargetCountry property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getStorkSPTargetCountry() {
+ return storkSPTargetCountry;
+ }
+
+ /**
+ * Sets the value of the storkSPTargetCountry property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStorkSPTargetCountry(String value) {
+ this.storkSPTargetCountry = value;
+ }
+
+ /**
+ * Gets the value of the removeBPKFromAuthBlock property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isRemoveBPKFromAuthBlock() {
+ if (removeBPKFromAuthBlock == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("false");
+ } else {
+ return removeBPKFromAuthBlock;
+ }
+ }
+
+ /**
+ * Sets the value of the removeBPKFromAuthBlock property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRemoveBPKFromAuthBlock(Boolean value) {
+ this.removeBPKFromAuthBlock = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OnlineApplication)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ if (!super.equals(thisLocator, thatLocator, object, strategy)) {
+ return false;
+ }
+ final OnlineApplication that = ((OnlineApplication) object);
+ {
+ String lhsPublicURLPrefix;
+ lhsPublicURLPrefix = this.getPublicURLPrefix();
+ String rhsPublicURLPrefix;
+ rhsPublicURLPrefix = that.getPublicURLPrefix();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "publicURLPrefix", lhsPublicURLPrefix), LocatorUtils.property(thatLocator, "publicURLPrefix", rhsPublicURLPrefix), lhsPublicURLPrefix, rhsPublicURLPrefix)) {
+ return false;
+ }
+ }
+ {
+ MOAKeyBoxSelector lhsKeyBoxIdentifier;
+ lhsKeyBoxIdentifier = this.getKeyBoxIdentifier();
+ MOAKeyBoxSelector rhsKeyBoxIdentifier;
+ rhsKeyBoxIdentifier = that.getKeyBoxIdentifier();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "keyBoxIdentifier", lhsKeyBoxIdentifier), LocatorUtils.property(thatLocator, "keyBoxIdentifier", rhsKeyBoxIdentifier), lhsKeyBoxIdentifier, rhsKeyBoxIdentifier)) {
+ return false;
+ }
+ }
+ {
+ String lhsType;
+ lhsType = this.getType();
+ String rhsType;
+ rhsType = that.getType();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "type", lhsType), LocatorUtils.property(thatLocator, "type", rhsType), lhsType, rhsType)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsCalculateHPI;
+ lhsCalculateHPI = ((this.calculateHPI!= null)?this.isCalculateHPI():false);
+ boolean rhsCalculateHPI;
+ rhsCalculateHPI = ((that.calculateHPI!= null)?that.isCalculateHPI():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "calculateHPI", lhsCalculateHPI), LocatorUtils.property(thatLocator, "calculateHPI", rhsCalculateHPI), lhsCalculateHPI, rhsCalculateHPI)) {
+ return false;
+ }
+ }
+ {
+ String lhsFriendlyName;
+ lhsFriendlyName = this.getFriendlyName();
+ String rhsFriendlyName;
+ rhsFriendlyName = that.getFriendlyName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "friendlyName", lhsFriendlyName), LocatorUtils.property(thatLocator, "friendlyName", rhsFriendlyName), lhsFriendlyName, rhsFriendlyName)) {
+ return false;
+ }
+ }
+ {
+ String lhsTarget;
+ lhsTarget = this.getTarget();
+ String rhsTarget;
+ rhsTarget = that.getTarget();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "target", lhsTarget), LocatorUtils.property(thatLocator, "target", rhsTarget), lhsTarget, rhsTarget)) {
+ return false;
+ }
+ }
+ {
+ String lhsTargetFriendlyName;
+ lhsTargetFriendlyName = this.getTargetFriendlyName();
+ String rhsTargetFriendlyName;
+ rhsTargetFriendlyName = that.getTargetFriendlyName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "targetFriendlyName", lhsTargetFriendlyName), LocatorUtils.property(thatLocator, "targetFriendlyName", rhsTargetFriendlyName), lhsTargetFriendlyName, rhsTargetFriendlyName)) {
+ return false;
+ }
+ }
+ {
+ String lhsStorkSPTargetCountry;
+ lhsStorkSPTargetCountry = this.getStorkSPTargetCountry();
+ String rhsStorkSPTargetCountry;
+ rhsStorkSPTargetCountry = that.getStorkSPTargetCountry();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "storkSPTargetCountry", lhsStorkSPTargetCountry), LocatorUtils.property(thatLocator, "storkSPTargetCountry", rhsStorkSPTargetCountry), lhsStorkSPTargetCountry, rhsStorkSPTargetCountry)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsRemoveBPKFromAuthBlock;
+ lhsRemoveBPKFromAuthBlock = ((this.removeBPKFromAuthBlock!= null)?this.isRemoveBPKFromAuthBlock():false);
+ boolean rhsRemoveBPKFromAuthBlock;
+ rhsRemoveBPKFromAuthBlock = ((that.removeBPKFromAuthBlock!= null)?that.isRemoveBPKFromAuthBlock():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "removeBPKFromAuthBlock", lhsRemoveBPKFromAuthBlock), LocatorUtils.property(thatLocator, "removeBPKFromAuthBlock", rhsRemoveBPKFromAuthBlock), lhsRemoveBPKFromAuthBlock, rhsRemoveBPKFromAuthBlock)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = super.hashCode(locator, strategy);
+ {
+ String thePublicURLPrefix;
+ thePublicURLPrefix = this.getPublicURLPrefix();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "publicURLPrefix", thePublicURLPrefix), currentHashCode, thePublicURLPrefix);
+ }
+ {
+ MOAKeyBoxSelector theKeyBoxIdentifier;
+ theKeyBoxIdentifier = this.getKeyBoxIdentifier();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "keyBoxIdentifier", theKeyBoxIdentifier), currentHashCode, theKeyBoxIdentifier);
+ }
+ {
+ String theType;
+ theType = this.getType();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "type", theType), currentHashCode, theType);
+ }
+ {
+ boolean theCalculateHPI;
+ theCalculateHPI = ((this.calculateHPI!= null)?this.isCalculateHPI():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "calculateHPI", theCalculateHPI), currentHashCode, theCalculateHPI);
+ }
+ {
+ String theFriendlyName;
+ theFriendlyName = this.getFriendlyName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "friendlyName", theFriendlyName), currentHashCode, theFriendlyName);
+ }
+ {
+ String theTarget;
+ theTarget = this.getTarget();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "target", theTarget), currentHashCode, theTarget);
+ }
+ {
+ String theTargetFriendlyName;
+ theTargetFriendlyName = this.getTargetFriendlyName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "targetFriendlyName", theTargetFriendlyName), currentHashCode, theTargetFriendlyName);
+ }
+ {
+ String theStorkSPTargetCountry;
+ theStorkSPTargetCountry = this.getStorkSPTargetCountry();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "storkSPTargetCountry", theStorkSPTargetCountry), currentHashCode, theStorkSPTargetCountry);
+ }
+ {
+ boolean theRemoveBPKFromAuthBlock;
+ theRemoveBPKFromAuthBlock = ((this.removeBPKFromAuthBlock!= null)?this.isRemoveBPKFromAuthBlock():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "removeBPKFromAuthBlock", theRemoveBPKFromAuthBlock), currentHashCode, theRemoveBPKFromAuthBlock);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplicationType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplicationType.java
new file mode 100644
index 000000000..5d3dffbdf
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineApplicationType.java
@@ -0,0 +1,565 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for OnlineApplicationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OnlineApplicationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="isNew" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="isAdminRequired" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="isInterfederationIDP" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="InterfederationIDP" type="{http://www.buergerkarte.at/namespaces/moaconfig#}InterfederationIDPType" minOccurs="0"/>
+ * &lt;element name="isInterfederationGateway" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="InterfederationGateway" type="{http://www.buergerkarte.at/namespaces/moaconfig#}InterfederationGatewayType" minOccurs="0"/>
+ * &lt;element name="AuthComponent_OA" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="BKUURLS">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}IdentificationNumber" minOccurs="0"/>
+ * &lt;element name="Templates" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TemplatesType" minOccurs="0"/>
+ * &lt;element name="TransformsInfo" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TransformsInfoType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Mandates" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Profiles" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="ProfileName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="testCredentials" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="credentialOID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="enableTestCredentials" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_STORK" minOccurs="0"/>
+ * &lt;element name="OA_SSO" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="UseSSO" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="AuthDataFrame" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="SingleLogOutURL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_SAML1" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_PVP2" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}OA_OAUTH20" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}EncBPKInformation" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OnlineApplicationType", propOrder = {
+ "isNew",
+ "isActive",
+ "isAdminRequired",
+ "isInterfederationIDP",
+ "interfederationIDP",
+ "isInterfederationGateway",
+ "interfederationGateway",
+ "authComponentOA"
+})
+@XmlSeeAlso({
+ OnlineApplication.class
+})
+
+
+
+public class OnlineApplicationType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isNew;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isActive;
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isAdminRequired;
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isInterfederationIDP;
+ @XmlElement(name = "InterfederationIDP")
+ protected InterfederationIDPType interfederationIDP;
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isInterfederationGateway;
+ @XmlElement(name = "InterfederationGateway")
+ protected InterfederationGatewayType interfederationGateway;
+ @XmlElement(name = "AuthComponent_OA")
+ protected AuthComponentOA authComponentOA;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the isNew property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ @Transient
+ public Boolean isIsNew() {
+ return isNew;
+ }
+
+ /**
+ * Sets the value of the isNew property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsNew(Boolean value) {
+ this.isNew = value;
+ }
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsActive() {
+ return isActive;
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the isAdminRequired property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsAdminRequired() {
+ return isAdminRequired;
+ }
+
+ /**
+ * Sets the value of the isAdminRequired property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsAdminRequired(Boolean value) {
+ this.isAdminRequired = value;
+ }
+
+ /**
+ * Gets the value of the isInterfederationIDP property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsInterfederationIDP() {
+ return isInterfederationIDP;
+ }
+
+ /**
+ * Sets the value of the isInterfederationIDP property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsInterfederationIDP(Boolean value) {
+ this.isInterfederationIDP = value;
+ }
+
+ /**
+ * Gets the value of the interfederationIDP property.
+ *
+ * @return
+ * possible object is
+ * {@link InterfederationIDPType }
+ *
+ */
+ @ManyToOne(targetEntity = InterfederationIDPType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public InterfederationIDPType getInterfederationIDP() {
+ return interfederationIDP;
+ }
+
+ /**
+ * Sets the value of the interfederationIDP property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InterfederationIDPType }
+ *
+ */
+ public void setInterfederationIDP(InterfederationIDPType value) {
+ this.interfederationIDP = value;
+ }
+
+ /**
+ * Gets the value of the isInterfederationGateway property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsInterfederationGateway() {
+ return isInterfederationGateway;
+ }
+
+ /**
+ * Sets the value of the isInterfederationGateway property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsInterfederationGateway(Boolean value) {
+ this.isInterfederationGateway = value;
+ }
+
+ /**
+ * Gets the value of the interfederationGateway property.
+ *
+ * @return
+ * possible object is
+ * {@link InterfederationGatewayType }
+ *
+ */
+ @ManyToOne(targetEntity = InterfederationGatewayType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public InterfederationGatewayType getInterfederationGateway() {
+ return interfederationGateway;
+ }
+
+ /**
+ * Sets the value of the interfederationGateway property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InterfederationGatewayType }
+ *
+ */
+ public void setInterfederationGateway(InterfederationGatewayType value) {
+ this.interfederationGateway = value;
+ }
+
+ /**
+ * Gets the value of the authComponentOA property.
+ *
+ * @return
+ * possible object is
+ * {@link AuthComponentOA }
+ *
+ */
+ @ManyToOne(targetEntity = AuthComponentOA.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public AuthComponentOA getAuthComponentOA() {
+ return authComponentOA;
+ }
+
+ /**
+ * Sets the value of the authComponentOA property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AuthComponentOA }
+ *
+ */
+ public void setAuthComponentOA(AuthComponentOA value) {
+ this.authComponentOA = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OnlineApplicationType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OnlineApplicationType that = ((OnlineApplicationType) object);
+ {
+ Boolean lhsIsNew;
+ lhsIsNew = this.isIsNew();
+ Boolean rhsIsNew;
+ rhsIsNew = that.isIsNew();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isNew", lhsIsNew), LocatorUtils.property(thatLocator, "isNew", rhsIsNew), lhsIsNew, rhsIsNew)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsActive;
+ lhsIsActive = this.isIsActive();
+ Boolean rhsIsActive;
+ rhsIsActive = that.isIsActive();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isActive", lhsIsActive), LocatorUtils.property(thatLocator, "isActive", rhsIsActive), lhsIsActive, rhsIsActive)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsAdminRequired;
+ lhsIsAdminRequired = this.isIsAdminRequired();
+ Boolean rhsIsAdminRequired;
+ rhsIsAdminRequired = that.isIsAdminRequired();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isAdminRequired", lhsIsAdminRequired), LocatorUtils.property(thatLocator, "isAdminRequired", rhsIsAdminRequired), lhsIsAdminRequired, rhsIsAdminRequired)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsInterfederationIDP;
+ lhsIsInterfederationIDP = this.isIsInterfederationIDP();
+ Boolean rhsIsInterfederationIDP;
+ rhsIsInterfederationIDP = that.isIsInterfederationIDP();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isInterfederationIDP", lhsIsInterfederationIDP), LocatorUtils.property(thatLocator, "isInterfederationIDP", rhsIsInterfederationIDP), lhsIsInterfederationIDP, rhsIsInterfederationIDP)) {
+ return false;
+ }
+ }
+ {
+ InterfederationIDPType lhsInterfederationIDP;
+ lhsInterfederationIDP = this.getInterfederationIDP();
+ InterfederationIDPType rhsInterfederationIDP;
+ rhsInterfederationIDP = that.getInterfederationIDP();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "interfederationIDP", lhsInterfederationIDP), LocatorUtils.property(thatLocator, "interfederationIDP", rhsInterfederationIDP), lhsInterfederationIDP, rhsInterfederationIDP)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsInterfederationGateway;
+ lhsIsInterfederationGateway = this.isIsInterfederationGateway();
+ Boolean rhsIsInterfederationGateway;
+ rhsIsInterfederationGateway = that.isIsInterfederationGateway();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isInterfederationGateway", lhsIsInterfederationGateway), LocatorUtils.property(thatLocator, "isInterfederationGateway", rhsIsInterfederationGateway), lhsIsInterfederationGateway, rhsIsInterfederationGateway)) {
+ return false;
+ }
+ }
+ {
+ InterfederationGatewayType lhsInterfederationGateway;
+ lhsInterfederationGateway = this.getInterfederationGateway();
+ InterfederationGatewayType rhsInterfederationGateway;
+ rhsInterfederationGateway = that.getInterfederationGateway();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "interfederationGateway", lhsInterfederationGateway), LocatorUtils.property(thatLocator, "interfederationGateway", rhsInterfederationGateway), lhsInterfederationGateway, rhsInterfederationGateway)) {
+ return false;
+ }
+ }
+ {
+ AuthComponentOA lhsAuthComponentOA;
+ lhsAuthComponentOA = this.getAuthComponentOA();
+ AuthComponentOA rhsAuthComponentOA;
+ rhsAuthComponentOA = that.getAuthComponentOA();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "authComponentOA", lhsAuthComponentOA), LocatorUtils.property(thatLocator, "authComponentOA", rhsAuthComponentOA), lhsAuthComponentOA, rhsAuthComponentOA)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ Boolean theIsNew;
+ theIsNew = this.isIsNew();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isNew", theIsNew), currentHashCode, theIsNew);
+ }
+ {
+ Boolean theIsActive;
+ theIsActive = this.isIsActive();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isActive", theIsActive), currentHashCode, theIsActive);
+ }
+ {
+ Boolean theIsAdminRequired;
+ theIsAdminRequired = this.isIsAdminRequired();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isAdminRequired", theIsAdminRequired), currentHashCode, theIsAdminRequired);
+ }
+ {
+ Boolean theIsInterfederationIDP;
+ theIsInterfederationIDP = this.isIsInterfederationIDP();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isInterfederationIDP", theIsInterfederationIDP), currentHashCode, theIsInterfederationIDP);
+ }
+ {
+ InterfederationIDPType theInterfederationIDP;
+ theInterfederationIDP = this.getInterfederationIDP();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "interfederationIDP", theInterfederationIDP), currentHashCode, theInterfederationIDP);
+ }
+ {
+ Boolean theIsInterfederationGateway;
+ theIsInterfederationGateway = this.isIsInterfederationGateway();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isInterfederationGateway", theIsInterfederationGateway), currentHashCode, theIsInterfederationGateway);
+ }
+ {
+ InterfederationGatewayType theInterfederationGateway;
+ theInterfederationGateway = this.getInterfederationGateway();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "interfederationGateway", theInterfederationGateway), currentHashCode, theInterfederationGateway);
+ }
+ {
+ AuthComponentOA theAuthComponentOA;
+ theAuthComponentOA = this.getAuthComponentOA();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "authComponentOA", theAuthComponentOA), currentHashCode, theAuthComponentOA);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineMandates.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineMandates.java
new file mode 100644
index 000000000..4e5a7bc2c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/OnlineMandates.java
@@ -0,0 +1,168 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "connectionParameter"
+})
+
+
+
+public class OnlineMandates
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "ConnectionParameter", required = true)
+ protected ConnectionParameterClientAuthType connectionParameter;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the connectionParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ @ManyToOne(targetEntity = ConnectionParameterClientAuthType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ConnectionParameterClientAuthType getConnectionParameter() {
+ return connectionParameter;
+ }
+
+ /**
+ * Sets the value of the connectionParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ public void setConnectionParameter(ConnectionParameterClientAuthType value) {
+ this.connectionParameter = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof OnlineMandates)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final OnlineMandates that = ((OnlineMandates) object);
+ {
+ ConnectionParameterClientAuthType lhsConnectionParameter;
+ lhsConnectionParameter = this.getConnectionParameter();
+ ConnectionParameterClientAuthType rhsConnectionParameter;
+ rhsConnectionParameter = that.getConnectionParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "connectionParameter", lhsConnectionParameter), LocatorUtils.property(thatLocator, "connectionParameter", rhsConnectionParameter), lhsConnectionParameter, rhsConnectionParameter)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ ConnectionParameterClientAuthType theConnectionParameter;
+ theConnectionParameter = this.getConnectionParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "connectionParameter", theConnectionParameter), currentHashCode, theConnectionParameter);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Organization.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Organization.java
new file mode 100644
index 000000000..140da1b85
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Organization.java
@@ -0,0 +1,254 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="DisplayName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="URL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "name",
+ "displayName",
+ "url"
+})
+
+
+
+public class Organization
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Name", required = true)
+ protected String name;
+ @XmlElement(name = "DisplayName", required = true)
+ protected String displayName;
+ @XmlElement(name = "URL", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String url;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the displayName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * Sets the value of the displayName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDisplayName(String value) {
+ this.displayName = value;
+ }
+
+ /**
+ * Gets the value of the url property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getURL() {
+ return url;
+ }
+
+ /**
+ * Sets the value of the url property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURL(String value) {
+ this.url = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Organization)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Organization that = ((Organization) object);
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ {
+ String lhsDisplayName;
+ lhsDisplayName = this.getDisplayName();
+ String rhsDisplayName;
+ rhsDisplayName = that.getDisplayName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "displayName", lhsDisplayName), LocatorUtils.property(thatLocator, "displayName", rhsDisplayName), lhsDisplayName, rhsDisplayName)) {
+ return false;
+ }
+ }
+ {
+ String lhsURL;
+ lhsURL = this.getURL();
+ String rhsURL;
+ rhsURL = that.getURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "url", lhsURL), LocatorUtils.property(thatLocator, "url", rhsURL), lhsURL, rhsURL)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ {
+ String theDisplayName;
+ theDisplayName = this.getDisplayName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "displayName", theDisplayName), currentHashCode, theDisplayName);
+ }
+ {
+ String theURL;
+ theURL = this.getURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "url", theURL), currentHashCode, theURL);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PVP2.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PVP2.java
new file mode 100644
index 000000000..0aee4a5d7
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PVP2.java
@@ -0,0 +1,385 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="PublicURLPrefix" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="IssuerName" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="Organization">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="DisplayName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="URL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Contact" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "publicURLPrefix",
+ "issuerName",
+ "organization",
+ "contact"
+})
+
+
+
+public class PVP2
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "PublicURLPrefix", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String publicURLPrefix;
+ @XmlElement(name = "IssuerName", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String issuerName;
+ @XmlElement(name = "Organization", required = true)
+ protected Organization organization;
+ @XmlElement(name = "Contact", required = true)
+ protected List<Contact> contact;
+ @XmlAttribute(name = "isActive")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isActive;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the publicURLPrefix property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPublicURLPrefix() {
+ return publicURLPrefix;
+ }
+
+ /**
+ * Sets the value of the publicURLPrefix property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPublicURLPrefix(String value) {
+ this.publicURLPrefix = value;
+ }
+
+ /**
+ * Gets the value of the issuerName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getIssuerName() {
+ return issuerName;
+ }
+
+ /**
+ * Sets the value of the issuerName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIssuerName(String value) {
+ this.issuerName = value;
+ }
+
+ /**
+ * Gets the value of the organization property.
+ *
+ * @return
+ * possible object is
+ * {@link Organization }
+ *
+ */
+ @ManyToOne(targetEntity = Organization.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public Organization getOrganization() {
+ return organization;
+ }
+
+ /**
+ * Sets the value of the organization property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Organization }
+ *
+ */
+ public void setOrganization(Organization value) {
+ this.organization = value;
+ }
+
+ /**
+ * Gets the value of the contact property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the contact property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContact().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Contact }
+ *
+ *
+ */
+ @OneToMany(targetEntity = Contact.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<Contact> getContact() {
+ if (contact == null) {
+ contact = new ArrayList<Contact>();
+ }
+ return this.contact;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setContact(List<Contact> contact) {
+ this.contact = contact;
+ }
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isIsActive() {
+ if (isActive == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("true");
+ } else {
+ return isActive;
+ }
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof PVP2)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final PVP2 that = ((PVP2) object);
+ {
+ String lhsPublicURLPrefix;
+ lhsPublicURLPrefix = this.getPublicURLPrefix();
+ String rhsPublicURLPrefix;
+ rhsPublicURLPrefix = that.getPublicURLPrefix();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "publicURLPrefix", lhsPublicURLPrefix), LocatorUtils.property(thatLocator, "publicURLPrefix", rhsPublicURLPrefix), lhsPublicURLPrefix, rhsPublicURLPrefix)) {
+ return false;
+ }
+ }
+ {
+ String lhsIssuerName;
+ lhsIssuerName = this.getIssuerName();
+ String rhsIssuerName;
+ rhsIssuerName = that.getIssuerName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "issuerName", lhsIssuerName), LocatorUtils.property(thatLocator, "issuerName", rhsIssuerName), lhsIssuerName, rhsIssuerName)) {
+ return false;
+ }
+ }
+ {
+ Organization lhsOrganization;
+ lhsOrganization = this.getOrganization();
+ Organization rhsOrganization;
+ rhsOrganization = that.getOrganization();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "organization", lhsOrganization), LocatorUtils.property(thatLocator, "organization", rhsOrganization), lhsOrganization, rhsOrganization)) {
+ return false;
+ }
+ }
+ {
+ List<Contact> lhsContact;
+ lhsContact = (((this.contact!= null)&&(!this.contact.isEmpty()))?this.getContact():null);
+ List<Contact> rhsContact;
+ rhsContact = (((that.contact!= null)&&(!that.contact.isEmpty()))?that.getContact():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "contact", lhsContact), LocatorUtils.property(thatLocator, "contact", rhsContact), lhsContact, rhsContact)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsIsActive;
+ lhsIsActive = ((this.isActive!= null)?this.isIsActive():false);
+ boolean rhsIsActive;
+ rhsIsActive = ((that.isActive!= null)?that.isIsActive():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isActive", lhsIsActive), LocatorUtils.property(thatLocator, "isActive", rhsIsActive), lhsIsActive, rhsIsActive)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String thePublicURLPrefix;
+ thePublicURLPrefix = this.getPublicURLPrefix();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "publicURLPrefix", thePublicURLPrefix), currentHashCode, thePublicURLPrefix);
+ }
+ {
+ String theIssuerName;
+ theIssuerName = this.getIssuerName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "issuerName", theIssuerName), currentHashCode, theIssuerName);
+ }
+ {
+ Organization theOrganization;
+ theOrganization = this.getOrganization();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "organization", theOrganization), currentHashCode, theOrganization);
+ }
+ {
+ List<Contact> theContact;
+ theContact = (((this.contact!= null)&&(!this.contact.isEmpty()))?this.getContact():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "contact", theContact), currentHashCode, theContact);
+ }
+ {
+ boolean theIsActive;
+ theIsActive = ((this.isActive!= null)?this.isIsActive():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isActive", theIsActive), currentHashCode, theIsActive);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ParamAuth.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ParamAuth.java
new file mode 100644
index 000000000..43a45524c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/ParamAuth.java
@@ -0,0 +1,185 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Parameter" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "parameter"
+})
+@XmlRootElement(name = "ParamAuth")
+
+
+
+public class ParamAuth
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Parameter", required = true)
+ protected List<Parameter> parameter;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the parameter property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the parameter property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getParameter().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Parameter }
+ *
+ *
+ */
+ @OneToMany(targetEntity = Parameter.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<Parameter> getParameter() {
+ if (parameter == null) {
+ parameter = new ArrayList<Parameter>();
+ }
+ return this.parameter;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setParameter(List<Parameter> parameter) {
+ this.parameter = parameter;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof ParamAuth)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final ParamAuth that = ((ParamAuth) object);
+ {
+ List<Parameter> lhsParameter;
+ lhsParameter = (((this.parameter!= null)&&(!this.parameter.isEmpty()))?this.getParameter():null);
+ List<Parameter> rhsParameter;
+ rhsParameter = (((that.parameter!= null)&&(!that.parameter.isEmpty()))?that.getParameter():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "parameter", lhsParameter), LocatorUtils.property(thatLocator, "parameter", rhsParameter), lhsParameter, rhsParameter)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<Parameter> theParameter;
+ theParameter = (((this.parameter!= null)&&(!this.parameter.isEmpty()))?this.getParameter():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "parameter", theParameter), currentHashCode, theParameter);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Parameter.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Parameter.java
new file mode 100644
index 000000000..963edd9e4
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Parameter.java
@@ -0,0 +1,212 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="Value" use="required" type="{http://www.buergerkarte.at/namespaces/moaconfig#}MOAAuthDataType" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "Parameter")
+
+
+
+public class Parameter
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "Name", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String name;
+ @XmlAttribute(name = "Value", required = true)
+ protected MOAAuthDataType value;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link MOAAuthDataType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public MOAAuthDataType getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MOAAuthDataType }
+ *
+ */
+ public void setValue(MOAAuthDataType value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Parameter)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Parameter that = ((Parameter) object);
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ {
+ MOAAuthDataType lhsValue;
+ lhsValue = this.getValue();
+ MOAAuthDataType rhsValue;
+ rhsValue = that.getValue();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "value", lhsValue), LocatorUtils.property(thatLocator, "value", rhsValue), lhsValue, rhsValue)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ {
+ MOAAuthDataType theValue;
+ theValue = this.getValue();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "value", theValue), currentHashCode, theValue);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentationType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentationType.java
new file mode 100644
index 000000000..b5fa75f16
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentationType.java
@@ -0,0 +1,331 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for PartyRepresentationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PartyRepresentationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="InputProcessor" type="{http://www.buergerkarte.at/namespaces/moaconfig#}InputProcessorType" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}AlwaysShowForm" minOccurs="0"/>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType" minOccurs="0"/>
+ * &lt;element name="PartyRepresentative" type="{http://www.buergerkarte.at/namespaces/moaconfig#}PartyRepresentativeType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PartyRepresentationType", propOrder = {
+ "inputProcessor",
+ "alwaysShowForm",
+ "connectionParameter",
+ "partyRepresentative"
+})
+
+
+
+public class PartyRepresentationType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "InputProcessor")
+ protected InputProcessorType inputProcessor;
+ @XmlElement(name = "AlwaysShowForm", type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ protected Boolean alwaysShowForm;
+ @XmlElement(name = "ConnectionParameter")
+ protected ConnectionParameterClientAuthType connectionParameter;
+ @XmlElement(name = "PartyRepresentative")
+ protected List<PartyRepresentativeType> partyRepresentative;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the inputProcessor property.
+ *
+ * @return
+ * possible object is
+ * {@link InputProcessorType }
+ *
+ */
+ @ManyToOne(targetEntity = InputProcessorType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public InputProcessorType getInputProcessor() {
+ return inputProcessor;
+ }
+
+ /**
+ * Sets the value of the inputProcessor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InputProcessorType }
+ *
+ */
+ public void setInputProcessor(InputProcessorType value) {
+ this.inputProcessor = value;
+ }
+
+ /**
+ * Default Wert fuer Formularanzeige. Soll nicht nur
+ * bei leerer oder standardisierter Vollmacht mit unvollstaendigen
+ * Daten, sondern beispielsweise zu Kontrollzwecken das
+ * Eingabeformular zur vervollstaendigung der Vertretenendaten immer
+ * angezeigt werden, wenn ein Einschreiten durch berufliche
+ * Parteienvertretung geschieht so kann dies mittels dieses Schalters
+ * veranlasst werden
+ *
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isAlwaysShowForm() {
+ return alwaysShowForm;
+ }
+
+ /**
+ * Sets the value of the alwaysShowForm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlwaysShowForm(Boolean value) {
+ this.alwaysShowForm = value;
+ }
+
+ /**
+ * Gets the value of the connectionParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ @ManyToOne(targetEntity = ConnectionParameterClientAuthType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ConnectionParameterClientAuthType getConnectionParameter() {
+ return connectionParameter;
+ }
+
+ /**
+ * Sets the value of the connectionParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ public void setConnectionParameter(ConnectionParameterClientAuthType value) {
+ this.connectionParameter = value;
+ }
+
+ /**
+ * Gets the value of the partyRepresentative property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the partyRepresentative property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getPartyRepresentative().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PartyRepresentativeType }
+ *
+ *
+ */
+ @OneToMany(targetEntity = PartyRepresentativeType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<PartyRepresentativeType> getPartyRepresentative() {
+ if (partyRepresentative == null) {
+ partyRepresentative = new ArrayList<PartyRepresentativeType>();
+ }
+ return this.partyRepresentative;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setPartyRepresentative(List<PartyRepresentativeType> partyRepresentative) {
+ this.partyRepresentative = partyRepresentative;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof PartyRepresentationType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final PartyRepresentationType that = ((PartyRepresentationType) object);
+ {
+ InputProcessorType lhsInputProcessor;
+ lhsInputProcessor = this.getInputProcessor();
+ InputProcessorType rhsInputProcessor;
+ rhsInputProcessor = that.getInputProcessor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "inputProcessor", lhsInputProcessor), LocatorUtils.property(thatLocator, "inputProcessor", rhsInputProcessor), lhsInputProcessor, rhsInputProcessor)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsAlwaysShowForm;
+ lhsAlwaysShowForm = this.isAlwaysShowForm();
+ Boolean rhsAlwaysShowForm;
+ rhsAlwaysShowForm = that.isAlwaysShowForm();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "alwaysShowForm", lhsAlwaysShowForm), LocatorUtils.property(thatLocator, "alwaysShowForm", rhsAlwaysShowForm), lhsAlwaysShowForm, rhsAlwaysShowForm)) {
+ return false;
+ }
+ }
+ {
+ ConnectionParameterClientAuthType lhsConnectionParameter;
+ lhsConnectionParameter = this.getConnectionParameter();
+ ConnectionParameterClientAuthType rhsConnectionParameter;
+ rhsConnectionParameter = that.getConnectionParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "connectionParameter", lhsConnectionParameter), LocatorUtils.property(thatLocator, "connectionParameter", rhsConnectionParameter), lhsConnectionParameter, rhsConnectionParameter)) {
+ return false;
+ }
+ }
+ {
+ List<PartyRepresentativeType> lhsPartyRepresentative;
+ lhsPartyRepresentative = (((this.partyRepresentative!= null)&&(!this.partyRepresentative.isEmpty()))?this.getPartyRepresentative():null);
+ List<PartyRepresentativeType> rhsPartyRepresentative;
+ rhsPartyRepresentative = (((that.partyRepresentative!= null)&&(!that.partyRepresentative.isEmpty()))?that.getPartyRepresentative():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "partyRepresentative", lhsPartyRepresentative), LocatorUtils.property(thatLocator, "partyRepresentative", rhsPartyRepresentative), lhsPartyRepresentative, rhsPartyRepresentative)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ InputProcessorType theInputProcessor;
+ theInputProcessor = this.getInputProcessor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "inputProcessor", theInputProcessor), currentHashCode, theInputProcessor);
+ }
+ {
+ Boolean theAlwaysShowForm;
+ theAlwaysShowForm = this.isAlwaysShowForm();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "alwaysShowForm", theAlwaysShowForm), currentHashCode, theAlwaysShowForm);
+ }
+ {
+ ConnectionParameterClientAuthType theConnectionParameter;
+ theConnectionParameter = this.getConnectionParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "connectionParameter", theConnectionParameter), currentHashCode, theConnectionParameter);
+ }
+ {
+ List<PartyRepresentativeType> thePartyRepresentative;
+ thePartyRepresentative = (((this.partyRepresentative!= null)&&(!this.partyRepresentative.isEmpty()))?this.getPartyRepresentative():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "partyRepresentative", thePartyRepresentative), currentHashCode, thePartyRepresentative);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentativeType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentativeType.java
new file mode 100644
index 000000000..b37f58878
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/PartyRepresentativeType.java
@@ -0,0 +1,457 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for PartyRepresentativeType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PartyRepresentativeType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="InputProcessor" type="{http://www.buergerkarte.at/namespaces/moaconfig#}InputProcessorType" minOccurs="0"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}AlwaysShowForm" minOccurs="0"/>
+ * &lt;element name="ConnectionParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ConnectionParameterClientAuthType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="oid" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ * &lt;attribute name="representPhysicalParty" default="false">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}boolean">
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="representCorporateParty" default="false">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}boolean">
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="representationText" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PartyRepresentativeType", propOrder = {
+ "inputProcessor",
+ "alwaysShowForm",
+ "connectionParameter"
+})
+
+
+
+public class PartyRepresentativeType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "InputProcessor")
+ protected InputProcessorType inputProcessor;
+ @XmlElement(name = "AlwaysShowForm", type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ protected Boolean alwaysShowForm;
+ @XmlElement(name = "ConnectionParameter")
+ protected ConnectionParameterClientAuthType connectionParameter;
+ @XmlAttribute(name = "oid", required = true)
+ @XmlSchemaType(name = "anySimpleType")
+ protected String oid;
+ @XmlAttribute(name = "representPhysicalParty")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ protected Boolean representPhysicalParty;
+ @XmlAttribute(name = "representCorporateParty")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ protected Boolean representCorporateParty;
+ @XmlAttribute(name = "representationText")
+ @XmlSchemaType(name = "anySimpleType")
+ protected String representationText;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the inputProcessor property.
+ *
+ * @return
+ * possible object is
+ * {@link InputProcessorType }
+ *
+ */
+ @ManyToOne(targetEntity = InputProcessorType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public InputProcessorType getInputProcessor() {
+ return inputProcessor;
+ }
+
+ /**
+ * Sets the value of the inputProcessor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InputProcessorType }
+ *
+ */
+ public void setInputProcessor(InputProcessorType value) {
+ this.inputProcessor = value;
+ }
+
+ /**
+ * Gets the value of the alwaysShowForm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isAlwaysShowForm() {
+ return alwaysShowForm;
+ }
+
+ /**
+ * Sets the value of the alwaysShowForm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlwaysShowForm(Boolean value) {
+ this.alwaysShowForm = value;
+ }
+
+ /**
+ * Gets the value of the connectionParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ @ManyToOne(targetEntity = ConnectionParameterClientAuthType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public ConnectionParameterClientAuthType getConnectionParameter() {
+ return connectionParameter;
+ }
+
+ /**
+ * Sets the value of the connectionParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ConnectionParameterClientAuthType }
+ *
+ */
+ public void setConnectionParameter(ConnectionParameterClientAuthType value) {
+ this.connectionParameter = value;
+ }
+
+ /**
+ * Gets the value of the oid property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOid() {
+ return oid;
+ }
+
+ /**
+ * Sets the value of the oid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOid(String value) {
+ this.oid = value;
+ }
+
+ /**
+ * Gets the value of the representPhysicalParty property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isRepresentPhysicalParty() {
+ if (representPhysicalParty == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("false");
+ } else {
+ return representPhysicalParty;
+ }
+ }
+
+ /**
+ * Sets the value of the representPhysicalParty property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRepresentPhysicalParty(Boolean value) {
+ this.representPhysicalParty = value;
+ }
+
+ /**
+ * Gets the value of the representCorporateParty property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isRepresentCorporateParty() {
+ if (representCorporateParty == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("false");
+ } else {
+ return representCorporateParty;
+ }
+ }
+
+ /**
+ * Sets the value of the representCorporateParty property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRepresentCorporateParty(Boolean value) {
+ this.representCorporateParty = value;
+ }
+
+ /**
+ * Gets the value of the representationText property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getRepresentationText() {
+ return representationText;
+ }
+
+ /**
+ * Sets the value of the representationText property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRepresentationText(String value) {
+ this.representationText = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof PartyRepresentativeType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final PartyRepresentativeType that = ((PartyRepresentativeType) object);
+ {
+ InputProcessorType lhsInputProcessor;
+ lhsInputProcessor = this.getInputProcessor();
+ InputProcessorType rhsInputProcessor;
+ rhsInputProcessor = that.getInputProcessor();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "inputProcessor", lhsInputProcessor), LocatorUtils.property(thatLocator, "inputProcessor", rhsInputProcessor), lhsInputProcessor, rhsInputProcessor)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsAlwaysShowForm;
+ lhsAlwaysShowForm = this.isAlwaysShowForm();
+ Boolean rhsAlwaysShowForm;
+ rhsAlwaysShowForm = that.isAlwaysShowForm();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "alwaysShowForm", lhsAlwaysShowForm), LocatorUtils.property(thatLocator, "alwaysShowForm", rhsAlwaysShowForm), lhsAlwaysShowForm, rhsAlwaysShowForm)) {
+ return false;
+ }
+ }
+ {
+ ConnectionParameterClientAuthType lhsConnectionParameter;
+ lhsConnectionParameter = this.getConnectionParameter();
+ ConnectionParameterClientAuthType rhsConnectionParameter;
+ rhsConnectionParameter = that.getConnectionParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "connectionParameter", lhsConnectionParameter), LocatorUtils.property(thatLocator, "connectionParameter", rhsConnectionParameter), lhsConnectionParameter, rhsConnectionParameter)) {
+ return false;
+ }
+ }
+ {
+ String lhsOid;
+ lhsOid = this.getOid();
+ String rhsOid;
+ rhsOid = that.getOid();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oid", lhsOid), LocatorUtils.property(thatLocator, "oid", rhsOid), lhsOid, rhsOid)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsRepresentPhysicalParty;
+ lhsRepresentPhysicalParty = ((this.representPhysicalParty!= null)?this.isRepresentPhysicalParty():false);
+ boolean rhsRepresentPhysicalParty;
+ rhsRepresentPhysicalParty = ((that.representPhysicalParty!= null)?that.isRepresentPhysicalParty():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "representPhysicalParty", lhsRepresentPhysicalParty), LocatorUtils.property(thatLocator, "representPhysicalParty", rhsRepresentPhysicalParty), lhsRepresentPhysicalParty, rhsRepresentPhysicalParty)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsRepresentCorporateParty;
+ lhsRepresentCorporateParty = ((this.representCorporateParty!= null)?this.isRepresentCorporateParty():false);
+ boolean rhsRepresentCorporateParty;
+ rhsRepresentCorporateParty = ((that.representCorporateParty!= null)?that.isRepresentCorporateParty():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "representCorporateParty", lhsRepresentCorporateParty), LocatorUtils.property(thatLocator, "representCorporateParty", rhsRepresentCorporateParty), lhsRepresentCorporateParty, rhsRepresentCorporateParty)) {
+ return false;
+ }
+ }
+ {
+ String lhsRepresentationText;
+ lhsRepresentationText = this.getRepresentationText();
+ String rhsRepresentationText;
+ rhsRepresentationText = that.getRepresentationText();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "representationText", lhsRepresentationText), LocatorUtils.property(thatLocator, "representationText", rhsRepresentationText), lhsRepresentationText, rhsRepresentationText)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ InputProcessorType theInputProcessor;
+ theInputProcessor = this.getInputProcessor();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "inputProcessor", theInputProcessor), currentHashCode, theInputProcessor);
+ }
+ {
+ Boolean theAlwaysShowForm;
+ theAlwaysShowForm = this.isAlwaysShowForm();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "alwaysShowForm", theAlwaysShowForm), currentHashCode, theAlwaysShowForm);
+ }
+ {
+ ConnectionParameterClientAuthType theConnectionParameter;
+ theConnectionParameter = this.getConnectionParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "connectionParameter", theConnectionParameter), currentHashCode, theConnectionParameter);
+ }
+ {
+ String theOid;
+ theOid = this.getOid();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oid", theOid), currentHashCode, theOid);
+ }
+ {
+ boolean theRepresentPhysicalParty;
+ theRepresentPhysicalParty = ((this.representPhysicalParty!= null)?this.isRepresentPhysicalParty():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "representPhysicalParty", theRepresentPhysicalParty), currentHashCode, theRepresentPhysicalParty);
+ }
+ {
+ boolean theRepresentCorporateParty;
+ theRepresentCorporateParty = ((this.representCorporateParty!= null)?this.isRepresentCorporateParty():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "representCorporateParty", theRepresentCorporateParty), currentHashCode, theRepresentCorporateParty);
+ }
+ {
+ String theRepresentationText;
+ theRepresentationText = this.getRepresentationText();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "representationText", theRepresentationText), currentHashCode, theRepresentationText);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Protocols.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Protocols.java
new file mode 100644
index 000000000..94e28d56b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Protocols.java
@@ -0,0 +1,361 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SAML1" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SourceID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="PVP2" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="PublicURLPrefix" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="IssuerName" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="Organization">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="DisplayName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="URL" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Contact" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="OAuth" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="LegacyAllowed">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ProtocolName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "saml1",
+ "pvp2",
+ "oAuth",
+ "legacyAllowed"
+})
+
+
+
+public class Protocols
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "SAML1")
+ protected SAML1 saml1;
+ @XmlElement(name = "PVP2")
+ protected PVP2 pvp2;
+ @XmlElement(name = "OAuth")
+ protected OAuth oAuth;
+ @XmlElement(name = "LegacyAllowed", required = true)
+ protected LegacyAllowed legacyAllowed;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the saml1 property.
+ *
+ * @return
+ * possible object is
+ * {@link SAML1 }
+ *
+ */
+ @ManyToOne(targetEntity = SAML1 .class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SAML1 getSAML1() {
+ return saml1;
+ }
+
+ /**
+ * Sets the value of the saml1 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SAML1 }
+ *
+ */
+ public void setSAML1(SAML1 value) {
+ this.saml1 = value;
+ }
+
+ /**
+ * Gets the value of the pvp2 property.
+ *
+ * @return
+ * possible object is
+ * {@link PVP2 }
+ *
+ */
+ @ManyToOne(targetEntity = PVP2 .class, cascade = {
+ CascadeType.ALL
+ })
+
+ public PVP2 getPVP2() {
+ return pvp2;
+ }
+
+ /**
+ * Sets the value of the pvp2 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link PVP2 }
+ *
+ */
+ public void setPVP2(PVP2 value) {
+ this.pvp2 = value;
+ }
+
+ /**
+ * Gets the value of the oAuth property.
+ *
+ * @return
+ * possible object is
+ * {@link OAuth }
+ *
+ */
+ @ManyToOne(targetEntity = OAuth.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public OAuth getOAuth() {
+ return oAuth;
+ }
+
+ /**
+ * Sets the value of the oAuth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OAuth }
+ *
+ */
+ public void setOAuth(OAuth value) {
+ this.oAuth = value;
+ }
+
+ /**
+ * Gets the value of the legacyAllowed property.
+ *
+ * @return
+ * possible object is
+ * {@link LegacyAllowed }
+ *
+ */
+ @ManyToOne(targetEntity = LegacyAllowed.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public LegacyAllowed getLegacyAllowed() {
+ return legacyAllowed;
+ }
+
+ /**
+ * Sets the value of the legacyAllowed property.
+ *
+ * @param value
+ * allowed object is
+ * {@link LegacyAllowed }
+ *
+ */
+ public void setLegacyAllowed(LegacyAllowed value) {
+ this.legacyAllowed = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Protocols)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Protocols that = ((Protocols) object);
+ {
+ SAML1 lhsSAML1;
+ lhsSAML1 = this.getSAML1();
+ SAML1 rhsSAML1;
+ rhsSAML1 = that.getSAML1();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "saml1", lhsSAML1), LocatorUtils.property(thatLocator, "saml1", rhsSAML1), lhsSAML1, rhsSAML1)) {
+ return false;
+ }
+ }
+ {
+ PVP2 lhsPVP2;
+ lhsPVP2 = this.getPVP2();
+ PVP2 rhsPVP2;
+ rhsPVP2 = that.getPVP2();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "pvp2", lhsPVP2), LocatorUtils.property(thatLocator, "pvp2", rhsPVP2), lhsPVP2, rhsPVP2)) {
+ return false;
+ }
+ }
+ {
+ OAuth lhsOAuth;
+ lhsOAuth = this.getOAuth();
+ OAuth rhsOAuth;
+ rhsOAuth = that.getOAuth();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "oAuth", lhsOAuth), LocatorUtils.property(thatLocator, "oAuth", rhsOAuth), lhsOAuth, rhsOAuth)) {
+ return false;
+ }
+ }
+ {
+ LegacyAllowed lhsLegacyAllowed;
+ lhsLegacyAllowed = this.getLegacyAllowed();
+ LegacyAllowed rhsLegacyAllowed;
+ rhsLegacyAllowed = that.getLegacyAllowed();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "legacyAllowed", lhsLegacyAllowed), LocatorUtils.property(thatLocator, "legacyAllowed", rhsLegacyAllowed), lhsLegacyAllowed, rhsLegacyAllowed)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ SAML1 theSAML1;
+ theSAML1 = this.getSAML1();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "saml1", theSAML1), currentHashCode, theSAML1);
+ }
+ {
+ PVP2 thePVP2;
+ thePVP2 = this.getPVP2();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "pvp2", thePVP2), currentHashCode, thePVP2);
+ }
+ {
+ OAuth theOAuth;
+ theOAuth = this.getOAuth();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "oAuth", theOAuth), currentHashCode, theOAuth);
+ }
+ {
+ LegacyAllowed theLegacyAllowed;
+ theLegacyAllowed = this.getLegacyAllowed();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "legacyAllowed", theLegacyAllowed), currentHashCode, theLegacyAllowed);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAML1.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAML1.java
new file mode 100644
index 000000000..342b4614e
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAML1.java
@@ -0,0 +1,216 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SourceID" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "sourceID"
+})
+
+
+
+public class SAML1
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "SourceID")
+ protected String sourceID;
+ @XmlAttribute(name = "isActive")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isActive;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the sourceID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getSourceID() {
+ return sourceID;
+ }
+
+ /**
+ * Sets the value of the sourceID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSourceID(String value) {
+ this.sourceID = value;
+ }
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isIsActive() {
+ if (isActive == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("false");
+ } else {
+ return isActive;
+ }
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SAML1)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SAML1 that = ((SAML1) object);
+ {
+ String lhsSourceID;
+ lhsSourceID = this.getSourceID();
+ String rhsSourceID;
+ rhsSourceID = that.getSourceID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "sourceID", lhsSourceID), LocatorUtils.property(thatLocator, "sourceID", rhsSourceID), lhsSourceID, rhsSourceID)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsIsActive;
+ lhsIsActive = ((this.isActive!= null)?this.isIsActive():false);
+ boolean rhsIsActive;
+ rhsIsActive = ((that.isActive!= null)?that.isIsActive():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isActive", lhsIsActive), LocatorUtils.property(thatLocator, "isActive", rhsIsActive), lhsIsActive, rhsIsActive)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theSourceID;
+ theSourceID = this.getSourceID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "sourceID", theSourceID), currentHashCode, theSourceID);
+ }
+ {
+ boolean theIsActive;
+ theIsActive = ((this.isActive!= null)?this.isIsActive():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isActive", theIsActive), currentHashCode, theIsActive);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAMLSigningParameter.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAMLSigningParameter.java
new file mode 100644
index 000000000..5b3744502
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SAMLSigningParameter.java
@@ -0,0 +1,216 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignatureCreationParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}SignatureCreationParameterType"/>
+ * &lt;element name="SignatureVerificationParameter" type="{http://www.buergerkarte.at/namespaces/moaconfig#}SignatureVerificationParameterType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "signatureCreationParameter",
+ "signatureVerificationParameter"
+})
+@XmlRootElement(name = "SAMLSigningParameter")
+
+
+
+public class SAMLSigningParameter
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "SignatureCreationParameter", required = true)
+ protected SignatureCreationParameterType signatureCreationParameter;
+ @XmlElement(name = "SignatureVerificationParameter", required = true)
+ protected SignatureVerificationParameterType signatureVerificationParameter;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the signatureCreationParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureCreationParameterType }
+ *
+ */
+ @ManyToOne(targetEntity = SignatureCreationParameterType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SignatureCreationParameterType getSignatureCreationParameter() {
+ return signatureCreationParameter;
+ }
+
+ /**
+ * Sets the value of the signatureCreationParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureCreationParameterType }
+ *
+ */
+ public void setSignatureCreationParameter(SignatureCreationParameterType value) {
+ this.signatureCreationParameter = value;
+ }
+
+ /**
+ * Gets the value of the signatureVerificationParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureVerificationParameterType }
+ *
+ */
+ @ManyToOne(targetEntity = SignatureVerificationParameterType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SignatureVerificationParameterType getSignatureVerificationParameter() {
+ return signatureVerificationParameter;
+ }
+
+ /**
+ * Sets the value of the signatureVerificationParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureVerificationParameterType }
+ *
+ */
+ public void setSignatureVerificationParameter(SignatureVerificationParameterType value) {
+ this.signatureVerificationParameter = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SAMLSigningParameter)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SAMLSigningParameter that = ((SAMLSigningParameter) object);
+ {
+ SignatureCreationParameterType lhsSignatureCreationParameter;
+ lhsSignatureCreationParameter = this.getSignatureCreationParameter();
+ SignatureCreationParameterType rhsSignatureCreationParameter;
+ rhsSignatureCreationParameter = that.getSignatureCreationParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "signatureCreationParameter", lhsSignatureCreationParameter), LocatorUtils.property(thatLocator, "signatureCreationParameter", rhsSignatureCreationParameter), lhsSignatureCreationParameter, rhsSignatureCreationParameter)) {
+ return false;
+ }
+ }
+ {
+ SignatureVerificationParameterType lhsSignatureVerificationParameter;
+ lhsSignatureVerificationParameter = this.getSignatureVerificationParameter();
+ SignatureVerificationParameterType rhsSignatureVerificationParameter;
+ rhsSignatureVerificationParameter = that.getSignatureVerificationParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "signatureVerificationParameter", lhsSignatureVerificationParameter), LocatorUtils.property(thatLocator, "signatureVerificationParameter", rhsSignatureVerificationParameter), lhsSignatureVerificationParameter, rhsSignatureVerificationParameter)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ SignatureCreationParameterType theSignatureCreationParameter;
+ theSignatureCreationParameter = this.getSignatureCreationParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "signatureCreationParameter", theSignatureCreationParameter), currentHashCode, theSignatureCreationParameter);
+ }
+ {
+ SignatureVerificationParameterType theSignatureVerificationParameter;
+ theSignatureVerificationParameter = this.getSignatureVerificationParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "signatureVerificationParameter", theSignatureVerificationParameter), currentHashCode, theSignatureVerificationParameter);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SLRequestTemplates.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SLRequestTemplates.java
new file mode 100644
index 000000000..de1f9f472
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SLRequestTemplates.java
@@ -0,0 +1,256 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OnlineBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="HandyBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="LocalBKU" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "onlineBKU",
+ "handyBKU",
+ "localBKU"
+})
+
+
+
+public class SLRequestTemplates
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "OnlineBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String onlineBKU;
+ @XmlElement(name = "HandyBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String handyBKU;
+ @XmlElement(name = "LocalBKU", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String localBKU;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the onlineBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getOnlineBKU() {
+ return onlineBKU;
+ }
+
+ /**
+ * Sets the value of the onlineBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOnlineBKU(String value) {
+ this.onlineBKU = value;
+ }
+
+ /**
+ * Gets the value of the handyBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getHandyBKU() {
+ return handyBKU;
+ }
+
+ /**
+ * Sets the value of the handyBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHandyBKU(String value) {
+ this.handyBKU = value;
+ }
+
+ /**
+ * Gets the value of the localBKU property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getLocalBKU() {
+ return localBKU;
+ }
+
+ /**
+ * Sets the value of the localBKU property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLocalBKU(String value) {
+ this.localBKU = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SLRequestTemplates)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SLRequestTemplates that = ((SLRequestTemplates) object);
+ {
+ String lhsOnlineBKU;
+ lhsOnlineBKU = this.getOnlineBKU();
+ String rhsOnlineBKU;
+ rhsOnlineBKU = that.getOnlineBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlineBKU", lhsOnlineBKU), LocatorUtils.property(thatLocator, "onlineBKU", rhsOnlineBKU), lhsOnlineBKU, rhsOnlineBKU)) {
+ return false;
+ }
+ }
+ {
+ String lhsHandyBKU;
+ lhsHandyBKU = this.getHandyBKU();
+ String rhsHandyBKU;
+ rhsHandyBKU = that.getHandyBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "handyBKU", lhsHandyBKU), LocatorUtils.property(thatLocator, "handyBKU", rhsHandyBKU), lhsHandyBKU, rhsHandyBKU)) {
+ return false;
+ }
+ }
+ {
+ String lhsLocalBKU;
+ lhsLocalBKU = this.getLocalBKU();
+ String rhsLocalBKU;
+ rhsLocalBKU = that.getLocalBKU();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "localBKU", lhsLocalBKU), LocatorUtils.property(thatLocator, "localBKU", rhsLocalBKU), lhsLocalBKU, rhsLocalBKU)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theOnlineBKU;
+ theOnlineBKU = this.getOnlineBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlineBKU", theOnlineBKU), currentHashCode, theOnlineBKU);
+ }
+ {
+ String theHandyBKU;
+ theHandyBKU = this.getHandyBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "handyBKU", theHandyBKU), currentHashCode, theHandyBKU);
+ }
+ {
+ String theLocalBKU;
+ theLocalBKU = this.getLocalBKU();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "localBKU", theLocalBKU), currentHashCode, theLocalBKU);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SSO.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SSO.java
new file mode 100644
index 000000000..3cc62c9e5
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SSO.java
@@ -0,0 +1,341 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="target" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}IdentificationNumber"/>
+ * &lt;/choice>
+ * &lt;attribute name="PublicURL" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="SpecialText" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "target",
+ "identificationNumber"
+})
+
+
+
+public class SSO
+ implements Serializable, Equals, HashCode
+{
+
+ protected String target;
+ @XmlElement(name = "IdentificationNumber")
+ protected IdentificationNumber identificationNumber;
+ @XmlAttribute(name = "PublicURL")
+ protected String publicURL;
+ @XmlAttribute(name = "FriendlyName")
+ protected String friendlyName;
+ @XmlAttribute(name = "SpecialText")
+ protected String specialText;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the target property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * Sets the value of the target property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTarget(String value) {
+ this.target = value;
+ }
+
+ /**
+ * Gets the value of the identificationNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link IdentificationNumber }
+ *
+ */
+ @ManyToOne(targetEntity = IdentificationNumber.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public IdentificationNumber getIdentificationNumber() {
+ return identificationNumber;
+ }
+
+ /**
+ * Sets the value of the identificationNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link IdentificationNumber }
+ *
+ */
+ public void setIdentificationNumber(IdentificationNumber value) {
+ this.identificationNumber = value;
+ }
+
+ /**
+ * Gets the value of the publicURL property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPublicURL() {
+ return publicURL;
+ }
+
+ /**
+ * Sets the value of the publicURL property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPublicURL(String value) {
+ this.publicURL = value;
+ }
+
+ /**
+ * Gets the value of the friendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ /**
+ * Sets the value of the friendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFriendlyName(String value) {
+ this.friendlyName = value;
+ }
+
+ /**
+ * Gets the value of the specialText property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getSpecialText() {
+ return specialText;
+ }
+
+ /**
+ * Sets the value of the specialText property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSpecialText(String value) {
+ this.specialText = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SSO)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SSO that = ((SSO) object);
+ {
+ String lhsTarget;
+ lhsTarget = this.getTarget();
+ String rhsTarget;
+ rhsTarget = that.getTarget();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "target", lhsTarget), LocatorUtils.property(thatLocator, "target", rhsTarget), lhsTarget, rhsTarget)) {
+ return false;
+ }
+ }
+ {
+ IdentificationNumber lhsIdentificationNumber;
+ lhsIdentificationNumber = this.getIdentificationNumber();
+ IdentificationNumber rhsIdentificationNumber;
+ rhsIdentificationNumber = that.getIdentificationNumber();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "identificationNumber", lhsIdentificationNumber), LocatorUtils.property(thatLocator, "identificationNumber", rhsIdentificationNumber), lhsIdentificationNumber, rhsIdentificationNumber)) {
+ return false;
+ }
+ }
+ {
+ String lhsPublicURL;
+ lhsPublicURL = this.getPublicURL();
+ String rhsPublicURL;
+ rhsPublicURL = that.getPublicURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "publicURL", lhsPublicURL), LocatorUtils.property(thatLocator, "publicURL", rhsPublicURL), lhsPublicURL, rhsPublicURL)) {
+ return false;
+ }
+ }
+ {
+ String lhsFriendlyName;
+ lhsFriendlyName = this.getFriendlyName();
+ String rhsFriendlyName;
+ rhsFriendlyName = that.getFriendlyName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "friendlyName", lhsFriendlyName), LocatorUtils.property(thatLocator, "friendlyName", rhsFriendlyName), lhsFriendlyName, rhsFriendlyName)) {
+ return false;
+ }
+ }
+ {
+ String lhsSpecialText;
+ lhsSpecialText = this.getSpecialText();
+ String rhsSpecialText;
+ rhsSpecialText = that.getSpecialText();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "specialText", lhsSpecialText), LocatorUtils.property(thatLocator, "specialText", rhsSpecialText), lhsSpecialText, rhsSpecialText)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theTarget;
+ theTarget = this.getTarget();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "target", theTarget), currentHashCode, theTarget);
+ }
+ {
+ IdentificationNumber theIdentificationNumber;
+ theIdentificationNumber = this.getIdentificationNumber();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "identificationNumber", theIdentificationNumber), currentHashCode, theIdentificationNumber);
+ }
+ {
+ String thePublicURL;
+ thePublicURL = this.getPublicURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "publicURL", thePublicURL), currentHashCode, thePublicURL);
+ }
+ {
+ String theFriendlyName;
+ theFriendlyName = this.getFriendlyName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "friendlyName", theFriendlyName), currentHashCode, theFriendlyName);
+ }
+ {
+ String theSpecialText;
+ theSpecialText = this.getSpecialText();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "specialText", theSpecialText), currentHashCode, theSpecialText);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/STORK.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/STORK.java
new file mode 100644
index 000000000..59b300e95
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/STORK.java
@@ -0,0 +1,342 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}C-PEPS" maxOccurs="unbounded"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}SAMLSigningParameter"/>
+ * &lt;/sequence>
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}QualityAuthenticationAssuranceLevel" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}Attributes" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "cpeps",
+ "samlSigningParameter",
+ "qualityAuthenticationAssuranceLevel",
+ "attributes"
+})
+@XmlRootElement(name = "STORK")
+
+
+
+public class STORK
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "C-PEPS")
+ protected List<CPEPS> cpeps;
+ @XmlElement(name = "SAMLSigningParameter")
+ protected SAMLSigningParameter samlSigningParameter;
+ @XmlElement(name = "QualityAuthenticationAssuranceLevel")
+ protected Integer qualityAuthenticationAssuranceLevel;
+ @XmlElement(name = "Attributes")
+ protected List<StorkAttribute> attributes;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the cpeps property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the cpeps property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCPEPS().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CPEPS }
+ *
+ *
+ */
+ @OneToMany(targetEntity = CPEPS.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<CPEPS> getCPEPS() {
+ if (cpeps == null) {
+ cpeps = new ArrayList<CPEPS>();
+ }
+ return this.cpeps;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setCPEPS(List<CPEPS> cpeps) {
+ this.cpeps = cpeps;
+ }
+
+ /**
+ * Gets the value of the samlSigningParameter property.
+ *
+ * @return
+ * possible object is
+ * {@link SAMLSigningParameter }
+ *
+ */
+ @ManyToOne(targetEntity = SAMLSigningParameter.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public SAMLSigningParameter getSAMLSigningParameter() {
+ return samlSigningParameter;
+ }
+
+ /**
+ * Sets the value of the samlSigningParameter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SAMLSigningParameter }
+ *
+ */
+ public void setSAMLSigningParameter(SAMLSigningParameter value) {
+ this.samlSigningParameter = value;
+ }
+
+ /**
+ * Gets the value of the qualityAuthenticationAssuranceLevel property.
+ *
+ * @return
+ * possible object is
+ * {@link Integer }
+ *
+ */
+
+
+ public Integer getQualityAuthenticationAssuranceLevel() {
+ return qualityAuthenticationAssuranceLevel;
+ }
+
+ /**
+ * Sets the value of the qualityAuthenticationAssuranceLevel property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Integer }
+ *
+ */
+ public void setQualityAuthenticationAssuranceLevel(Integer value) {
+ this.qualityAuthenticationAssuranceLevel = value;
+ }
+
+ /**
+ * Gets the value of the attributes property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attributes property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttributes().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link StorkAttribute }
+ *
+ *
+ */
+ @OneToMany(targetEntity = StorkAttribute.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<StorkAttribute> getAttributes() {
+ if (attributes == null) {
+ attributes = new ArrayList<StorkAttribute>();
+ }
+ return this.attributes;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setAttributes(List<StorkAttribute> attributes) {
+ this.attributes = attributes;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof STORK)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final STORK that = ((STORK) object);
+ {
+ List<CPEPS> lhsCPEPS;
+ lhsCPEPS = (((this.cpeps!= null)&&(!this.cpeps.isEmpty()))?this.getCPEPS():null);
+ List<CPEPS> rhsCPEPS;
+ rhsCPEPS = (((that.cpeps!= null)&&(!that.cpeps.isEmpty()))?that.getCPEPS():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "cpeps", lhsCPEPS), LocatorUtils.property(thatLocator, "cpeps", rhsCPEPS), lhsCPEPS, rhsCPEPS)) {
+ return false;
+ }
+ }
+ {
+ SAMLSigningParameter lhsSAMLSigningParameter;
+ lhsSAMLSigningParameter = this.getSAMLSigningParameter();
+ SAMLSigningParameter rhsSAMLSigningParameter;
+ rhsSAMLSigningParameter = that.getSAMLSigningParameter();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "samlSigningParameter", lhsSAMLSigningParameter), LocatorUtils.property(thatLocator, "samlSigningParameter", rhsSAMLSigningParameter), lhsSAMLSigningParameter, rhsSAMLSigningParameter)) {
+ return false;
+ }
+ }
+ {
+ Integer lhsQualityAuthenticationAssuranceLevel;
+ lhsQualityAuthenticationAssuranceLevel = this.getQualityAuthenticationAssuranceLevel();
+ Integer rhsQualityAuthenticationAssuranceLevel;
+ rhsQualityAuthenticationAssuranceLevel = that.getQualityAuthenticationAssuranceLevel();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "qualityAuthenticationAssuranceLevel", lhsQualityAuthenticationAssuranceLevel), LocatorUtils.property(thatLocator, "qualityAuthenticationAssuranceLevel", rhsQualityAuthenticationAssuranceLevel), lhsQualityAuthenticationAssuranceLevel, rhsQualityAuthenticationAssuranceLevel)) {
+ return false;
+ }
+ }
+ {
+ List<StorkAttribute> lhsAttributes;
+ lhsAttributes = (((this.attributes!= null)&&(!this.attributes.isEmpty()))?this.getAttributes():null);
+ List<StorkAttribute> rhsAttributes;
+ rhsAttributes = (((that.attributes!= null)&&(!that.attributes.isEmpty()))?that.getAttributes():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "attributes", lhsAttributes), LocatorUtils.property(thatLocator, "attributes", rhsAttributes), lhsAttributes, rhsAttributes)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<CPEPS> theCPEPS;
+ theCPEPS = (((this.cpeps!= null)&&(!this.cpeps.isEmpty()))?this.getCPEPS():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "cpeps", theCPEPS), currentHashCode, theCPEPS);
+ }
+ {
+ SAMLSigningParameter theSAMLSigningParameter;
+ theSAMLSigningParameter = this.getSAMLSigningParameter();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "samlSigningParameter", theSAMLSigningParameter), currentHashCode, theSAMLSigningParameter);
+ }
+ {
+ Integer theQualityAuthenticationAssuranceLevel;
+ theQualityAuthenticationAssuranceLevel = this.getQualityAuthenticationAssuranceLevel();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "qualityAuthenticationAssuranceLevel", theQualityAuthenticationAssuranceLevel), currentHashCode, theQualityAuthenticationAssuranceLevel);
+ }
+ {
+ List<StorkAttribute> theAttributes;
+ theAttributes = (((this.attributes!= null)&&(!this.attributes.isEmpty()))?this.getAttributes():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributes", theAttributes), currentHashCode, theAttributes);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Schema.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Schema.java
new file mode 100644
index 000000000..2772ff984
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/Schema.java
@@ -0,0 +1,205 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="namespace" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="schemaLocation" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+
+
+
+public class Schema
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "namespace", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String namespace;
+ @XmlAttribute(name = "schemaLocation", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String schemaLocation;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the namespace property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ /**
+ * Sets the value of the namespace property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNamespace(String value) {
+ this.namespace = value;
+ }
+
+ /**
+ * Gets the value of the schemaLocation property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getSchemaLocation() {
+ return schemaLocation;
+ }
+
+ /**
+ * Sets the value of the schemaLocation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSchemaLocation(String value) {
+ this.schemaLocation = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof Schema)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final Schema that = ((Schema) object);
+ {
+ String lhsNamespace;
+ lhsNamespace = this.getNamespace();
+ String rhsNamespace;
+ rhsNamespace = that.getNamespace();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "namespace", lhsNamespace), LocatorUtils.property(thatLocator, "namespace", rhsNamespace), lhsNamespace, rhsNamespace)) {
+ return false;
+ }
+ }
+ {
+ String lhsSchemaLocation;
+ lhsSchemaLocation = this.getSchemaLocation();
+ String rhsSchemaLocation;
+ rhsSchemaLocation = that.getSchemaLocation();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "schemaLocation", lhsSchemaLocation), LocatorUtils.property(thatLocator, "schemaLocation", rhsSchemaLocation), lhsSchemaLocation, rhsSchemaLocation)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theNamespace;
+ theNamespace = this.getNamespace();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "namespace", theNamespace), currentHashCode, theNamespace);
+ }
+ {
+ String theSchemaLocation;
+ theSchemaLocation = this.getSchemaLocation();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "schemaLocation", theSchemaLocation), currentHashCode, theSchemaLocation);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SchemaLocationType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SchemaLocationType.java
new file mode 100644
index 000000000..e7cf0e2ee
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SchemaLocationType.java
@@ -0,0 +1,195 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * Spezifiziert die Lage von XML Schemas
+ *
+ *
+ * <p>Java class for SchemaLocationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SchemaLocationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Schema" maxOccurs="unbounded">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="namespace" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="schemaLocation" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SchemaLocationType", propOrder = {
+ "schema"
+})
+
+
+
+public class SchemaLocationType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Schema", required = true)
+ protected List<Schema> schema;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the schema property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the schema property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSchema().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Schema }
+ *
+ *
+ */
+ @OneToMany(targetEntity = Schema.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<Schema> getSchema() {
+ if (schema == null) {
+ schema = new ArrayList<Schema>();
+ }
+ return this.schema;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setSchema(List<Schema> schema) {
+ this.schema = schema;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SchemaLocationType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SchemaLocationType that = ((SchemaLocationType) object);
+ {
+ List<Schema> lhsSchema;
+ lhsSchema = (((this.schema!= null)&&(!this.schema.isEmpty()))?this.getSchema():null);
+ List<Schema> rhsSchema;
+ rhsSchema = (((that.schema!= null)&&(!that.schema.isEmpty()))?that.getSchema():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "schema", lhsSchema), LocatorUtils.property(thatLocator, "schema", rhsSchema), lhsSchema, rhsSchema)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<Schema> theSchema;
+ theSchema = (((this.schema!= null)&&(!this.schema.isEmpty()))?this.getSchema():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "schema", theSchema), currentHashCode, theSchema);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SecurityLayer.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SecurityLayer.java
new file mode 100644
index 000000000..75d6148a4
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SecurityLayer.java
@@ -0,0 +1,183 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="TransformsInfo" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TransformsInfoType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "transformsInfo"
+})
+
+
+
+public class SecurityLayer
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TransformsInfo", required = true)
+ protected List<TransformsInfoType> transformsInfo;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the transformsInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the transformsInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTransformsInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TransformsInfoType }
+ *
+ *
+ */
+ @OneToMany(targetEntity = TransformsInfoType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<TransformsInfoType> getTransformsInfo() {
+ if (transformsInfo == null) {
+ transformsInfo = new ArrayList<TransformsInfoType>();
+ }
+ return this.transformsInfo;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setTransformsInfo(List<TransformsInfoType> transformsInfo) {
+ this.transformsInfo = transformsInfo;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SecurityLayer)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SecurityLayer that = ((SecurityLayer) object);
+ {
+ List<TransformsInfoType> lhsTransformsInfo;
+ lhsTransformsInfo = (((this.transformsInfo!= null)&&(!this.transformsInfo.isEmpty()))?this.getTransformsInfo():null);
+ List<TransformsInfoType> rhsTransformsInfo;
+ rhsTransformsInfo = (((that.transformsInfo!= null)&&(!that.transformsInfo.isEmpty()))?that.getTransformsInfo():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "transformsInfo", lhsTransformsInfo), LocatorUtils.property(thatLocator, "transformsInfo", rhsTransformsInfo), lhsTransformsInfo, rhsTransformsInfo)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<TransformsInfoType> theTransformsInfo;
+ theTransformsInfo = (((this.transformsInfo!= null)&&(!this.transformsInfo.isEmpty()))?this.getTransformsInfo():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "transformsInfo", theTransformsInfo), currentHashCode, theTransformsInfo);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureCreationParameterType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureCreationParameterType.java
new file mode 100644
index 000000000..bdd5f731c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureCreationParameterType.java
@@ -0,0 +1,218 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * Enthaelt Informationen zu einem KeyStore bzw. Key
+ * zur STORK SAML AuthnRequest Signaturerstellung
+ *
+ *
+ * <p>Java class for SignatureCreationParameterType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureCreationParameterType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}KeyStore"/>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}KeyName"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureCreationParameterType", propOrder = {
+ "keyStore",
+ "keyName"
+})
+
+
+
+public class SignatureCreationParameterType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "KeyStore", required = true)
+ protected KeyStore keyStore;
+ @XmlElement(name = "KeyName", required = true)
+ protected KeyName keyName;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the keyStore property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyStore }
+ *
+ */
+ @ManyToOne(targetEntity = KeyStore.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public KeyStore getKeyStore() {
+ return keyStore;
+ }
+
+ /**
+ * Sets the value of the keyStore property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyStore }
+ *
+ */
+ public void setKeyStore(KeyStore value) {
+ this.keyStore = value;
+ }
+
+ /**
+ * Gets the value of the keyName property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyName }
+ *
+ */
+ @ManyToOne(targetEntity = KeyName.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public KeyName getKeyName() {
+ return keyName;
+ }
+
+ /**
+ * Sets the value of the keyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyName }
+ *
+ */
+ public void setKeyName(KeyName value) {
+ this.keyName = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SignatureCreationParameterType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SignatureCreationParameterType that = ((SignatureCreationParameterType) object);
+ {
+ KeyStore lhsKeyStore;
+ lhsKeyStore = this.getKeyStore();
+ KeyStore rhsKeyStore;
+ rhsKeyStore = that.getKeyStore();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "keyStore", lhsKeyStore), LocatorUtils.property(thatLocator, "keyStore", rhsKeyStore), lhsKeyStore, rhsKeyStore)) {
+ return false;
+ }
+ }
+ {
+ KeyName lhsKeyName;
+ lhsKeyName = this.getKeyName();
+ KeyName rhsKeyName;
+ rhsKeyName = that.getKeyName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "keyName", lhsKeyName), LocatorUtils.property(thatLocator, "keyName", rhsKeyName), lhsKeyName, rhsKeyName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ KeyStore theKeyStore;
+ theKeyStore = this.getKeyStore();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "keyStore", theKeyStore), currentHashCode, theKeyStore);
+ }
+ {
+ KeyName theKeyName;
+ theKeyName = this.getKeyName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "keyName", theKeyName), currentHashCode, theKeyName);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureVerificationParameterType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureVerificationParameterType.java
new file mode 100644
index 000000000..dd3037bc9
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/SignatureVerificationParameterType.java
@@ -0,0 +1,168 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * Enthaelt Informationen zur Verfikation von
+ * Signaturen einer STORK SAML Response
+ *
+ *
+ * <p>Java class for SignatureVerificationParameterType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureVerificationParameterType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureVerificationParameterType", propOrder = {
+ "trustProfileID"
+})
+
+
+
+public class SignatureVerificationParameterType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TrustProfileID", required = true)
+ protected String trustProfileID;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the trustProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ /**
+ * Sets the value of the trustProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustProfileID(String value) {
+ this.trustProfileID = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof SignatureVerificationParameterType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final SignatureVerificationParameterType that = ((SignatureVerificationParameterType) object);
+ {
+ String lhsTrustProfileID;
+ lhsTrustProfileID = this.getTrustProfileID();
+ String rhsTrustProfileID;
+ rhsTrustProfileID = that.getTrustProfileID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustProfileID", lhsTrustProfileID), LocatorUtils.property(thatLocator, "trustProfileID", rhsTrustProfileID), lhsTrustProfileID, rhsTrustProfileID)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theTrustProfileID;
+ theTrustProfileID = this.getTrustProfileID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustProfileID", theTrustProfileID), currentHashCode, theTrustProfileID);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/StorkAttribute.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/StorkAttribute.java
new file mode 100644
index 000000000..d9ff523e7
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/StorkAttribute.java
@@ -0,0 +1,213 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for StorkAttribute complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="StorkAttribute">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="mandatory" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StorkAttribute", propOrder = {
+ "name",
+ "mandatory"
+})
+
+
+
+public class StorkAttribute
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected String name;
+ @XmlElement(required = true, type = String.class)
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean mandatory;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the mandatory property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isMandatory() {
+ return mandatory;
+ }
+
+ /**
+ * Sets the value of the mandatory property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMandatory(Boolean value) {
+ this.mandatory = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof StorkAttribute)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final StorkAttribute that = ((StorkAttribute) object);
+ {
+ String lhsName;
+ lhsName = this.getName();
+ String rhsName;
+ rhsName = that.getName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "name", lhsName), LocatorUtils.property(thatLocator, "name", rhsName), lhsName, rhsName)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsMandatory;
+ lhsMandatory = this.isMandatory();
+ Boolean rhsMandatory;
+ rhsMandatory = that.isMandatory();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mandatory", lhsMandatory), LocatorUtils.property(thatLocator, "mandatory", rhsMandatory), lhsMandatory, rhsMandatory)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theName;
+ theName = this.getName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "name", theName), currentHashCode, theName);
+ }
+ {
+ Boolean theMandatory;
+ theMandatory = this.isMandatory();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mandatory", theMandatory), currentHashCode, theMandatory);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplateType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplateType.java
new file mode 100644
index 000000000..b81437c05
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplateType.java
@@ -0,0 +1,165 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * das Attribut URL spezifiziert die Lage des
+ * Templates
+ *
+ *
+ * <p>Java class for TemplateType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TemplateType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="URL" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TemplateType")
+
+
+
+public class TemplateType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "URL", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String url;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the url property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getURL() {
+ return url;
+ }
+
+ /**
+ * Sets the value of the url property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURL(String value) {
+ this.url = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof TemplateType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final TemplateType that = ((TemplateType) object);
+ {
+ String lhsURL;
+ lhsURL = this.getURL();
+ String rhsURL;
+ rhsURL = that.getURL();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "url", lhsURL), LocatorUtils.property(thatLocator, "url", rhsURL), lhsURL, rhsURL)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theURL;
+ theURL = this.getURL();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "url", theURL), currentHashCode, theURL);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplatesType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplatesType.java
new file mode 100644
index 000000000..d558230ab
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TemplatesType.java
@@ -0,0 +1,367 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for TemplatesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TemplatesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Template" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TemplateType" maxOccurs="3" minOccurs="0"/>
+ * &lt;element name="AditionalAuthBlockText" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="BKUSelectionCustomization" type="{http://www.buergerkarte.at/namespaces/moaconfig#}BKUSelectionCustomizationType" minOccurs="0"/>
+ * &lt;element name="BKUSelectionTemplate" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TransformsInfoType" minOccurs="0"/>
+ * &lt;element name="SendAssertionTemplate" type="{http://www.buergerkarte.at/namespaces/moaconfig#}TransformsInfoType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TemplatesType", propOrder = {
+ "template",
+ "aditionalAuthBlockText",
+ "bkuSelectionCustomization",
+ "bkuSelectionTemplate",
+ "sendAssertionTemplate"
+})
+
+
+
+public class TemplatesType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Template")
+ protected List<TemplateType> template;
+ @XmlElement(name = "AditionalAuthBlockText")
+ protected String aditionalAuthBlockText;
+ @XmlElement(name = "BKUSelectionCustomization")
+ protected BKUSelectionCustomizationType bkuSelectionCustomization;
+ @XmlElement(name = "BKUSelectionTemplate")
+ protected TransformsInfoType bkuSelectionTemplate;
+ @XmlElement(name = "SendAssertionTemplate")
+ protected TransformsInfoType sendAssertionTemplate;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the template property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the template property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTemplate().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TemplateType }
+ *
+ *
+ */
+ @OneToMany(targetEntity = TemplateType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<TemplateType> getTemplate() {
+ if (template == null) {
+ template = new ArrayList<TemplateType>();
+ }
+ return this.template;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setTemplate(List<TemplateType> template) {
+ this.template = template;
+ }
+
+ /**
+ * Gets the value of the aditionalAuthBlockText property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getAditionalAuthBlockText() {
+ return aditionalAuthBlockText;
+ }
+
+ /**
+ * Sets the value of the aditionalAuthBlockText property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAditionalAuthBlockText(String value) {
+ this.aditionalAuthBlockText = value;
+ }
+
+ /**
+ * Gets the value of the bkuSelectionCustomization property.
+ *
+ * @return
+ * possible object is
+ * {@link BKUSelectionCustomizationType }
+ *
+ */
+ @ManyToOne(targetEntity = BKUSelectionCustomizationType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public BKUSelectionCustomizationType getBKUSelectionCustomization() {
+ return bkuSelectionCustomization;
+ }
+
+ /**
+ * Sets the value of the bkuSelectionCustomization property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BKUSelectionCustomizationType }
+ *
+ */
+ public void setBKUSelectionCustomization(BKUSelectionCustomizationType value) {
+ this.bkuSelectionCustomization = value;
+ }
+
+ /**
+ * Gets the value of the bkuSelectionTemplate property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsInfoType }
+ *
+ */
+ @ManyToOne(targetEntity = TransformsInfoType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public TransformsInfoType getBKUSelectionTemplate() {
+ return bkuSelectionTemplate;
+ }
+
+ /**
+ * Sets the value of the bkuSelectionTemplate property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsInfoType }
+ *
+ */
+ public void setBKUSelectionTemplate(TransformsInfoType value) {
+ this.bkuSelectionTemplate = value;
+ }
+
+ /**
+ * Gets the value of the sendAssertionTemplate property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsInfoType }
+ *
+ */
+ @ManyToOne(targetEntity = TransformsInfoType.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public TransformsInfoType getSendAssertionTemplate() {
+ return sendAssertionTemplate;
+ }
+
+ /**
+ * Sets the value of the sendAssertionTemplate property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsInfoType }
+ *
+ */
+ public void setSendAssertionTemplate(TransformsInfoType value) {
+ this.sendAssertionTemplate = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof TemplatesType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final TemplatesType that = ((TemplatesType) object);
+ {
+ List<TemplateType> lhsTemplate;
+ lhsTemplate = (((this.template!= null)&&(!this.template.isEmpty()))?this.getTemplate():null);
+ List<TemplateType> rhsTemplate;
+ rhsTemplate = (((that.template!= null)&&(!that.template.isEmpty()))?that.getTemplate():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "template", lhsTemplate), LocatorUtils.property(thatLocator, "template", rhsTemplate), lhsTemplate, rhsTemplate)) {
+ return false;
+ }
+ }
+ {
+ String lhsAditionalAuthBlockText;
+ lhsAditionalAuthBlockText = this.getAditionalAuthBlockText();
+ String rhsAditionalAuthBlockText;
+ rhsAditionalAuthBlockText = that.getAditionalAuthBlockText();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "aditionalAuthBlockText", lhsAditionalAuthBlockText), LocatorUtils.property(thatLocator, "aditionalAuthBlockText", rhsAditionalAuthBlockText), lhsAditionalAuthBlockText, rhsAditionalAuthBlockText)) {
+ return false;
+ }
+ }
+ {
+ BKUSelectionCustomizationType lhsBKUSelectionCustomization;
+ lhsBKUSelectionCustomization = this.getBKUSelectionCustomization();
+ BKUSelectionCustomizationType rhsBKUSelectionCustomization;
+ rhsBKUSelectionCustomization = that.getBKUSelectionCustomization();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "bkuSelectionCustomization", lhsBKUSelectionCustomization), LocatorUtils.property(thatLocator, "bkuSelectionCustomization", rhsBKUSelectionCustomization), lhsBKUSelectionCustomization, rhsBKUSelectionCustomization)) {
+ return false;
+ }
+ }
+ {
+ TransformsInfoType lhsBKUSelectionTemplate;
+ lhsBKUSelectionTemplate = this.getBKUSelectionTemplate();
+ TransformsInfoType rhsBKUSelectionTemplate;
+ rhsBKUSelectionTemplate = that.getBKUSelectionTemplate();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "bkuSelectionTemplate", lhsBKUSelectionTemplate), LocatorUtils.property(thatLocator, "bkuSelectionTemplate", rhsBKUSelectionTemplate), lhsBKUSelectionTemplate, rhsBKUSelectionTemplate)) {
+ return false;
+ }
+ }
+ {
+ TransformsInfoType lhsSendAssertionTemplate;
+ lhsSendAssertionTemplate = this.getSendAssertionTemplate();
+ TransformsInfoType rhsSendAssertionTemplate;
+ rhsSendAssertionTemplate = that.getSendAssertionTemplate();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "sendAssertionTemplate", lhsSendAssertionTemplate), LocatorUtils.property(thatLocator, "sendAssertionTemplate", rhsSendAssertionTemplate), lhsSendAssertionTemplate, rhsSendAssertionTemplate)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<TemplateType> theTemplate;
+ theTemplate = (((this.template!= null)&&(!this.template.isEmpty()))?this.getTemplate():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "template", theTemplate), currentHashCode, theTemplate);
+ }
+ {
+ String theAditionalAuthBlockText;
+ theAditionalAuthBlockText = this.getAditionalAuthBlockText();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "aditionalAuthBlockText", theAditionalAuthBlockText), currentHashCode, theAditionalAuthBlockText);
+ }
+ {
+ BKUSelectionCustomizationType theBKUSelectionCustomization;
+ theBKUSelectionCustomization = this.getBKUSelectionCustomization();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "bkuSelectionCustomization", theBKUSelectionCustomization), currentHashCode, theBKUSelectionCustomization);
+ }
+ {
+ TransformsInfoType theBKUSelectionTemplate;
+ theBKUSelectionTemplate = this.getBKUSelectionTemplate();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "bkuSelectionTemplate", theBKUSelectionTemplate), currentHashCode, theBKUSelectionTemplate);
+ }
+ {
+ TransformsInfoType theSendAssertionTemplate;
+ theSendAssertionTemplate = this.getSendAssertionTemplate();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "sendAssertionTemplate", theSendAssertionTemplate), currentHashCode, theSendAssertionTemplate);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentials.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentials.java
new file mode 100644
index 000000000..2e80cb0d5
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentials.java
@@ -0,0 +1,298 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="credentialOID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="enableTestCredentials" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "credentialOID"
+})
+
+
+
+public class TestCredentials
+ implements Serializable, Equals, HashCode
+{
+
+ protected List<String> credentialOID;
+ @XmlAttribute(name = "enableTestCredentials")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean enableTestCredentials;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<TestCredentialsCredentialOIDItem> credentialOIDItems;
+
+ @XmlTransient
+ protected boolean useTestIDLTrustStore;
+
+ @XmlTransient
+ protected boolean useTestAuthBlockTrustStore;
+
+
+ /**
+ * Gets the value of the credentialOID property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the credentialOID property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCredentialOID().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getCredentialOID() {
+ if (credentialOID == null) {
+ credentialOID = new ArrayList<String>();
+ }
+ return this.credentialOID;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setCredentialOID(List<String> credentialOID) {
+ this.credentialOID = credentialOID;
+ }
+
+ /**
+ * Gets the value of the enableTestCredentials property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public boolean isEnableTestCredentials() {
+ if (enableTestCredentials == null) {
+ return new ZeroOneBooleanAdapter().unmarshal("false");
+ } else {
+ return enableTestCredentials;
+ }
+ }
+
+ /**
+ * Sets the value of the enableTestCredentials property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEnableTestCredentials(Boolean value) {
+ this.enableTestCredentials = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = TestCredentialsCredentialOIDItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<TestCredentialsCredentialOIDItem> getCredentialOIDItems() {
+ if (this.credentialOIDItems == null) {
+ this.credentialOIDItems = new ArrayList<TestCredentialsCredentialOIDItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.credentialOID)) {
+ this.credentialOID = ItemUtils.wrap(this.credentialOID, this.credentialOIDItems, TestCredentialsCredentialOIDItem.class);
+ }
+ return this.credentialOIDItems;
+ }
+
+ public void setCredentialOIDItems(List<TestCredentialsCredentialOIDItem> value) {
+ this.credentialOID = null;
+ this.credentialOIDItems = null;
+ this.credentialOIDItems = value;
+ if (this.credentialOIDItems == null) {
+ this.credentialOIDItems = new ArrayList<TestCredentialsCredentialOIDItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.credentialOID)) {
+ this.credentialOID = ItemUtils.wrap(this.credentialOID, this.credentialOIDItems, TestCredentialsCredentialOIDItem.class);
+ }
+ }
+
+
+
+ /**
+ * @return the useTestIDLTrustStore
+ */
+ public boolean isUseTestIDLTrustStore() {
+ return useTestIDLTrustStore;
+ }
+
+ /**
+ * @param useTestIDLTrustStore the useTestIDLTrustStore to set
+ */
+ public void setUseTestIDLTrustStore(boolean useTestIDLTrustStore) {
+ this.useTestIDLTrustStore = useTestIDLTrustStore;
+ }
+
+ /**
+ * @return the useTestAuthBlockTrustStore
+ */
+ public boolean isUseTestAuthBlockTrustStore() {
+ return useTestAuthBlockTrustStore;
+ }
+
+ /**
+ * @param useTestAuthBlockTrustStore the useTestAuthBlockTrustStore to set
+ */
+ public void setUseTestAuthBlockTrustStore(boolean useTestAuthBlockTrustStore) {
+ this.useTestAuthBlockTrustStore = useTestAuthBlockTrustStore;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof TestCredentials)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final TestCredentials that = ((TestCredentials) object);
+ {
+ List<String> lhsCredentialOID;
+ lhsCredentialOID = (((this.credentialOID!= null)&&(!this.credentialOID.isEmpty()))?this.getCredentialOID():null);
+ List<String> rhsCredentialOID;
+ rhsCredentialOID = (((that.credentialOID!= null)&&(!that.credentialOID.isEmpty()))?that.getCredentialOID():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "credentialOID", lhsCredentialOID), LocatorUtils.property(thatLocator, "credentialOID", rhsCredentialOID), lhsCredentialOID, rhsCredentialOID)) {
+ return false;
+ }
+ }
+ {
+ boolean lhsEnableTestCredentials;
+ lhsEnableTestCredentials = ((this.enableTestCredentials!= null)?this.isEnableTestCredentials():false);
+ boolean rhsEnableTestCredentials;
+ rhsEnableTestCredentials = ((that.enableTestCredentials!= null)?that.isEnableTestCredentials():false);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "enableTestCredentials", lhsEnableTestCredentials), LocatorUtils.property(thatLocator, "enableTestCredentials", rhsEnableTestCredentials), lhsEnableTestCredentials, rhsEnableTestCredentials)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ List<String> theCredentialOID;
+ theCredentialOID = (((this.credentialOID!= null)&&(!this.credentialOID.isEmpty()))?this.getCredentialOID():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "credentialOID", theCredentialOID), currentHashCode, theCredentialOID);
+ }
+ {
+ boolean theEnableTestCredentials;
+ theEnableTestCredentials = ((this.enableTestCredentials!= null)?this.isEnableTestCredentials():false);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "enableTestCredentials", theEnableTestCredentials), currentHashCode, theEnableTestCredentials);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentialsCredentialOIDItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentialsCredentialOIDItem.java
new file mode 100644
index 000000000..3e386be66
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TestCredentialsCredentialOIDItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class TestCredentialsCredentialOIDItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "credentialOID", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TimeOuts.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TimeOuts.java
new file mode 100644
index 000000000..8d1560a51
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TimeOuts.java
@@ -0,0 +1,253 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.math.BigInteger;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Assertion" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;element name="MOASessionCreated" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;element name="MOASessionUpdated" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "assertion",
+ "moaSessionCreated",
+ "moaSessionUpdated"
+})
+
+
+
+public class TimeOuts
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "Assertion", required = true)
+ protected BigInteger assertion;
+ @XmlElement(name = "MOASessionCreated", required = true)
+ protected BigInteger moaSessionCreated;
+ @XmlElement(name = "MOASessionUpdated", required = true)
+ protected BigInteger moaSessionUpdated;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the assertion property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+
+
+ public BigInteger getAssertion() {
+ return assertion;
+ }
+
+ /**
+ * Sets the value of the assertion property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setAssertion(BigInteger value) {
+ this.assertion = value;
+ }
+
+ /**
+ * Gets the value of the moaSessionCreated property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+
+
+ public BigInteger getMOASessionCreated() {
+ return moaSessionCreated;
+ }
+
+ /**
+ * Sets the value of the moaSessionCreated property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setMOASessionCreated(BigInteger value) {
+ this.moaSessionCreated = value;
+ }
+
+ /**
+ * Gets the value of the moaSessionUpdated property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+
+
+ public BigInteger getMOASessionUpdated() {
+ return moaSessionUpdated;
+ }
+
+ /**
+ * Sets the value of the moaSessionUpdated property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setMOASessionUpdated(BigInteger value) {
+ this.moaSessionUpdated = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof TimeOuts)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final TimeOuts that = ((TimeOuts) object);
+ {
+ BigInteger lhsAssertion;
+ lhsAssertion = this.getAssertion();
+ BigInteger rhsAssertion;
+ rhsAssertion = that.getAssertion();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "assertion", lhsAssertion), LocatorUtils.property(thatLocator, "assertion", rhsAssertion), lhsAssertion, rhsAssertion)) {
+ return false;
+ }
+ }
+ {
+ BigInteger lhsMOASessionCreated;
+ lhsMOASessionCreated = this.getMOASessionCreated();
+ BigInteger rhsMOASessionCreated;
+ rhsMOASessionCreated = that.getMOASessionCreated();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "moaSessionCreated", lhsMOASessionCreated), LocatorUtils.property(thatLocator, "moaSessionCreated", rhsMOASessionCreated), lhsMOASessionCreated, rhsMOASessionCreated)) {
+ return false;
+ }
+ }
+ {
+ BigInteger lhsMOASessionUpdated;
+ lhsMOASessionUpdated = this.getMOASessionUpdated();
+ BigInteger rhsMOASessionUpdated;
+ rhsMOASessionUpdated = that.getMOASessionUpdated();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "moaSessionUpdated", lhsMOASessionUpdated), LocatorUtils.property(thatLocator, "moaSessionUpdated", rhsMOASessionUpdated), lhsMOASessionUpdated, rhsMOASessionUpdated)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ BigInteger theAssertion;
+ theAssertion = this.getAssertion();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "assertion", theAssertion), currentHashCode, theAssertion);
+ }
+ {
+ BigInteger theMOASessionCreated;
+ theMOASessionCreated = this.getMOASessionCreated();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "moaSessionCreated", theMOASessionCreated), currentHashCode, theMOASessionCreated);
+ }
+ {
+ BigInteger theMOASessionUpdated;
+ theMOASessionUpdated = this.getMOASessionUpdated();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "moaSessionUpdated", theMOASessionUpdated), currentHashCode, theMOASessionUpdated);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TransformsInfoType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TransformsInfoType.java
new file mode 100644
index 000000000..352d7fa4a
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TransformsInfoType.java
@@ -0,0 +1,229 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * das Attribut filename verweist auf eine Datei mit
+ * globalem Element TransformsInfo vom Typ sl10:TransformsInfo; diese
+ * TransformsInfo werden in den CreateXMLSignatureRequest fuer die
+ * Signatur des AUTH-Blocks inkludiert
+ *
+ *
+ * <p>Java class for TransformsInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformsInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="transformation" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;attribute name="filename" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsInfoType", propOrder = {
+ "transformation"
+})
+
+
+
+public class TransformsInfoType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(required = true)
+ protected byte[] transformation;
+ @XmlAttribute(name = "filename", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String filename;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ @XmlTransient
+ protected boolean delete = false;
+
+ /**
+ * Gets the value of the transformation property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+
+
+ @Lob
+ public byte[] getTransformation() {
+ return transformation;
+ }
+
+ /**
+ * Sets the value of the transformation property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setTransformation(byte[] value) {
+ this.transformation = value;
+ }
+
+ /**
+ * Gets the value of the filename property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getFilename() {
+ return filename;
+ }
+
+ /**
+ * Sets the value of the filename property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFilename(String value) {
+ this.filename = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+
+
+ public boolean isDelete() {
+ return delete;
+ }
+
+ public void setDelete(boolean delete) {
+ this.delete = delete;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof TransformsInfoType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final TransformsInfoType that = ((TransformsInfoType) object);
+ {
+ byte[] lhsTransformation;
+ lhsTransformation = this.getTransformation();
+ byte[] rhsTransformation;
+ rhsTransformation = that.getTransformation();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "transformation", lhsTransformation), LocatorUtils.property(thatLocator, "transformation", rhsTransformation), lhsTransformation, rhsTransformation)) {
+ return false;
+ }
+ }
+ {
+ String lhsFilename;
+ lhsFilename = this.getFilename();
+ String rhsFilename;
+ rhsFilename = that.getFilename();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "filename", lhsFilename), LocatorUtils.property(thatLocator, "filename", rhsFilename), lhsFilename, rhsFilename)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ byte[] theTransformation;
+ theTransformation = this.getTransformation();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "transformation", theTransformation), currentHashCode, theTransformation);
+ }
+ {
+ String theFilename;
+ theFilename = this.getFilename();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "filename", theFilename), currentHashCode, theFilename);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TrustAnchor.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TrustAnchor.java
new file mode 100644
index 000000000..296fd2923
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/TrustAnchor.java
@@ -0,0 +1,131 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/moaconfig#}X509IssuerSerialType">
+ * &lt;attribute name="mode" use="required" type="{http://www.buergerkarte.at/namespaces/moaconfig#}ChainingModeType" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+
+
+public class TrustAnchor
+ extends X509IssuerSerialType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlAttribute(name = "mode", required = true)
+ protected ChainingModeType mode;
+
+ /**
+ * Gets the value of the mode property.
+ *
+ * @return
+ * possible object is
+ * {@link ChainingModeType }
+ *
+ */
+
+
+ @Enumerated(EnumType.STRING)
+ public ChainingModeType getMode() {
+ return mode;
+ }
+
+ /**
+ * Sets the value of the mode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ChainingModeType }
+ *
+ */
+ public void setMode(ChainingModeType value) {
+ this.mode = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof TrustAnchor)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ if (!super.equals(thisLocator, thatLocator, object, strategy)) {
+ return false;
+ }
+ final TrustAnchor that = ((TrustAnchor) object);
+ {
+ ChainingModeType lhsMode;
+ lhsMode = this.getMode();
+ ChainingModeType rhsMode;
+ rhsMode = that.getMode();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mode", lhsMode), LocatorUtils.property(thatLocator, "mode", rhsMode), lhsMode, rhsMode)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = super.hashCode(locator, strategy);
+ {
+ ChainingModeType theMode;
+ theMode = this.getMode();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mode", theMode), currentHashCode, theMode);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/UserDatabase.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/UserDatabase.java
new file mode 100644
index 000000000..48a80566a
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/UserDatabase.java
@@ -0,0 +1,1077 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import com.sun.tools.xjc.runtime.ZeroOneBooleanAdapter;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for UserDatabase complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="UserDatabase">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="bpk" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="familyname" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="givenname" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="institut" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="mail" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="phone" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="username" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="password" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="password_salt" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="userRequestTokken" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="isActive" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="isAdmin" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="isUsernamePasswordAllowed" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="isMandateUser" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="isMailAddressVerified" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="isAdminRequest" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="isPVP2Generated" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ * &lt;element name="lastLogin" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="OnlineApplication" type="{http://www.buergerkarte.at/namespaces/moaconfig#}OnlineApplication" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="onlyBusinessService" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;element name="businessServiceType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UserDatabase", propOrder = {
+ "bpk",
+ "familyname",
+ "givenname",
+ "institut",
+ "mail",
+ "phone",
+ "username",
+ "password",
+ "passwordSalt",
+ "userRequestTokken",
+ "isActive",
+ "isAdmin",
+ "isUsernamePasswordAllowed",
+ "isMandateUser",
+ "isMailAddressVerified",
+ "isAdminRequest",
+ "isPVP2Generated",
+ "lastLogin",
+ "onlineApplication",
+ "onlyBusinessService",
+ "businessServiceType"
+})
+
+
+
+public class UserDatabase
+ implements Serializable, Equals, HashCode
+{
+
+ protected String bpk;
+ protected String familyname;
+ protected String givenname;
+ @XmlElement(required = true)
+ protected String institut;
+ @XmlElement(required = true)
+ protected String mail;
+ @XmlElement(required = true)
+ protected String phone;
+ @XmlElement(required = true)
+ protected String username;
+ @XmlElement(required = true)
+ protected String password;
+ @XmlElement(name = "password_salt")
+ protected String passwordSalt;
+ protected String userRequestTokken;
+ @XmlElement(required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isActive;
+ @XmlElement(required = true, type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isAdmin;
+ @XmlElement(type = String.class, defaultValue = "true")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isUsernamePasswordAllowed;
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isMandateUser;
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isMailAddressVerified;
+ @XmlElement(type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isAdminRequest;
+ @XmlElement(type = String.class)
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean isPVP2Generated;
+ @XmlElement(required = true)
+ protected String lastLogin;
+ @XmlElement(name = "OnlineApplication")
+ protected List<OnlineApplication> onlineApplication;
+ @XmlElement(required = true, type = String.class, defaultValue = "false")
+ @XmlJavaTypeAdapter(ZeroOneBooleanAdapter.class)
+ @XmlSchemaType(name = "boolean")
+ protected Boolean onlyBusinessService;
+ protected String businessServiceType;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the bpk property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getBpk() {
+ return bpk;
+ }
+
+ /**
+ * Sets the value of the bpk property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBpk(String value) {
+ this.bpk = value;
+ }
+
+ /**
+ * Gets the value of the familyname property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getFamilyname() {
+ return familyname;
+ }
+
+ /**
+ * Sets the value of the familyname property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFamilyname(String value) {
+ this.familyname = value;
+ }
+
+ /**
+ * Gets the value of the givenname property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getGivenname() {
+ return givenname;
+ }
+
+ /**
+ * Sets the value of the givenname property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setGivenname(String value) {
+ this.givenname = value;
+ }
+
+ /**
+ * Gets the value of the institut property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getInstitut() {
+ return institut;
+ }
+
+ /**
+ * Sets the value of the institut property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInstitut(String value) {
+ this.institut = value;
+ }
+
+ /**
+ * Gets the value of the mail property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getMail() {
+ return mail;
+ }
+
+ /**
+ * Sets the value of the mail property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMail(String value) {
+ this.mail = value;
+ }
+
+ /**
+ * Gets the value of the phone property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPhone() {
+ return phone;
+ }
+
+ /**
+ * Sets the value of the phone property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPhone(String value) {
+ this.phone = value;
+ }
+
+ /**
+ * Gets the value of the username property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * Sets the value of the username property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUsername(String value) {
+ this.username = value;
+ }
+
+ /**
+ * Gets the value of the password property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Sets the value of the password property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPassword(String value) {
+ this.password = value;
+ }
+
+ /**
+ * Gets the value of the passwordSalt property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getPasswordSalt() {
+ return passwordSalt;
+ }
+
+ /**
+ * Sets the value of the passwordSalt property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPasswordSalt(String value) {
+ this.passwordSalt = value;
+ }
+
+ /**
+ * Gets the value of the userRequestTokken property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getUserRequestTokken() {
+ return userRequestTokken;
+ }
+
+ /**
+ * Sets the value of the userRequestTokken property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUserRequestTokken(String value) {
+ this.userRequestTokken = value;
+ }
+
+ /**
+ * Gets the value of the isActive property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsActive() {
+ return isActive;
+ }
+
+ /**
+ * Sets the value of the isActive property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsActive(Boolean value) {
+ this.isActive = value;
+ }
+
+ /**
+ * Gets the value of the isAdmin property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsAdmin() {
+ return isAdmin;
+ }
+
+ /**
+ * Sets the value of the isAdmin property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsAdmin(Boolean value) {
+ this.isAdmin = value;
+ }
+
+ /**
+ * Gets the value of the isUsernamePasswordAllowed property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsUsernamePasswordAllowed() {
+ return isUsernamePasswordAllowed;
+ }
+
+ /**
+ * Sets the value of the isUsernamePasswordAllowed property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsUsernamePasswordAllowed(Boolean value) {
+ this.isUsernamePasswordAllowed = value;
+ }
+
+ /**
+ * Gets the value of the isMandateUser property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsMandateUser() {
+ return isMandateUser;
+ }
+
+ /**
+ * Sets the value of the isMandateUser property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsMandateUser(Boolean value) {
+ this.isMandateUser = value;
+ }
+
+ /**
+ * Gets the value of the isMailAddressVerified property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsMailAddressVerified() {
+ return isMailAddressVerified;
+ }
+
+ /**
+ * Sets the value of the isMailAddressVerified property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsMailAddressVerified(Boolean value) {
+ this.isMailAddressVerified = value;
+ }
+
+ /**
+ * Gets the value of the isAdminRequest property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsAdminRequest() {
+ return isAdminRequest;
+ }
+
+ /**
+ * Sets the value of the isAdminRequest property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsAdminRequest(Boolean value) {
+ this.isAdminRequest = value;
+ }
+
+ /**
+ * Gets the value of the isPVP2Generated property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public Boolean isIsPVP2Generated() {
+ return isPVP2Generated;
+ }
+
+ /**
+ * Sets the value of the isPVP2Generated property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIsPVP2Generated(Boolean value) {
+ this.isPVP2Generated = value;
+ }
+
+ /**
+ * Gets the value of the lastLogin property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getLastLogin() {
+ return lastLogin;
+ }
+
+ /**
+ * Sets the value of the lastLogin property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLastLogin(String value) {
+ this.lastLogin = value;
+ }
+
+ /**
+ * Gets the value of the onlineApplication property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the onlineApplication property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOnlineApplication().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link OnlineApplication }
+ *
+ *
+ */
+ @OneToMany(targetEntity = OnlineApplication.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<OnlineApplication> getOnlineApplication() {
+ if (onlineApplication == null) {
+ onlineApplication = new ArrayList<OnlineApplication>();
+ }
+ return this.onlineApplication;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setOnlineApplication(List<OnlineApplication> onlineApplication) {
+ this.onlineApplication = onlineApplication;
+ }
+
+ /**
+ * Gets the value of the onlyBusinessService property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ @Transient
+ public Boolean isOnlyBusinessService() {
+ return onlyBusinessService;
+ }
+
+ /**
+ * Sets the value of the onlyBusinessService property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOnlyBusinessService(Boolean value) {
+ this.onlyBusinessService = value;
+ }
+
+ /**
+ * Gets the value of the businessServiceType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ @Transient
+ public String getBusinessServiceType() {
+ return businessServiceType;
+ }
+
+ /**
+ * Sets the value of the businessServiceType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBusinessServiceType(String value) {
+ this.businessServiceType = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof UserDatabase)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final UserDatabase that = ((UserDatabase) object);
+ {
+ String lhsBpk;
+ lhsBpk = this.getBpk();
+ String rhsBpk;
+ rhsBpk = that.getBpk();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "bpk", lhsBpk), LocatorUtils.property(thatLocator, "bpk", rhsBpk), lhsBpk, rhsBpk)) {
+ return false;
+ }
+ }
+ {
+ String lhsFamilyname;
+ lhsFamilyname = this.getFamilyname();
+ String rhsFamilyname;
+ rhsFamilyname = that.getFamilyname();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "familyname", lhsFamilyname), LocatorUtils.property(thatLocator, "familyname", rhsFamilyname), lhsFamilyname, rhsFamilyname)) {
+ return false;
+ }
+ }
+ {
+ String lhsGivenname;
+ lhsGivenname = this.getGivenname();
+ String rhsGivenname;
+ rhsGivenname = that.getGivenname();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "givenname", lhsGivenname), LocatorUtils.property(thatLocator, "givenname", rhsGivenname), lhsGivenname, rhsGivenname)) {
+ return false;
+ }
+ }
+ {
+ String lhsInstitut;
+ lhsInstitut = this.getInstitut();
+ String rhsInstitut;
+ rhsInstitut = that.getInstitut();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "institut", lhsInstitut), LocatorUtils.property(thatLocator, "institut", rhsInstitut), lhsInstitut, rhsInstitut)) {
+ return false;
+ }
+ }
+ {
+ String lhsMail;
+ lhsMail = this.getMail();
+ String rhsMail;
+ rhsMail = that.getMail();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "mail", lhsMail), LocatorUtils.property(thatLocator, "mail", rhsMail), lhsMail, rhsMail)) {
+ return false;
+ }
+ }
+ {
+ String lhsPhone;
+ lhsPhone = this.getPhone();
+ String rhsPhone;
+ rhsPhone = that.getPhone();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "phone", lhsPhone), LocatorUtils.property(thatLocator, "phone", rhsPhone), lhsPhone, rhsPhone)) {
+ return false;
+ }
+ }
+ {
+ String lhsUsername;
+ lhsUsername = this.getUsername();
+ String rhsUsername;
+ rhsUsername = that.getUsername();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "username", lhsUsername), LocatorUtils.property(thatLocator, "username", rhsUsername), lhsUsername, rhsUsername)) {
+ return false;
+ }
+ }
+ {
+ String lhsPassword;
+ lhsPassword = this.getPassword();
+ String rhsPassword;
+ rhsPassword = that.getPassword();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "password", lhsPassword), LocatorUtils.property(thatLocator, "password", rhsPassword), lhsPassword, rhsPassword)) {
+ return false;
+ }
+ }
+ {
+ String lhsPasswordSalt;
+ lhsPasswordSalt = this.getPasswordSalt();
+ String rhsPasswordSalt;
+ rhsPasswordSalt = that.getPasswordSalt();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "passwordSalt", lhsPasswordSalt), LocatorUtils.property(thatLocator, "passwordSalt", rhsPasswordSalt), lhsPasswordSalt, rhsPasswordSalt)) {
+ return false;
+ }
+ }
+ {
+ String lhsUserRequestTokken;
+ lhsUserRequestTokken = this.getUserRequestTokken();
+ String rhsUserRequestTokken;
+ rhsUserRequestTokken = that.getUserRequestTokken();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "userRequestTokken", lhsUserRequestTokken), LocatorUtils.property(thatLocator, "userRequestTokken", rhsUserRequestTokken), lhsUserRequestTokken, rhsUserRequestTokken)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsActive;
+ lhsIsActive = this.isIsActive();
+ Boolean rhsIsActive;
+ rhsIsActive = that.isIsActive();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isActive", lhsIsActive), LocatorUtils.property(thatLocator, "isActive", rhsIsActive), lhsIsActive, rhsIsActive)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsAdmin;
+ lhsIsAdmin = this.isIsAdmin();
+ Boolean rhsIsAdmin;
+ rhsIsAdmin = that.isIsAdmin();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isAdmin", lhsIsAdmin), LocatorUtils.property(thatLocator, "isAdmin", rhsIsAdmin), lhsIsAdmin, rhsIsAdmin)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsUsernamePasswordAllowed;
+ lhsIsUsernamePasswordAllowed = this.isIsUsernamePasswordAllowed();
+ Boolean rhsIsUsernamePasswordAllowed;
+ rhsIsUsernamePasswordAllowed = that.isIsUsernamePasswordAllowed();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isUsernamePasswordAllowed", lhsIsUsernamePasswordAllowed), LocatorUtils.property(thatLocator, "isUsernamePasswordAllowed", rhsIsUsernamePasswordAllowed), lhsIsUsernamePasswordAllowed, rhsIsUsernamePasswordAllowed)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsMandateUser;
+ lhsIsMandateUser = this.isIsMandateUser();
+ Boolean rhsIsMandateUser;
+ rhsIsMandateUser = that.isIsMandateUser();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isMandateUser", lhsIsMandateUser), LocatorUtils.property(thatLocator, "isMandateUser", rhsIsMandateUser), lhsIsMandateUser, rhsIsMandateUser)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsMailAddressVerified;
+ lhsIsMailAddressVerified = this.isIsMailAddressVerified();
+ Boolean rhsIsMailAddressVerified;
+ rhsIsMailAddressVerified = that.isIsMailAddressVerified();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isMailAddressVerified", lhsIsMailAddressVerified), LocatorUtils.property(thatLocator, "isMailAddressVerified", rhsIsMailAddressVerified), lhsIsMailAddressVerified, rhsIsMailAddressVerified)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsAdminRequest;
+ lhsIsAdminRequest = this.isIsAdminRequest();
+ Boolean rhsIsAdminRequest;
+ rhsIsAdminRequest = that.isIsAdminRequest();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isAdminRequest", lhsIsAdminRequest), LocatorUtils.property(thatLocator, "isAdminRequest", rhsIsAdminRequest), lhsIsAdminRequest, rhsIsAdminRequest)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsIsPVP2Generated;
+ lhsIsPVP2Generated = this.isIsPVP2Generated();
+ Boolean rhsIsPVP2Generated;
+ rhsIsPVP2Generated = that.isIsPVP2Generated();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "isPVP2Generated", lhsIsPVP2Generated), LocatorUtils.property(thatLocator, "isPVP2Generated", rhsIsPVP2Generated), lhsIsPVP2Generated, rhsIsPVP2Generated)) {
+ return false;
+ }
+ }
+ {
+ String lhsLastLogin;
+ lhsLastLogin = this.getLastLogin();
+ String rhsLastLogin;
+ rhsLastLogin = that.getLastLogin();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "lastLogin", lhsLastLogin), LocatorUtils.property(thatLocator, "lastLogin", rhsLastLogin), lhsLastLogin, rhsLastLogin)) {
+ return false;
+ }
+ }
+ {
+ List<OnlineApplication> lhsOnlineApplication;
+ lhsOnlineApplication = (((this.onlineApplication!= null)&&(!this.onlineApplication.isEmpty()))?this.getOnlineApplication():null);
+ List<OnlineApplication> rhsOnlineApplication;
+ rhsOnlineApplication = (((that.onlineApplication!= null)&&(!that.onlineApplication.isEmpty()))?that.getOnlineApplication():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlineApplication", lhsOnlineApplication), LocatorUtils.property(thatLocator, "onlineApplication", rhsOnlineApplication), lhsOnlineApplication, rhsOnlineApplication)) {
+ return false;
+ }
+ }
+ {
+ Boolean lhsOnlyBusinessService;
+ lhsOnlyBusinessService = this.isOnlyBusinessService();
+ Boolean rhsOnlyBusinessService;
+ rhsOnlyBusinessService = that.isOnlyBusinessService();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "onlyBusinessService", lhsOnlyBusinessService), LocatorUtils.property(thatLocator, "onlyBusinessService", rhsOnlyBusinessService), lhsOnlyBusinessService, rhsOnlyBusinessService)) {
+ return false;
+ }
+ }
+ {
+ String lhsBusinessServiceType;
+ lhsBusinessServiceType = this.getBusinessServiceType();
+ String rhsBusinessServiceType;
+ rhsBusinessServiceType = that.getBusinessServiceType();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "businessServiceType", lhsBusinessServiceType), LocatorUtils.property(thatLocator, "businessServiceType", rhsBusinessServiceType), lhsBusinessServiceType, rhsBusinessServiceType)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theBpk;
+ theBpk = this.getBpk();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "bpk", theBpk), currentHashCode, theBpk);
+ }
+ {
+ String theFamilyname;
+ theFamilyname = this.getFamilyname();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "familyname", theFamilyname), currentHashCode, theFamilyname);
+ }
+ {
+ String theGivenname;
+ theGivenname = this.getGivenname();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "givenname", theGivenname), currentHashCode, theGivenname);
+ }
+ {
+ String theInstitut;
+ theInstitut = this.getInstitut();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "institut", theInstitut), currentHashCode, theInstitut);
+ }
+ {
+ String theMail;
+ theMail = this.getMail();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "mail", theMail), currentHashCode, theMail);
+ }
+ {
+ String thePhone;
+ thePhone = this.getPhone();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "phone", thePhone), currentHashCode, thePhone);
+ }
+ {
+ String theUsername;
+ theUsername = this.getUsername();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "username", theUsername), currentHashCode, theUsername);
+ }
+ {
+ String thePassword;
+ thePassword = this.getPassword();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "password", thePassword), currentHashCode, thePassword);
+ }
+ {
+ String thePasswordSalt;
+ thePasswordSalt = this.getPasswordSalt();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "passwordSalt", thePasswordSalt), currentHashCode, thePasswordSalt);
+ }
+ {
+ String theUserRequestTokken;
+ theUserRequestTokken = this.getUserRequestTokken();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "userRequestTokken", theUserRequestTokken), currentHashCode, theUserRequestTokken);
+ }
+ {
+ Boolean theIsActive;
+ theIsActive = this.isIsActive();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isActive", theIsActive), currentHashCode, theIsActive);
+ }
+ {
+ Boolean theIsAdmin;
+ theIsAdmin = this.isIsAdmin();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isAdmin", theIsAdmin), currentHashCode, theIsAdmin);
+ }
+ {
+ Boolean theIsUsernamePasswordAllowed;
+ theIsUsernamePasswordAllowed = this.isIsUsernamePasswordAllowed();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isUsernamePasswordAllowed", theIsUsernamePasswordAllowed), currentHashCode, theIsUsernamePasswordAllowed);
+ }
+ {
+ Boolean theIsMandateUser;
+ theIsMandateUser = this.isIsMandateUser();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isMandateUser", theIsMandateUser), currentHashCode, theIsMandateUser);
+ }
+ {
+ Boolean theIsMailAddressVerified;
+ theIsMailAddressVerified = this.isIsMailAddressVerified();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isMailAddressVerified", theIsMailAddressVerified), currentHashCode, theIsMailAddressVerified);
+ }
+ {
+ Boolean theIsAdminRequest;
+ theIsAdminRequest = this.isIsAdminRequest();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isAdminRequest", theIsAdminRequest), currentHashCode, theIsAdminRequest);
+ }
+ {
+ Boolean theIsPVP2Generated;
+ theIsPVP2Generated = this.isIsPVP2Generated();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "isPVP2Generated", theIsPVP2Generated), currentHashCode, theIsPVP2Generated);
+ }
+ {
+ String theLastLogin;
+ theLastLogin = this.getLastLogin();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "lastLogin", theLastLogin), currentHashCode, theLastLogin);
+ }
+ {
+ List<OnlineApplication> theOnlineApplication;
+ theOnlineApplication = (((this.onlineApplication!= null)&&(!this.onlineApplication.isEmpty()))?this.getOnlineApplication():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlineApplication", theOnlineApplication), currentHashCode, theOnlineApplication);
+ }
+ {
+ Boolean theOnlyBusinessService;
+ theOnlyBusinessService = this.isOnlyBusinessService();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "onlyBusinessService", theOnlyBusinessService), currentHashCode, theOnlyBusinessService);
+ }
+ {
+ String theBusinessServiceType;
+ theBusinessServiceType = this.getBusinessServiceType();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "businessServiceType", theBusinessServiceType), currentHashCode, theBusinessServiceType);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlock.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlock.java
new file mode 100644
index 000000000..155863b03
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlock.java
@@ -0,0 +1,275 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.hyperjaxb3.item.ItemUtils;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;element name="VerifyTransformsInfoProfileID" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "trustProfileID",
+ "verifyTransformsInfoProfileID"
+})
+
+
+
+public class VerifyAuthBlock
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TrustProfileID", required = true)
+ protected String trustProfileID;
+ @XmlElement(name = "VerifyTransformsInfoProfileID")
+ protected List<String> verifyTransformsInfoProfileID;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+ protected transient List<VerifyAuthBlockVerifyTransformsInfoProfileIDItem> verifyTransformsInfoProfileIDItems;
+
+ @XmlTransient
+ protected String TestTrustProfileID;
+
+
+ /**
+ * Gets the value of the trustProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ /**
+ * Sets the value of the trustProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustProfileID(String value) {
+ this.trustProfileID = value;
+ }
+
+
+
+ /**
+ * @return the testTrustProfileID
+ */
+ public String getTestTrustProfileID() {
+ return TestTrustProfileID;
+ }
+
+ /**
+ * @param testTrustProfileID the testTrustProfileID to set
+ */
+ public void setTestTrustProfileID(String testTrustProfileID) {
+ TestTrustProfileID = testTrustProfileID;
+ }
+
+ /**
+ * Gets the value of the verifyTransformsInfoProfileID property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the verifyTransformsInfoProfileID property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getVerifyTransformsInfoProfileID().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ @Transient
+ public List<String> getVerifyTransformsInfoProfileID() {
+ if (verifyTransformsInfoProfileID == null) {
+ verifyTransformsInfoProfileID = new ArrayList<String>();
+ }
+ return this.verifyTransformsInfoProfileID;
+ }
+
+ /**
+ *
+ *
+ */
+ public void setVerifyTransformsInfoProfileID(List<String> verifyTransformsInfoProfileID) {
+ this.verifyTransformsInfoProfileID = verifyTransformsInfoProfileID;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ @OneToMany(targetEntity = VerifyAuthBlockVerifyTransformsInfoProfileIDItem.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public List<VerifyAuthBlockVerifyTransformsInfoProfileIDItem> getVerifyTransformsInfoProfileIDItems() {
+ if (this.verifyTransformsInfoProfileIDItems == null) {
+ this.verifyTransformsInfoProfileIDItems = new ArrayList<VerifyAuthBlockVerifyTransformsInfoProfileIDItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.verifyTransformsInfoProfileID)) {
+ this.verifyTransformsInfoProfileID = ItemUtils.wrap(this.verifyTransformsInfoProfileID, this.verifyTransformsInfoProfileIDItems, VerifyAuthBlockVerifyTransformsInfoProfileIDItem.class);
+ }
+ return this.verifyTransformsInfoProfileIDItems;
+ }
+
+ public void setVerifyTransformsInfoProfileIDItems(List<VerifyAuthBlockVerifyTransformsInfoProfileIDItem> value) {
+ this.verifyTransformsInfoProfileID = null;
+ this.verifyTransformsInfoProfileIDItems = null;
+ this.verifyTransformsInfoProfileIDItems = value;
+ if (this.verifyTransformsInfoProfileIDItems == null) {
+ this.verifyTransformsInfoProfileIDItems = new ArrayList<VerifyAuthBlockVerifyTransformsInfoProfileIDItem>();
+ }
+ if (ItemUtils.shouldBeWrapped(this.verifyTransformsInfoProfileID)) {
+ this.verifyTransformsInfoProfileID = ItemUtils.wrap(this.verifyTransformsInfoProfileID, this.verifyTransformsInfoProfileIDItems, VerifyAuthBlockVerifyTransformsInfoProfileIDItem.class);
+ }
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof VerifyAuthBlock)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final VerifyAuthBlock that = ((VerifyAuthBlock) object);
+ {
+ String lhsTrustProfileID;
+ lhsTrustProfileID = this.getTrustProfileID();
+ String rhsTrustProfileID;
+ rhsTrustProfileID = that.getTrustProfileID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustProfileID", lhsTrustProfileID), LocatorUtils.property(thatLocator, "trustProfileID", rhsTrustProfileID), lhsTrustProfileID, rhsTrustProfileID)) {
+ return false;
+ }
+ }
+ {
+ List<String> lhsVerifyTransformsInfoProfileID;
+ lhsVerifyTransformsInfoProfileID = (((this.verifyTransformsInfoProfileID!= null)&&(!this.verifyTransformsInfoProfileID.isEmpty()))?this.getVerifyTransformsInfoProfileID():null);
+ List<String> rhsVerifyTransformsInfoProfileID;
+ rhsVerifyTransformsInfoProfileID = (((that.verifyTransformsInfoProfileID!= null)&&(!that.verifyTransformsInfoProfileID.isEmpty()))?that.getVerifyTransformsInfoProfileID():null);
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "verifyTransformsInfoProfileID", lhsVerifyTransformsInfoProfileID), LocatorUtils.property(thatLocator, "verifyTransformsInfoProfileID", rhsVerifyTransformsInfoProfileID), lhsVerifyTransformsInfoProfileID, rhsVerifyTransformsInfoProfileID)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theTrustProfileID;
+ theTrustProfileID = this.getTrustProfileID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustProfileID", theTrustProfileID), currentHashCode, theTrustProfileID);
+ }
+ {
+ List<String> theVerifyTransformsInfoProfileID;
+ theVerifyTransformsInfoProfileID = (((this.verifyTransformsInfoProfileID!= null)&&(!this.verifyTransformsInfoProfileID.isEmpty()))?this.getVerifyTransformsInfoProfileID():null);
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "verifyTransformsInfoProfileID", theVerifyTransformsInfoProfileID), currentHashCode, theVerifyTransformsInfoProfileID);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlockVerifyTransformsInfoProfileIDItem.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlockVerifyTransformsInfoProfileIDItem.java
new file mode 100644
index 000000000..8955525dd
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyAuthBlockVerifyTransformsInfoProfileIDItem.java
@@ -0,0 +1,93 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import org.jvnet.hyperjaxb3.item.Item;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+
+
+
+public class VerifyAuthBlockVerifyTransformsInfoProfileIDItem
+ implements Serializable, Item<String>
+{
+
+ @XmlElement(name = "VerifyTransformsInfoProfileID", namespace = "http://www.buergerkarte.at/namespaces/moaconfig#")
+ protected String item;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the item property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getItem() {
+ return item;
+ }
+
+ /**
+ * Sets the value of the item property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setItem(String value) {
+ this.item = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyIdentityLink.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyIdentityLink.java
new file mode 100644
index 000000000..ac7ad96cc
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyIdentityLink.java
@@ -0,0 +1,182 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "trustProfileID"
+})
+
+
+
+public class VerifyIdentityLink
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "TrustProfileID", required = true)
+ protected String trustProfileID;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ @XmlTransient
+ protected String TestTrustProfileID;
+
+ /**
+ * Gets the value of the trustProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ /**
+ * Sets the value of the trustProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustProfileID(String value) {
+ this.trustProfileID = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * @return the testTrustProfileID
+ */
+ public String getTestTrustProfileID() {
+ return TestTrustProfileID;
+ }
+
+ /**
+ * @param testTrustProfileID the testTrustProfileID to set
+ */
+ public void setTestTrustProfileID(String testTrustProfileID) {
+ TestTrustProfileID = testTrustProfileID;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof VerifyIdentityLink)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final VerifyIdentityLink that = ((VerifyIdentityLink) object);
+ {
+ String lhsTrustProfileID;
+ lhsTrustProfileID = this.getTrustProfileID();
+ String rhsTrustProfileID;
+ rhsTrustProfileID = that.getTrustProfileID();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "trustProfileID", lhsTrustProfileID), LocatorUtils.property(thatLocator, "trustProfileID", rhsTrustProfileID), lhsTrustProfileID, rhsTrustProfileID)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theTrustProfileID;
+ theTrustProfileID = this.getTrustProfileID();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "trustProfileID", theTrustProfileID), currentHashCode, theTrustProfileID);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyInfoboxesType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyInfoboxesType.java
new file mode 100644
index 000000000..1768a2873
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/VerifyInfoboxesType.java
@@ -0,0 +1,181 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * Verifikation zusaetzlicher Infoboxen
+ *
+ *
+ * <p>Java class for VerifyInfoboxesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyInfoboxesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DefaultTrustProfile" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.buergerkarte.at/namespaces/moaconfig#}TrustProfileID"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyInfoboxesType", propOrder = {
+ "defaultTrustProfile"
+})
+
+
+
+public class VerifyInfoboxesType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "DefaultTrustProfile")
+ protected DefaultTrustProfile defaultTrustProfile;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the defaultTrustProfile property.
+ *
+ * @return
+ * possible object is
+ * {@link DefaultTrustProfile }
+ *
+ */
+ @ManyToOne(targetEntity = DefaultTrustProfile.class, cascade = {
+ CascadeType.ALL
+ })
+
+ public DefaultTrustProfile getDefaultTrustProfile() {
+ return defaultTrustProfile;
+ }
+
+ /**
+ * Sets the value of the defaultTrustProfile property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DefaultTrustProfile }
+ *
+ */
+ public void setDefaultTrustProfile(DefaultTrustProfile value) {
+ this.defaultTrustProfile = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof VerifyInfoboxesType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final VerifyInfoboxesType that = ((VerifyInfoboxesType) object);
+ {
+ DefaultTrustProfile lhsDefaultTrustProfile;
+ lhsDefaultTrustProfile = this.getDefaultTrustProfile();
+ DefaultTrustProfile rhsDefaultTrustProfile;
+ rhsDefaultTrustProfile = that.getDefaultTrustProfile();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "defaultTrustProfile", lhsDefaultTrustProfile), LocatorUtils.property(thatLocator, "defaultTrustProfile", rhsDefaultTrustProfile), lhsDefaultTrustProfile, rhsDefaultTrustProfile)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ DefaultTrustProfile theDefaultTrustProfile;
+ theDefaultTrustProfile = this.getDefaultTrustProfile();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "defaultTrustProfile", theDefaultTrustProfile), currentHashCode, theDefaultTrustProfile);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/X509IssuerSerialType.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/X509IssuerSerialType.java
new file mode 100644
index 000000000..8e1e4391b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/X509IssuerSerialType.java
@@ -0,0 +1,213 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
+
+import java.io.Serializable;
+import java.math.BigInteger;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.jvnet.jaxb2_commons.lang.Equals;
+import org.jvnet.jaxb2_commons.lang.EqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.HashCode;
+import org.jvnet.jaxb2_commons.lang.HashCodeStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
+import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
+import org.jvnet.jaxb2_commons.locator.ObjectLocator;
+import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
+
+
+/**
+ * <p>Java class for X509IssuerSerialType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="X509IssuerSerialType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="X509IssuerName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="X509SerialNumber" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509IssuerSerialType", propOrder = {
+ "x509IssuerName",
+ "x509SerialNumber"
+})
+@XmlSeeAlso({
+ TrustAnchor.class
+})
+
+
+
+public class X509IssuerSerialType
+ implements Serializable, Equals, HashCode
+{
+
+ @XmlElement(name = "X509IssuerName", required = true)
+ protected String x509IssuerName;
+ @XmlElement(name = "X509SerialNumber", required = true)
+ protected BigInteger x509SerialNumber;
+ @XmlAttribute(name = "Hjid")
+ protected Long hjid;
+
+ /**
+ * Gets the value of the x509IssuerName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+
+
+ public String getX509IssuerName() {
+ return x509IssuerName;
+ }
+
+ /**
+ * Sets the value of the x509IssuerName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setX509IssuerName(String value) {
+ this.x509IssuerName = value;
+ }
+
+ /**
+ * Gets the value of the x509SerialNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+
+
+ public BigInteger getX509SerialNumber() {
+ return x509SerialNumber;
+ }
+
+ /**
+ * Sets the value of the x509SerialNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setX509SerialNumber(BigInteger value) {
+ this.x509SerialNumber = value;
+ }
+
+ /**
+ * Gets the value of the hjid property.
+ *
+ * @return
+ * possible object is
+ * {@link Long }
+ *
+ */
+
+
+
+ public Long getHjid() {
+ return hjid;
+ }
+
+ /**
+ * Sets the value of the hjid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Long }
+ *
+ */
+ public void setHjid(Long value) {
+ this.hjid = value;
+ }
+
+ public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy strategy) {
+ if (!(object instanceof X509IssuerSerialType)) {
+ return false;
+ }
+ if (this == object) {
+ return true;
+ }
+ final X509IssuerSerialType that = ((X509IssuerSerialType) object);
+ {
+ String lhsX509IssuerName;
+ lhsX509IssuerName = this.getX509IssuerName();
+ String rhsX509IssuerName;
+ rhsX509IssuerName = that.getX509IssuerName();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "x509IssuerName", lhsX509IssuerName), LocatorUtils.property(thatLocator, "x509IssuerName", rhsX509IssuerName), lhsX509IssuerName, rhsX509IssuerName)) {
+ return false;
+ }
+ }
+ {
+ BigInteger lhsX509SerialNumber;
+ lhsX509SerialNumber = this.getX509SerialNumber();
+ BigInteger rhsX509SerialNumber;
+ rhsX509SerialNumber = that.getX509SerialNumber();
+ if (!strategy.equals(LocatorUtils.property(thisLocator, "x509SerialNumber", lhsX509SerialNumber), LocatorUtils.property(thatLocator, "x509SerialNumber", rhsX509SerialNumber), lhsX509SerialNumber, rhsX509SerialNumber)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean equals(Object object) {
+ final EqualsStrategy strategy = JAXBEqualsStrategy.INSTANCE;
+ return equals(null, null, object, strategy);
+ }
+
+ public int hashCode(ObjectLocator locator, HashCodeStrategy strategy) {
+ int currentHashCode = 1;
+ {
+ String theX509IssuerName;
+ theX509IssuerName = this.getX509IssuerName();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "x509IssuerName", theX509IssuerName), currentHashCode, theX509IssuerName);
+ }
+ {
+ BigInteger theX509SerialNumber;
+ theX509SerialNumber = this.getX509SerialNumber();
+ currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "x509SerialNumber", theX509SerialNumber), currentHashCode, theX509SerialNumber);
+ }
+ return currentHashCode;
+ }
+
+ public int hashCode() {
+ final HashCodeStrategy strategy = JAXBHashCodeStrategy.INSTANCE;
+ return this.hashCode(null, strategy);
+ }
+
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/package-info.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/package-info.java
new file mode 100644
index 000000000..369adb55b
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/dao/config/deprecated/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2015.07.20 at 12:19:30 PM CEST
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.buergerkarte.at/namespaces/moaconfig#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.gv.egovernment.moa.id.commons.db.dao.config.deprecated;
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 e27bd6cd7..af5950c98 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
@@ -96,6 +96,10 @@ public class AuthenticatedSessionStore implements Serializable{
@Column(name = "pendingRequestID", nullable=true)
private String pendingRequestID = "";
+ @Column(name = "additionalInformation", nullable=true)
+ @Lob
+ private String additionalInformation;
+
@Column(name = "created", updatable=false, nullable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date created;
@@ -113,11 +117,6 @@ public class AuthenticatedSessionStore implements Serializable{
@OneToMany(mappedBy="moasession", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<InterfederationSessionStore> inderfederation = null;
- @PrePersist
- protected void created() {
- this.updated = this.created = new Date();
- }
-
@PreUpdate
protected void lastUpdate() {
this.updated = new Date();
@@ -262,6 +261,20 @@ public class AuthenticatedSessionStore implements Serializable{
public void setInterfederatedSSOSession(boolean isInterfederatedSSOSession) {
this.isInterfederatedSSOSession = isInterfederatedSSOSession;
}
+
+ /**
+ * @return the additionalInformation
+ */
+ public String getAdditionalInformation() {
+ return additionalInformation;
+ }
+
+ /**
+ * @param additionalInformation the additionalInformation to set
+ */
+ public void setAdditionalInformation(String additionalInformation) {
+ this.additionalInformation = additionalInformation;
+ }
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/JsonMapper.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/JsonMapper.java
new file mode 100644
index 000000000..7940955e2
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/JsonMapper.java
@@ -0,0 +1,73 @@
+package at.gv.egovernment.moa.id.commons.utils;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
+/**
+ * Helper class to handle the JSON (de-)serialization.
+ *
+ */
+public class JsonMapper {
+
+ private ObjectMapper mapper = new ObjectMapper();
+
+ /**
+ * The default constructor where the default pretty printer is disabled.
+ */
+ public JsonMapper() {
+ this(false);
+ }
+
+ /**
+ * The constructor.
+ * @param prettyPrint enables or disables the default pretty printer
+ */
+ public JsonMapper(boolean prettyPrint) {
+ mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
+ mapper.setVisibility(PropertyAccessor.GETTER, Visibility.PUBLIC_ONLY);
+ mapper.setVisibility(PropertyAccessor.IS_GETTER, Visibility.PUBLIC_ONLY);
+ if (prettyPrint) {
+ mapper.enable(SerializationFeature.INDENT_OUTPUT);
+ }
+ }
+
+ /**
+ * Serialize an object to a JSON string.
+ * @param value the object to serialize
+ * @return a JSON string
+ * @throws JsonProcessingException thrown when an error occurs during serialization
+ */
+ public String serialize(Object value) throws JsonProcessingException {
+ return mapper.writeValueAsString(value);
+ }
+
+ /**
+ * Deserialize a JSON string.
+ *
+ * @param value the JSON string to deserialize
+ * @param clazz optional parameter that determines the type of the returned object. If not set, an {@link Object} is returned.
+ * @return the deserialized JSON string as an object of type {@code clazz} or {@link Object}
+ * @throws JsonParseException if the JSON string contains invalid content.
+ * @throws JsonMappingException if the input JSON structure does not match structure expected for result type
+ * @throws IOException if an I/O problem occurs (e.g. unexpected end-of-input)
+ */
+ public <T> Object deserialize(String value, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException{
+
+ ObjectMapper mapper = new ObjectMapper();
+ if (clazz != null) {
+ JavaType javaType = TypeFactory.defaultInstance().constructType(clazz);
+ return mapper.readValue(value, javaType);
+ } else {
+ return mapper.readValue(value, Object.class);
+ }
+ }
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/KeyValueUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/KeyValueUtils.java
new file mode 100644
index 000000000..8f3a8402d
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/KeyValueUtils.java
@@ -0,0 +1,259 @@
+/*
+ * 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.utils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class KeyValueUtils {
+
+ public static final String KEY_DELIMITER = ".";
+
+ /**
+ * Extract the first child of an input key after a the prefix
+ *
+ * @param key Full input key
+ * @param prefix Prefix
+ * @return Child key {String} if it exists or null
+ */
+ public static String getFirstChildAfterPrefix(String key, String prefix) {
+ String idAfterPrefix = removePrefixFromKey(key, prefix);
+ if (idAfterPrefix != null) {
+ int index = idAfterPrefix.indexOf(KEY_DELIMITER);
+ if (index > 0) {
+ String adding = idAfterPrefix.substring(0, index);
+ if (!(adding.isEmpty())) {
+ return adding;
+
+ }
+ } else if (!(idAfterPrefix.isEmpty())) {
+ return idAfterPrefix;
+
+ }
+
+ }
+ return null;
+ }
+
+ /**
+ * Extract the prefix from an input key
+ *
+ * @param key Full input key
+ * @param suffix Suffix of this key
+ * @return Prefix {String} of the key or null if input key does not ends with postfix string
+ */
+ public static String getPrefixFromKey(String key, String suffix) {
+ if (key != null && key.endsWith(suffix)) {
+ String idPreforeSuffix = key.substring(0, key.length()-suffix.length());
+ if (idPreforeSuffix.endsWith(KEY_DELIMITER))
+ return idPreforeSuffix.substring(0, idPreforeSuffix.length()-1);
+ else
+ return idPreforeSuffix;
+ }
+ return null;
+
+ }
+
+ /**
+ * Remove a prefix string from a key
+ *
+ * @param key Full input key
+ * @param prefix Prefix, which should be removed
+ * @return The suffix of the input key or null if the input does not starts with the prefix
+ */
+ public static String removePrefixFromKey(String key, String prefix) {
+ if (prefix == null)
+ prefix = new String();
+
+ if (key!=null && key.startsWith(prefix)) {
+ String afterPrefix = key.substring(prefix.length());
+ int index = afterPrefix.indexOf(KEY_DELIMITER);
+
+ if (index == 0) {
+ afterPrefix = afterPrefix.substring(1);
+
+ }
+ return afterPrefix;
+
+ }
+ return null;
+ }
+
+ /**
+ * Remove a prefix string from all keys in {Map<String, String>} of key/value pairs
+ *
+ * @param keys Input data of key/value pairs
+ * @param prefix Prefix which should be removed
+ * @return {Map<String, String>} of key/value pairs without prefix in key, but never null
+ */
+ public static Map<String, String> removePrefixFromKeys(Map<String, String> keys, String prefix) {
+ Map<String, String> result = new HashMap<String, String>();
+ Iterator<Entry<String, String>> interator = keys.entrySet().iterator();
+ while(interator.hasNext()) {
+ Entry<String, String> el = interator.next();
+ String newKey = removePrefixFromKey(el.getKey(), prefix);
+ if (MiscUtil.isNotEmpty(newKey)) {
+ result.put(newKey, el.getValue());
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Get a subset of key/value pairs which starts with a prefix string
+ * The Prefix is removed from the key
+ *
+ * @param keys Input data of key/value pairs
+ * @param prefix Prefix string
+ * @return {Map<String, String>} of key/value pairs without prefix in key, but never null
+ */
+ public static Map<String, String> getSubSetWithPrefix(Map<String, String> keys, String prefix) {
+ return removePrefixFromKeys(keys, prefix);
+ }
+
+
+ /**
+ * Add a prefix to key/value pairs to make the key absolute according to key namespace convention
+ *
+ * @param input Input key/value pairs which should be updated
+ * @param prefix Key prefix, which should be added if the key is not absolute
+ * @param absolutIdentifier Key identifier, which indicates an absolute key
+ * @return {Map<String, String>} of key/value pairs in which all keys are absolute but never null
+ */
+ public static Map<String, String> makeKeysAbsolut(Map<String, String> input, String prefix, String absolutIdentifier) {
+ Map<String, String> result = new HashMap<String, String>();
+ Iterator<Entry<String, String>> interator = input.entrySet().iterator();
+ while(interator.hasNext()) {
+ Entry<String, String> el = interator.next();
+ if (!el.getKey().startsWith(absolutIdentifier)) {
+ //key is not absolute -> add prefix
+ result.put(prefix
+ + KEY_DELIMITER
+ + el.getKey(),
+ el.getValue());
+
+ } else {
+ //key is absolute
+ result.put(el.getKey(), el.getValue());
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Get the parent key string from an input key
+ *
+ * @param key input key
+ * @return parent key or the empty String if no parent exists
+ */
+ public static String getParentKey(String key) {
+ if (MiscUtil.isNotEmpty(key)) {
+ int index = key.lastIndexOf(KEY_DELIMITER);
+ if (index > 0) {
+ return key.substring(0, index);
+
+ }
+ }
+
+ return new String();
+ }
+
+ /**
+ * Find the highest free list counter
+ *
+ * @param input Array of list keys
+ * @param listPrefix {String} prefix of the list
+ * @return {int} highest free list counter
+ */
+ public static int findNextFreeListCounter(String[] input,
+ String listPrefix) {
+ List<Integer> counters = new ArrayList<Integer>();
+ if (input == null || input.length == 0)
+ return 0;
+
+ else {
+ for (String key : input) {
+ String listIndex = getFirstChildAfterPrefix(key, listPrefix);
+ counters.add(Integer.parseInt(listIndex));
+
+ }
+ Collections.sort(counters);
+ return counters.get(counters.size()-1) + 1;
+ }
+ }
+
+ /**
+ * Find the highest free list counter
+ *
+ * @param keySet {Set<String>} of list keys
+ * @param listPrefix {String} prefix of the list
+ * @return {int} highest free list counter
+ */
+ public static int findNextFreeListCounter(Set<String> keySet,
+ String listPrefix) {
+ if (keySet.isEmpty())
+ return 0;
+
+ String[] array = new String[keySet.size()];
+ keySet.toArray(array);
+ return findNextFreeListCounter(array, listPrefix);
+ }
+
+
+ /**
+ * Normalize a CSV encoded list of value of an key/value pair
+ *
+ * This method removes all whitespace at the begin or the
+ * end of CSV values
+ *
+ * @param value CSV encoded input data
+ * @return normalized CSV encoded data or null if {value} is null or empty
+ */
+ public static String normalizeCSVValueString(String value) {
+ String normalizedCodes = null;
+ if (MiscUtil.isNotEmpty(value)) {
+ String[] codes = value.split(",");
+ for (String el: codes) {
+ if (normalizedCodes == null)
+ normalizedCodes = el.trim();
+ else
+ normalizedCodes += "," + el;
+
+ }
+ }
+ return normalizedCodes;
+ }
+}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAHttpProtocolSocketFactory.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAHttpProtocolSocketFactory.java
index 3b6fc34ea..2ade63c1c 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAHttpProtocolSocketFactory.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/MOAHttpProtocolSocketFactory.java
@@ -37,7 +37,6 @@ import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
import at.gv.egovernment.moa.id.commons.utils.ssl.SSLConfigurationException;
import at.gv.egovernment.moa.id.commons.utils.ssl.SSLUtils;
@@ -57,7 +56,7 @@ public class MOAHttpProtocolSocketFactory implements SecureProtocolSocketFactory
String certStoreRootDirParam,
String trustStoreURL,
String acceptedServerCertURL,
- ChainingModeType chainingMode,
+ String chainingMode,
boolean checkRevocation
) throws MOAHttpProtocolSocketFactoryException {
super();
@@ -68,7 +67,7 @@ public class MOAHttpProtocolSocketFactory implements SecureProtocolSocketFactory
certStoreRootDirParam,
trustStoreURL,
acceptedServerCertURL,
- chainingMode.value(),
+ chainingMode,
checkRevocation,
null,
null,
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/TargetValidator.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/TargetValidator.java
index 2ad50568a..f2f7afcf8 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/TargetValidator.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/TargetValidator.java
@@ -88,7 +88,7 @@ public class TargetValidator {
}
public static String getTargetFriendlyName(String target) {
- String name = targetList.get(target);
+ String name = targetList.get(target.toUpperCase());
if (MiscUtil.isNotEmpty(name))
return name;
@@ -97,7 +97,7 @@ public class TargetValidator {
}
public static boolean isValidTarget(String target) {
- return targetList.containsKey(target);
+ return targetList.containsKey(target.toUpperCase());
}
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/ValidationHelper.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/ValidationHelper.java
index 13d680b78..01ae2a354 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/ValidationHelper.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/validation/ValidationHelper.java
@@ -143,7 +143,7 @@ public class ValidationHelper {
long oaID = Long.valueOf(oaIDObj);
- if (oaID > 0 && oaID < Long.MAX_VALUE)
+ if (oaID >= 0 && oaID < Long.MAX_VALUE)
return true;
} catch (Throwable t) {
diff --git a/id/server/moa-id-commons/src/main/resources/META-INF/persistence.xml b/id/server/moa-id-commons/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 000000000..9bebfa66f
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+ version="2.0">
+
+ <persistence-unit name="config" transaction-type="RESOURCE_LOCAL">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <class>at.gv.egovernment.moa.id.commons.db.dao.config.ConfigProperty</class>
+ <!-- <class>at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase</class> -->
+ <properties>
+ </properties>
+ </persistence-unit>
+
+</persistence> \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/resources/config/bindings.xjb b/id/server/moa-id-commons/src/main/resources/bindings.xjb
index 21714849b..9d017d02e 100644
--- a/id/server/moa-id-commons/src/main/resources/config/bindings.xjb
+++ b/id/server/moa-id-commons/src/main/resources/bindings.xjb
@@ -1,4 +1,4 @@
-<jaxb:bindings version="2.1"
+<!-- <jaxb:bindings version="2.1"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
@@ -32,4 +32,4 @@
</hj:many-to-many>
</jaxb:bindings>
-</jaxb:bindings> \ No newline at end of file
+</jaxb:bindings> --> \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/resources/config/persistence_template.xml b/id/server/moa-id-commons/src/main/resources/config/persistence_template.xml
deleted file mode 100644
index 25092ff58..000000000
--- a/id/server/moa-id-commons/src/main/resources/config/persistence_template.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<persistence version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
-http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <persistence-unit name="##generated">
- <!-- <class>at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase</class> -->
-
-<!-- <properties>
- C3p0 connection pooling configuration
- <property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"/>
- <property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"/>
- <property name="acquireRetryDelay" value="5000"/>
- <property name="breakAfterAcquireFailure" value="true"/>
- <property name="checkoutTimeout" value="1"/>
- <property name="testConnectionOnCheckin" value="1" />
- </properties> -->
- </persistence-unit>
-</persistence>
diff --git a/id/server/moa-id-commons/src/main/resources/configuration.beans.xml b/id/server/moa-id-commons/src/main/resources/configuration.beans.xml
new file mode 100644
index 000000000..4d3caea8c
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/resources/configuration.beans.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <context:annotation-config />
+
+ <bean id="configPropertyDao"
+ class="at.gv.egovernment.moa.id.commons.db.dao.config.DatabaseConfigPropertyImpl"/>
+
+ <bean id="moaidconfig" class="at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfigurationImpl" />
+
+ <bean name="config" id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="dataSource" />
+ <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
+ <property name="persistenceUnitName" value="config" />
+ </bean>
+
+ <bean name="transactionManager" id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
+ </bean>
+ <tx:annotation-driven transaction-manager="transactionManager"/>
+
+</beans> \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/resources/config/hibernate_moasession.cfg.xml b/id/server/moa-id-commons/src/main/resources/hibernate_moasession.cfg.xml
index e40c8b8a9..e40c8b8a9 100644
--- a/id/server/moa-id-commons/src/main/resources/config/hibernate_moasession.cfg.xml
+++ b/id/server/moa-id-commons/src/main/resources/hibernate_moasession.cfg.xml
diff --git a/id/server/moa-id-commons/src/main/resources/config/hibernate_statistic.cfg.xml b/id/server/moa-id-commons/src/main/resources/hibernate_statistic.cfg.xml
index aa77a9c67..aa77a9c67 100644
--- a/id/server/moa-id-commons/src/main/resources/config/hibernate_statistic.cfg.xml
+++ b/id/server/moa-id-commons/src/main/resources/hibernate_statistic.cfg.xml
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
new file mode 100644
index 000000000..3bd122254
--- /dev/null
+++ b/id/server/moa-id-commons/src/main/resources/moaid.migration.beans.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+
+<!-- <bean id="localPropertyBean" class="at.gv.egovernment.moa.id.config.webgui.MOAIDWebGUIConfiguration"
+ scope="singleton" factory-method="getInstance"/> -->
+
+ <context:property-placeholder location="${moa.id.webconfig}"/>
+
+ <bean id="dataSource" class="org.apache.commons.dbcp.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}"/>
+ <property name="username" value="${hibernate.connection.username}" />
+ <property name="password" value="${hibernate.connection.password}" />
+
+ <property name="connectionProperties" value="${dbcp.connectionProperties}" />
+ <property name="initialSize" value="${dbcp.initialSize}" />
+ <property name="maxActive" value="${dbcp.maxActive}" />
+ <property name="maxIdle" value="${dbcp.maxIdle}" />
+ <property name="minIdle" value="${dbcp.minIdle}" />
+ <property name="maxWait" value="${dbcp.maxWaitMillis}" />
+ <property name="testOnBorrow" value="${dbcp.testOnBorrow}" />
+ <property name="testOnReturn" value="${dbcp.testOnReturn}" />
+ <property name="testWhileIdle" value="${dbcp.testWhileIdle}" />
+ <property name="validationQuery" value="SELECT 1" />
+ </bean>
+
+
+ <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="${hibernate.show_sql}" />
+ <property name="generateDdl" value="${jpaVendorAdapter.generateDdl}" />
+ <property name="databasePlatform" value="${hibernate.dialect}" />
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/main/resources/config/moaid_config_2.0.xsd b/id/server/moa-id-commons/src/main/resources/moaid_config_2.0.xsd
index d4686bd5e..d4686bd5e 100644
--- a/id/server/moa-id-commons/src/main/resources/config/moaid_config_2.0.xsd
+++ b/id/server/moa-id-commons/src/main/resources/moaid_config_2.0.xsd
diff --git a/id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java b/id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java
new file mode 100644
index 000000000..563959582
--- /dev/null
+++ b/id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java
@@ -0,0 +1,128 @@
+//package at.gv.egovernment.moa.id.commons.db;
+//
+//import static org.junit.Assert.assertFalse;
+//import static org.junit.Assert.assertTrue;
+//
+//import java.io.FileNotFoundException;
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.lang.reflect.InvocationTargetException;
+//import java.lang.reflect.Method;
+//import java.util.Arrays;
+//import java.util.List;
+//import java.util.Properties;
+//
+//import org.junit.Before;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.test.annotation.IfProfileValue;
+//import org.springframework.test.context.ContextConfiguration;
+//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+//
+//import at.gv.egovernment.moa.id.commons.config.persistence.MOAIDConfiguration;
+//import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral;
+//import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+//
+//import com.fasterxml.jackson.annotation.JsonProperty;
+//
+//@RunWith(SpringJUnit4ClassRunner.class)
+//@ContextConfiguration("configuration.beans-test.xml")
+//@IfProfileValue(name = "test-groups", values = { "manual" })
+//public class ConfigurationDBReadTest {
+//
+// @Autowired
+// MOAIDConfiguration configDataBase;
+//
+// private Properties getHibernateProperties() throws FileNotFoundException, IOException {
+//
+// Properties configProp = null;
+// try (InputStream in = ConfigurationDBReadTest.class.getResourceAsStream("hibernate.properties");) {
+// Properties props = new Properties();
+// props.load(in);
+// // read Config Hibernate properties
+// configProp = new Properties();
+// for (Object key : props.keySet()) {
+// String propPrefix = "configuration.";
+// if (key.toString().startsWith(propPrefix + "hibernate")) {
+// String propertyName = key.toString().substring(propPrefix.length());
+// configProp.put(propertyName, props.get(key.toString()));
+// }
+// }
+// }
+//
+// return configProp;
+// }
+//
+// private void migrateDatabase(List<String> methodNames) throws IllegalAccessException, IllegalArgumentException,
+// InvocationTargetException, NoSuchMethodException, SecurityException {
+// for (String name : methodNames) {
+// Method method = ConfigurationFromDBExtractor.class.getMethod(name);
+// Object tmp = method.invoke(null, new Object[] {});
+// JsonProperty annotation = method.getAnnotation(JsonProperty.class);
+// if (annotation != null) {
+// configDataBase.set(annotation.value(), tmp);
+// } else {
+// System.out.println("Methods must be annotated, annotation is used as key in key-value db.");
+// assertTrue(false);
+// }
+// }
+// }
+//
+// @Before
+// public void initialize() throws FileNotFoundException, MOADatabaseException, IOException, IllegalAccessException,
+// IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
+//
+// // initialize the connection to the old database
+// ConfigurationDBUtils.initHibernate(getHibernateProperties());
+//
+// // migrate the data in the old database to a new key value database
+// List<String> methodNames = Arrays.asList("getAuthComponentGeneral", "getChainingModes",
+// "getTrustedCACertificates", "getDefaultBKUs", "getSLRequestTemplates", "getTimeStampItem",
+// "getPvp2RefreshItem", "getOnlineApplications", "getGenericConfigurations");
+// migrateDatabase(methodNames);
+//
+// // close the session with the old database
+//
+// }
+//
+// @Test
+// public void testGetMOAIDConfiguration() throws FileNotFoundException, MOADatabaseException, IOException,
+// IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
+// SecurityException {
+//
+// // get the old moaid configuration
+// at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration oldConfig = ConfigurationDBRead.getMOAIDConfiguration();
+//
+// // get the a new moaid configuration from the data in the key value
+// // database
+// at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration newConfig = NewConfigurationDBRead.getMOAIDConfiguration();
+//
+// // check if both configurations yield a similar MOAIDConfiguration
+// // object
+// assertTrue(oldConfig.equals(newConfig));
+//
+// }
+//
+// @Test
+// public void testGetMOAIDConfigurationNotEqual() throws FileNotFoundException, MOADatabaseException, IOException,
+// IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
+// SecurityException {
+//
+// // get the old moaid configuration
+// at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration oldConfig = ConfigurationDBRead.getMOAIDConfiguration();
+//
+// // delete part of the configuration
+// oldConfig.setAuthComponentGeneral(new AuthComponentGeneral());
+//
+// // get the a new moaid configuration from the data in the key value
+// // database
+// at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration newConfig = NewConfigurationDBRead.getMOAIDConfiguration();
+//
+// // check if both configurations yield a similar MOAIDConfiguration
+// // object
+// assertFalse(oldConfig.equals(newConfig));
+//
+// }
+//
+//}
diff --git a/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/configuration.beans-test.xml b/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/configuration.beans-test.xml
new file mode 100644
index 000000000..cfe4db385
--- /dev/null
+++ b/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/configuration.beans-test.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <tx:annotation-driven />
+ <context:annotation-config />
+
+ <context:property-placeholder
+ location="classpath:at/gv/egovernment/moa/id/commons/db/testDatabase.properties" />
+
+ <bean id="configPropertyDao"
+ class="at.gv.egovernment.moa.id.commons.db.dao.config.ConfigPropertyDaoImpl" />
+ <bean id="config" class="at.gv.egovernment.moa.id.commons.config.persistence.ConfigurationImpl">
+ <property name="configPropertyDao" ref="configPropertyDao" />
+ </bean>
+
+ <bean id="configRead" class="at.gv.egovernment.moa.id.commons.db.NewConfigurationDBRead"/>
+
+ <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="true" destroy-method="close">
+ <aop:scoped-proxy/>
+ <property name="driverClassName" value="${dataSource.driverClassName}" />
+ <property name="url" value="${dataSource.url}"/>
+ <property name="username" value="${dataSource.username}" />
+ <property name="password" value="${dataSource.password}" />
+ <property name="testOnBorrow" value="true" />
+ <property name="validationQuery" value="SELECT 1" />
+ </bean>
+
+
+ <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+ <property name="showSql" value="true" />
+ <property name="generateDdl" value="${jpaVendorAdapter.generateDdl}" />
+ <property name="databasePlatform" value="${jpaVendorAdapter.databasePlatform}" />
+ </bean>
+
+
+ <bean name="moaidconf" id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="dataSource" />
+ <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
+ <property name="persistenceUnitName" value="moaidconf" />
+ </bean>
+
+ <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/hibernate.properties b/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/hibernate.properties
new file mode 100644
index 000000000..095a5e5ac
--- /dev/null
+++ b/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/hibernate.properties
@@ -0,0 +1,20 @@
+#Hibnerate configuration for MOA-ID 2.0 configuration
+configuration.hibernate.dialect=org.hibernate.dialect.MySQLDialect
+configuration.hibernate.connection.url=jdbc:mysql://localhost/moa-id-config?charSet=utf-8&autoReconnect=true
+configuration.hibernate.connection.charSet=utf-8
+configuration.hibernate.connection.driver_class=com.mysql.jdbc.Driver
+configuration.hibernate.connection.username=moaid
+configuration.hibernate.connection.password=moaid
+
+configuration.hibernate.hbm2ddl.auto=update
+configuration.hibernate.current_session_context_class=thread
+configuration.hibernate.transaction.auto_close_session=true
+configuration.hibernate.show_sql=false
+configuration.hibernate.format_sql=true
+configuration.hibernate.connection.provider_class=org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
+configuration.hibernate.c3p0.acquire_increment=3
+configuration.hibernate.c3p0.idle_test_period=60
+configuration.hibernate.c3p0.timeout=300
+configuration.hibernate.c3p0.max_size=20
+configuration.hibernate.c3p0.max_statements=0
+configuration.hibernate.c3p0.min_size=3 \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/testDatabase.properties b/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/testDatabase.properties
new file mode 100644
index 000000000..6036d2846
--- /dev/null
+++ b/id/server/moa-id-commons/src/test/resources/at/gv/egovernment/moa/id/commons/db/testDatabase.properties
@@ -0,0 +1,7 @@
+dataSource.driverClassName=org.h2.Driver
+dataSource.url=jdbc:h2:mem:moaidconftest
+dataSource.username=
+dataSource.password=
+
+jpaVendorAdapter.databasePlatform=org.hibernate.dialect.H2Dialect
+jpaVendorAdapter.generateDdl=true \ No newline at end of file
diff --git a/id/server/moa-id-commons/src/test/resources/log4j.xml b/id/server/moa-id-commons/src/test/resources/log4j.xml
new file mode 100644
index 000000000..6685c1e82
--- /dev/null
+++ b/id/server/moa-id-commons/src/test/resources/log4j.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+ <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
+ </layout>
+ </appender>
+
+ <root>
+ <priority value="info" />
+ <appender-ref ref="consoleAppender" />
+ </root>
+
+</log4j:configuration>
diff --git a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/auth/servlet/MonitoringServlet.java b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/auth/servlet/MonitoringServlet.java
index 1c1cbb723..a7d7b9759 100644
--- a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/auth/servlet/MonitoringServlet.java
+++ b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/auth/servlet/MonitoringServlet.java
@@ -33,7 +33,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.monitoring.TestManager;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
@@ -53,7 +54,7 @@ public class MonitoringServlet extends AuthServlet {
throws ServletException, IOException {
try {
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
if (config.isMonitoringActive()) {
Logger.debug("Monitoring Servlet received request");
diff --git a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/DatabaseTestModule.java b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/DatabaseTestModule.java
index a08ef5f0c..9896f2454 100644
--- a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/DatabaseTestModule.java
+++ b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/DatabaseTestModule.java
@@ -29,14 +29,12 @@ import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
import at.gv.egovernment.moa.id.commons.db.StatisticLogDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore;
import at.gv.egovernment.moa.id.commons.db.dao.statistic.StatisticLog;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.MiscUtil;
@@ -47,7 +45,7 @@ public class DatabaseTestModule implements TestModuleInterface{
List<String> errors = new ArrayList<String>();
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
String error = testMOAConfigurationDatabase();
if (MiscUtil.isNotEmpty(error))
@@ -95,10 +93,9 @@ public class DatabaseTestModule implements TestModuleInterface{
private String testMOAConfigurationDatabase() throws Exception{
- MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration();
- ConfigurationDBUtils.closeSession();
-
- if (moaidconfig == null)
+ String publicURLPreFix = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
+
+ if (MiscUtil.isEmpty(publicURLPreFix))
return ("MOA-ID 2.x configuration can not be loaded from Database.");
return null;
diff --git a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java
index b5220914c..824791797 100644
--- a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java
+++ b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java
@@ -37,7 +37,8 @@ import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
import at.gv.egovernment.moa.id.auth.parser.VerifyXMLSignatureResponseParser;
import at.gv.egovernment.moa.id.auth.validator.IdentityLinkValidator;
import at.gv.egovernment.moa.id.auth.validator.VerifyXMLSignatureResponseValidator;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
import at.gv.egovernment.moa.id.config.auth.data.DynamicOAAuthParameters;
import at.gv.egovernment.moa.logging.Logger;
@@ -61,13 +62,13 @@ public class IdentityLinkTestModule implements TestModuleInterface {
public List<String> performTests() throws Exception{
Logger.trace("Start MOA-ID IdentityLink Test");
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
IdentityLinkValidator.getInstance().validate(identityLink);
// builds a <VerifyXMLSignatureRequest> for a call of MOA-SP
Element domVerifyXMLSignatureRequest = new VerifyXMLSignatureRequestBuilder()
.build(identityLink, config
- .getMoaSpIdentityLinkTrustProfileID());
+ .getMoaSpIdentityLinkTrustProfileID(false));
// invokes the call
Element domVerifyXMLSignatureResponse = new SignatureVerificationInvoker()
diff --git a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/TestManager.java b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/TestManager.java
index 84581abe8..3c2b143b3 100644
--- a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/TestManager.java
+++ b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/TestManager.java
@@ -28,7 +28,8 @@ import java.util.List;
import java.util.Map;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.util.FileUtils;
@@ -47,7 +48,7 @@ public class TestManager {
private TestManager() throws ConfigurationException {
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
//add Database test
DatabaseTestModule test1 = new DatabaseTestModule();
diff --git a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/AbstractPepsConnectorWithLocalSigningTask.java b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/AbstractPepsConnectorWithLocalSigningTask.java
index 702e62fa0..939390847 100644
--- a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/AbstractPepsConnectorWithLocalSigningTask.java
+++ b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/AbstractPepsConnectorWithLocalSigningTask.java
@@ -32,7 +32,7 @@ import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.stork.STORKException;
import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
import at.gv.egovernment.moa.id.config.ConfigurationException;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.logging.Logger;
@@ -54,6 +54,8 @@ import eu.stork.peps.auth.commons.IPersonalAttributeList;
public abstract class AbstractPepsConnectorWithLocalSigningTask extends AbstractAuthServletTask {
+ public static final String PEPSCONNECTOR_SERVLET_URL_PATTERN = "/PEPSConnectorWithLocalSigning";
+
String getCitizienSignatureFromSignResponse(SignResponse dssSignResponse) throws IllegalArgumentException,
TransformerConfigurationException, UtilsException, TransformerException,
TransformerFactoryConfigurationError, IOException, ApiUtilsException {
@@ -77,7 +79,7 @@ public abstract class AbstractPepsConnectorWithLocalSigningTask extends Abstract
Logger.debug("fetching OAParameters from database");
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(
moaSession.getPublicOAURLPrefix());
if (oaParam == null)
throw new AuthenticationException("auth.00", new Object[] { moaSession.getPublicOAURLPrefix() });
diff --git a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/CreateStorkAuthRequestFormTask.java b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/CreateStorkAuthRequestFormTask.java
index 021ee62cf..06dfc95d3 100644
--- a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/CreateStorkAuthRequestFormTask.java
+++ b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/CreateStorkAuthRequestFormTask.java
@@ -2,13 +2,49 @@ package at.gv.egovernment.moa.id.auth.modules.stork.tasks;
import static at.gv.egovernment.moa.id.auth.MOAIDAuthConstants.*;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.math.BigInteger;
+import java.net.URL;
+import java.security.NoSuchAlgorithmException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.opensaml.common.IdentifierGenerator;
+import org.opensaml.common.impl.SecureRandomIdentifierGenerator;
+import org.w3c.dom.DOMException;
+
+import eu.stork.oasisdss.api.AdditionalProfiles;
+import eu.stork.oasisdss.api.ApiUtils;
+import eu.stork.oasisdss.api.Profiles;
+import eu.stork.oasisdss.api.QualityLevels;
+import eu.stork.oasisdss.api.SignatureTypes;
+import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
+import eu.stork.oasisdss.profile.AnyType;
+import eu.stork.oasisdss.profile.DocumentType;
+import eu.stork.oasisdss.profile.SignRequest;
+import eu.stork.peps.auth.commons.PEPSUtil;
+import eu.stork.peps.auth.commons.PersonalAttribute;
+import eu.stork.peps.auth.commons.PersonalAttributeList;
+import eu.stork.peps.auth.commons.STORKAuthnRequest;
+import eu.stork.peps.auth.engine.STORKSAMLEngine;
+import eu.stork.peps.exceptions.STORKSAMLEngineException;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
+import at.gv.egovernment.moa.id.auth.builder.CreateXMLSignatureRequestBuilder;
import at.gv.egovernment.moa.id.auth.builder.StartAuthenticationBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
@@ -16,13 +52,24 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.config.ConfigurationException;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
import at.gv.egovernment.moa.id.config.stork.CPEPS;
import at.gv.egovernment.moa.id.config.stork.STORKConfig;
+import at.gv.egovernment.moa.id.config.stork.StorkAttribute;
+
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventLog;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
+import at.gv.egovernment.moa.id.moduls.IRequest;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.ParamValidatorUtils;
+import at.gv.egovernment.moa.id.util.VelocityProvider;
import at.gv.egovernment.moa.logging.Logger;
/**
@@ -78,12 +125,16 @@ public class CreateStorkAuthRequestFormTask extends AbstractAuthServletTask {
}
AuthenticationSession moasession = AuthenticationServer.getSession(sessionID);
pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(sessionID);
-
+ IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+
if (StringUtils.isEmpty(moasession.getCcc())) {
// illegal state; task should not have been executed without a selected country
throw new AuthenticationException("stork.22", new Object[] { sessionID });
+
}
- STORKConfig storkConfig = AuthConfigurationProvider.getInstance().getStorkConfig();
+ MOAReversionLogger.getInstance().logEvent(pendingReq, MOAIDEventConstants.AUTHPROCESS_STORK_REQUESTED);
+
+ STORKConfig storkConfig = AuthConfigurationProviderFactory.getInstance().getStorkConfig();
if (!storkConfig.isSTORKAuthentication(moasession.getCcc())) {
throw new AuthenticationException("stork.23", new Object[] { moasession.getCcc(), sessionID });
}
@@ -95,7 +146,7 @@ public class CreateStorkAuthRequestFormTask extends AbstractAuthServletTask {
executionContext.put(PROCESS_CTX_KEY_CPEPS_ISXMLSIGSUPPORTED, cpeps.isXMLSignatureSupported());
Logger.info("Starting STORK authentication for a citizen of country: " + moasession.getCcc());
- AuthenticationServer.startSTORKAuthentication(req, resp, moasession);
+ startSTORKAuthentication(req, resp, moasession, pendingReq);
} catch (MOAIDException ex) {
throw new TaskExecutionException(ex.getMessage(), ex);
@@ -107,8 +158,290 @@ public class CreateStorkAuthRequestFormTask extends AbstractAuthServletTask {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
+
+ /**
+ * Starts a MOA-ID authentication process using STORK
+ *
+ * @param req HttpServletRequest
+ * @param resp HttpServletResponse
+ * @param pendingReq
+ * @param ccc Citizen country code
+ * @param oaURL URL of the online application
+ * @param target Target parameter
+ * @param targetFriendlyName Friendly Name of Target
+ * @param authURL Authentication URL
+ * @param sourceID SourceID parameter
+ * @throws MOAIDException
+ * @throws AuthenticationException
+ * @throws WrongParametersException
+ * @throws ConfigurationException
+ */
+ public void startSTORKAuthentication(
+ HttpServletRequest req,
+ HttpServletResponse resp,
+ AuthenticationSession moasession, IRequest pendingReq) throws MOAIDException, AuthenticationException, WrongParametersException, ConfigurationException {
+
+ if (moasession == null) {
+ throw new AuthenticationException("auth.18", new Object[]{});
+ }
+
+ //read configuration paramters of OA
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix());
+ if (oaParam == null)
+ throw new AuthenticationException("auth.00", new Object[]{moasession.getPublicOAURLPrefix()});
+
+ //Start of STORK Processing
+ STORKConfig storkConfig = AuthConfigurationProviderFactory.getInstance().getStorkConfig();
+
+ CPEPS cpeps = storkConfig.getCPEPS(moasession.getCcc());
+
+ Logger.debug("Preparing to assemble STORK AuthnRequest with the following values:");
+ String destination = cpeps.getPepsURL().toExternalForm();
+ Logger.debug("C-PEPS URL: " + destination);
+
+
+ String issuerValue = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
+ // String acsURL = new DataURLBuilder().buildDataURL(issuerValue,
+ // PEPSConnectorServlet.PEPSCONNECTOR_SERVLET_URL_PATTERN, moasession.getSessionID());
+
+
+ String providerName = oaParam.getFriendlyName();
+ Logger.debug("Issuer value: " + issuerValue);
+
+ // prepare collection of required attributes
+ // - attributes for online application
+ Collection<StorkAttribute> attributesFromConfig = oaParam.getRequestedSTORKAttributes();
+
+ // - prepare attribute list
+ PersonalAttributeList attributeList = new PersonalAttributeList();
+
+ // - fill container
+ for (StorkAttribute current : attributesFromConfig) {
+ PersonalAttribute newAttribute = new PersonalAttribute();
+ newAttribute.setName(current.getName());
+
+ boolean globallyMandatory = false;
+ for (StorkAttribute currentGlobalAttribute : storkConfig.getStorkAttributes())
+ if (current.getName().equals(currentGlobalAttribute.getName())) {
+ globallyMandatory = BooleanUtils.isTrue(currentGlobalAttribute.getMandatory());
+ break;
+ }
+
+ newAttribute.setIsRequired(current.getMandatory() || globallyMandatory);
+ attributeList.add(newAttribute);
+ }
+
+ // add sign request
+ PersonalAttribute newAttribute = new PersonalAttribute();
+ newAttribute.setName("signedDoc");
+ newAttribute.setIsRequired(true);
+ List<String> value = new ArrayList<String>();
+
+ Logger.debug("PEPS supports XMLSignatures:"+cpeps.isXMLSignatureSupported());
+ String acsURL;
+ if(cpeps.isXMLSignatureSupported())//Send SignRequest to PEPS
+ {
+ //solve Problem with sessionIDs
+ acsURL = issuerValue + PepsConnectorTask.PEPSCONNECTOR_SERVLET_URL_PATTERN;
+
+ value.add(generateDssSignRequest(CreateXMLSignatureRequestBuilder.buildForeignIDTextToBeSigned("wie im Signaturzertifikat (as in my signature certificate)", oaParam, moasession),
+ "application/xhtml+xml", moasession.getCcc()));
+ newAttribute.setValue(value);
+ attributeList.add(newAttribute);
+
+ // TODO[branch]: STORK AuthReq CPEPS acsURL "/PEPSConnector"
+ }
+ else//Process SignRequest locally with MOCCA
+ {
+ String target = moasession.getTarget();
+ moasession.setTarget("AT");
+ String signedDoc = (generateDssSignRequest(CreateXMLSignatureRequestBuilder.buildForeignIDTextToBeSigned("wie im Signaturzertifikat (as in my signature certificate)", oaParam, moasession),
+ "application/xhtml+xml", "AT"));//moasession.getCcc()
+ moasession.setTarget(target);
+ Logger.warn("signedDoc to store:"+signedDoc);
+ //attributeList.add(newAttribute);
+
+ //store SignRequest for later...
+ moasession.setSignedDoc(signedDoc);
+
+ acsURL = issuerValue + AbstractPepsConnectorWithLocalSigningTask.PEPSCONNECTOR_SERVLET_URL_PATTERN;
+ // TODO[branch]: STORK AuthReq acsURL "/PEPSConnectorWithLocalSigning"
+ try {
+ AuthenticationSessionStoreage.storeSession(moasession);
+ } catch (MOADatabaseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+ Logger.debug("MOA Assertion Consumer URL (PEPSConnctor): " + acsURL);
+
+ if (Logger.isDebugEnabled()) {
+ Logger.debug("The following attributes are requested for this OA:");
+ for (StorkAttribute logReqAttr : attributesFromConfig)
+ Logger.debug("OA specific requested attribute: " + logReqAttr.getName() + ", isRequired: " + logReqAttr.getMandatory());
+ }
+
+ //TODO: check Target in case of SSO!!
+ String spSector = StringUtils.isEmpty(moasession.getTarget()) ? "Business" : moasession.getTarget();
+ String spInstitution = StringUtils.isEmpty(oaParam.getFriendlyName()) ? "UNKNOWN" : oaParam.getFriendlyName();
+ String spApplication = spInstitution;
+ String spCountry = "AT"; // intentionally set AT - the flow is limited on that use case only
+
+ //generate AuthnRquest
+ STORKAuthnRequest authnRequest = new STORKAuthnRequest();
+ authnRequest.setDestination(destination);
+ authnRequest.setAssertionConsumerServiceURL(acsURL);//PEPSConnectorWithLocalSigning
+ authnRequest.setProviderName(providerName);
+ authnRequest.setIssuer(issuerValue);
+ authnRequest.setQaa(oaParam.getQaaLevel());
+ authnRequest.setSpInstitution(spInstitution);
+ authnRequest.setSpCountry(spCountry);
+ authnRequest.setSpApplication(spApplication);
+ authnRequest.setSpSector(spSector);
+ authnRequest.setPersonalAttributeList(attributeList);
+
+ //TODO change
+ authnRequest.setEIDCrossBorderShare(true);
+ authnRequest.setEIDCrossSectorShare(true);
+ authnRequest.setEIDSectorShare(true);
+
+ authnRequest.setCitizenCountryCode(moasession.getCcc());
+
+ Logger.debug("STORK AuthnRequest succesfully assembled.");
+ STORKSAMLEngine samlEngine = STORKSAMLEngine.getInstance("outgoing");
+
+ if (samlEngine == null) {
+ Logger.error("Could not initalize STORK SAML engine.");
+ throw new MOAIDException("stork.00", null);
+ }
+
+ try {
+ authnRequest = samlEngine.generateSTORKAuthnRequest(authnRequest);
+ } catch (STORKSAMLEngineException e) {
+ Logger.error("Could not sign STORK SAML AuthnRequest.", e);
+ throw new MOAIDException("stork.00", null);
+ }
+
+ Logger.info("STORK AuthnRequest successfully signed!");
+
+ //validate AuthnRequest
+ try {
+ samlEngine.validateSTORKAuthnRequest(authnRequest.getTokenSaml());
+ } catch (STORKSAMLEngineException e) {
+ Logger.error("STORK SAML AuthnRequest not valid.", e);
+ throw new MOAIDException("stork.01", null);
+ }
+
+ Logger.debug("STORK AuthnRequest successfully internally validated.");
+
+ //send
+ moasession.setStorkAuthnRequest(authnRequest);
+
+ // do PEPS-conform logging for easier evaluation
+ try {
+ // 2015-03-12 16:44:27.144#S-PEPS receives request from SP#spurl#spepsurl#spapp#spdomain#citizen country#qaa#msghash#msg_id id1#
+ Logger.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) + "#S-PEPS receives request from SP#" +
+ moasession.getPublicOAURLPrefix() + "#" + issuerValue + "#" + spApplication + "#" +
+ new URL(moasession.getPublicOAURLPrefix()).getHost() + "#" + moasession.getCcc() + "#" + oaParam.getQaaLevel() +
+ "#_hash_#" + moasession.getProcessInstanceId() + "#");
+ } catch (Exception e1) {
+ Logger.info("STORK PEPS conform logging failed because of: " + e1.getMessage());
+ }
+
+ AuthenticationSessionStoreage.changeSessionID(moasession, authnRequest.getSamlId());
+
+
+ Logger.info("Preparing to send STORK AuthnRequest.");
+ Logger.info("prepared STORKAuthnRequest: ");
+ Logger.info(new String(authnRequest.getTokenSaml()));
+
+ try {
+ Logger.trace("Initialize VelocityEngine...");
+
+ VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine();
+ Template template = velocityEngine.getTemplate("/resources/templates/saml2-post-binding-moa.vm");
+ VelocityContext context = new VelocityContext();
+ context.put("SAMLRequest", PEPSUtil.encodeSAMLToken(authnRequest.getTokenSaml()));
+ context.put("RelayState", moasession.getSessionID());
+ context.put("action", destination);
+
+ StringWriter writer = new StringWriter();
+ template.merge(context, writer);
+
+ // TODO[branch]: SAML2 Form Submit to CPEPS, response to acsURL Servlet
+
+ resp.setContentType("text/html;charset=UTF-8");
+ resp.getOutputStream().write(writer.toString().getBytes("UTF-8"));
+
+ } catch (Exception e) {
+ Logger.error("Error sending STORK SAML AuthnRequest.", e);
+ throw new MOAIDException("stork.02", new Object[]{destination});
+
+ }
+
+ Logger.info("STORK AuthnRequest successfully successfully prepared for client with target location: " + authnRequest.getDestination());
+ MOAReversionLogger.getInstance().logEvent(pendingReq, MOAIDEventConstants.AUTHPROCESS_PEPS_REQUESTED, authnRequest.getDestination());
+
+ // do PEPS-conform logging for easier evaluation
+ try {
+ // 2015-03-12 16:44:27.144#S-PEPS generates request to C-PEPS#spepsurl#cpepsurl#spapp#spdomain#citizen country#qaa#msghash#msg_id id1#id2#
+ Logger.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) + "#S-PEPS generates request to C-PEPS#" +
+ issuerValue + "#" + destination + "#" + spApplication + "#" +
+ new URL(moasession.getPublicOAURLPrefix()).getHost() + "#" + moasession.getCcc() + "#" + oaParam.getQaaLevel() +
+ "#_hash_#" + moasession.getProcessInstanceId() + "#" + authnRequest.getSamlId() + "#");
+ } catch (Exception e1) {
+ Logger.info("STORK PEPS conform logging failed because of: " + e1.getMessage());
+ }
+ }
+
+ private String generateDssSignRequest(String text, String mimeType, String citizenCountry) {
+ IdentifierGenerator idGenerator;
+ try {
+ idGenerator = new SecureRandomIdentifierGenerator();
+
+ DocumentType doc = new DocumentType();
+ doc.setBase64XML(text.getBytes("UTF-8"));
+ doc.setID(idGenerator.generateIdentifier());
+
+ SignRequest request = new SignRequest();
+ request.setInputDocuments(ApiUtils.createInputDocuments(doc));
+
+ String id = idGenerator.generateIdentifier();
+ request.setRequestID(id);
+ request.setDocUI(id);
+
+ request.setProfile(Profiles.XADES_BES.toString());
+ request.setNumberOfSigners(BigInteger.ONE);
+ request.setTargetCountry(citizenCountry);
+
+ // no, no todo. PEPS will alter this value anyhow.
+ request.setReturnURL("http://invalid_return");
+
+ AnyType required = new AnyType();
+ required.getAny().add(ApiUtils.createSignatureType(SignatureTypes.XMLSIG_RFC3275.toString()));
+ required.getAny().add(ApiUtils.createAdditionalProfile(AdditionalProfiles.XADES.toString()));
+ required.getAny().add(ApiUtils.createQualityRequirements(QualityLevels.QUALITYLEVEL_QUALIFIEDSIG));
+ required.getAny().add(ApiUtils.createIncludeObject(doc));
+ request.setOptionalInputs(required);
+
+ return IOUtils.toString(ApiUtils.marshalToInputStream(request));
+ } catch (NoSuchAlgorithmException e) {
+ Logger.error("Cannot generate id", e);
+ throw new RuntimeException(e);
+ } catch (ApiUtilsException e) {
+ Logger.error("Could not create SignRequest", e);
+ throw new RuntimeException(e);
+ } catch (DOMException e) {
+ Logger.error("Could not create SignRequest", e);
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ Logger.error("Could not create SignRequest", e);
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleLocalSignResponseTask.java b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleLocalSignResponseTask.java
index 1ae66f24e..a631489be 100644
--- a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleLocalSignResponseTask.java
+++ b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleLocalSignResponseTask.java
@@ -17,6 +17,8 @@ import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -24,13 +26,16 @@ import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
import at.gv.egovernment.moa.id.auth.stork.STORKException;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
+
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.VelocityProvider;
import at.gv.egovernment.moa.logging.Logger;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
+import at.gv.egovernment.moa.util.Base64Utils;
import eu.stork.oasisdss.api.ApiUtils;
import eu.stork.oasisdss.profile.SignResponse;
import eu.stork.peps.auth.commons.IPersonalAttributeList;
@@ -112,8 +117,10 @@ public class PepsConnectorHandleLocalSignResponseTask extends AbstractPepsConnec
moaSessionID = AuthenticationSessionStoreage.changeSessionID(moaSession);
pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moaSessionID);
+ IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+
Logger.info("pendingRequestID:" + pendingRequestID);
- String signResponseString = new String(Base64.decodeBase64(signResponse), "UTF8");
+ String signResponseString = new String(Base64Utils.decode(signResponse, false), "UTF8");
Logger.info("RECEIVED signresponse:" + signResponseString);
// create SignResponse object
Source response1 = new StreamSource(new java.io.StringReader(signResponseString));
@@ -182,6 +189,9 @@ public class PepsConnectorHandleLocalSignResponseTask extends AbstractPepsConnec
Logger.debug("Add full STORK AuthnResponse to MOA session");
moaSession.setStorkAuthnResponse(request.getParameter("SAMLResponse"));// TODO ask Florian/Thomas
// authnResponse?
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq, MOAIDEventConstants.AUTHPROCESS_PEPS_RECEIVED);
+
moaSession.setForeigner(true);
// session is implicit stored in changeSessionID!!!!
@@ -211,7 +221,7 @@ public class PepsConnectorHandleLocalSignResponseTask extends AbstractPepsConnec
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
diff --git a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleResponseWithoutSignatureTask.java b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleResponseWithoutSignatureTask.java
index aff69aa9c..d16719b3b 100644
--- a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleResponseWithoutSignatureTask.java
+++ b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorHandleResponseWithoutSignatureTask.java
@@ -5,6 +5,7 @@ import iaik.x509.X509Certificate;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
@@ -26,18 +27,18 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
-import at.gv.egovernment.moa.id.auth.servlet.PEPSConnectorWithLocalSigningServlet;
import at.gv.egovernment.moa.id.auth.stork.STORKException;
import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
+import at.gv.egovernment.moa.id.config.stork.StorkAttributeProviderPlugin;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
import at.gv.egovernment.moa.id.util.HTTPUtils;
import at.gv.egovernment.moa.id.util.VelocityProvider;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.StringUtils;
import eu.stork.oasisdss.api.ApiUtils;
import eu.stork.oasisdss.profile.SignRequest;
@@ -288,19 +289,19 @@ public class PepsConnectorHandleResponseWithoutSignatureTask extends AbstractPep
// set return url to PEPSConnectorWithLocalSigningServlet and add newMOASessionID
// signRequest
- String issuerValue = AuthConfigurationProvider.getInstance().getPublicURLPrefix();
+ String issuerValue = AuthConfigurationProviderFactory.getInstance().getPublicURLPrefix();
String acsURL = issuerValue
- + PEPSConnectorWithLocalSigningServlet.PEPSCONNECTOR_SERVLET_URL_PATTERN;
+ + AbstractPepsConnectorWithLocalSigningTask.PEPSCONNECTOR_SERVLET_URL_PATTERN;
String url = acsURL + "?moaSessionID=" + newMOASessionID;
// redirect to OASIS module and sign there
boolean found = false;
try {
- List<AttributeProviderPlugin> aps = AuthConfigurationProvider.getInstance()
+ Collection<StorkAttributeProviderPlugin> aps = AuthConfigurationProviderFactory.getInstance()
.getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix()).getStorkAPs();
Logger.info("Found AttributeProviderPlugins:" + aps.size());
- for (AttributeProviderPlugin ap : aps) {
+ for (StorkAttributeProviderPlugin ap : aps) {
Logger.info("Found AttributeProviderPlugin attribute:" + ap.getAttributes());
if (ap.getAttributes().equalsIgnoreCase("signedDoc")) {
// FIXME: A servlet's class field is not thread safe!!!
@@ -411,7 +412,7 @@ public class PepsConnectorHandleResponseWithoutSignatureTask extends AbstractPep
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
@@ -431,7 +432,7 @@ public class PepsConnectorHandleResponseWithoutSignatureTask extends AbstractPep
SignRequest signRequest = ApiUtils.unmarshal(signDoc, SignRequest.class);
signRequest.setReturnURL("TODO");
signRequestString = IOUtils.toString(ApiUtils.marshalToInputStream(signRequest));
- context.put("signrequest", Base64.encodeBase64String(signRequestString.getBytes("UTF8")));
+ context.put("signrequest", Base64Utils.encode(signRequestString.getBytes("UTF8")));
context.put("clienturl", url);
context.put("action", oasisDssWebFormURL);
diff --git a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorTask.java b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorTask.java
index b89571fde..01dad4ebb 100644
--- a/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorTask.java
+++ b/id/server/modules/module-stork/src/main/java/at/gv/egovernment/moa/id/auth/modules/stork/tasks/PepsConnectorTask.java
@@ -30,10 +30,11 @@ import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.opensaml.saml2.core.StatusCode;
-import org.springframework.format.datetime.DateFormatter;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;
+import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;
import at.gv.egovernment.moa.id.auth.AuthenticationServer;
import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
@@ -43,13 +44,15 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.auth.modules.AbstractAuthServletTask;
import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;
import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
-import at.gv.egovernment.moa.id.auth.servlet.PEPSConnectorServlet;
import at.gv.egovernment.moa.id.auth.stork.STORKException;
import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
+
+import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;
+import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.moduls.IRequest;
import at.gv.egovernment.moa.id.moduls.ModulUtils;
+import at.gv.egovernment.moa.id.moduls.RequestStorage;
import at.gv.egovernment.moa.id.process.api.ExecutionContext;
import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
@@ -63,10 +66,8 @@ import at.gv.egovernment.moa.util.XPathUtils;
import at.gv.util.xsd.xmldsig.SignatureType;
import at.gv.util.xsd.xmldsig.X509DataType;
import eu.stork.documentservice.DocumentService;
-import eu.stork.documentservice.data.DatabaseConnectorMySQLImpl;
import eu.stork.oasisdss.api.ApiUtils;
import eu.stork.oasisdss.api.LightweightSourceResolver;
-import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
import eu.stork.oasisdss.profile.DocumentType;
import eu.stork.oasisdss.profile.DocumentWithSignature;
import eu.stork.oasisdss.profile.SignResponse;
@@ -122,6 +123,8 @@ import eu.stork.peps.exceptions.STORKSAMLEngineException;
*/
public class PepsConnectorTask extends AbstractAuthServletTask {
+ public static final String PEPSCONNECTOR_SERVLET_URL_PATTERN = "/PEPSConnector";
+
public PepsConnectorTask() {
super();
@@ -219,7 +222,8 @@ public class PepsConnectorTask extends AbstractAuthServletTask {
// throw new WrongParametersException("VerifyAuthenticationBlock", PARAM_SESSIONID, "auth.12");
pendingRequestID = AuthenticationSessionStoreage.getPendingRequestID(moaSessionID);
-
+ IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);
+
// load MOASession from database
AuthenticationSession moaSession = AuthenticationServer.getSession(moaSessionID);
// change MOASessionID
@@ -245,7 +249,7 @@ public class PepsConnectorTask extends AbstractAuthServletTask {
throw new MOAIDException("stork.07", null);
}
- OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix());
+ OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(moaSession.getPublicOAURLPrefix());
if (oaParam == null)
throw new AuthenticationException("auth.00", new Object[] { moaSession.getPublicOAURLPrefix() });
@@ -341,7 +345,9 @@ public class PepsConnectorTask extends AbstractAuthServletTask {
// ////////////////////////////////////////////////////////////////////////
- AuthConfigurationProvider config = AuthConfigurationProvider.getInstance();
+ MOAReversionLogger.getInstance().logEvent(pendingReq, MOAIDEventConstants.AUTHPROCESS_PEPS_RECEIVED);
+
+ AuthConfiguration config = AuthConfigurationProviderFactory.getInstance();
String citizenSignature = null;
if(config.isStorkFakeIdLActive() && config.getStorkNoSignatureCountries().contains(storkAuthnRequest.getCitizenCountryCode()) && config.getStorkFakeIdLCountries().contains(storkAuthnRequest.getCitizenCountryCode())) {
Logger.debug("signedDoc extraction skipped due to configuration");
@@ -559,6 +565,8 @@ public class PepsConnectorTask extends AbstractAuthServletTask {
Logger.error("SZR Gateway did not return an identity link.");
throw new MOAIDException("stork.10", null);
}
+
+ MOAReversionLogger.getInstance().logEvent(pendingReq, MOAIDEventConstants.AUTHPROCESS_PEPS_IDL_RECEIVED);
moaSession.setForeigner(true);
Logger.info("Received Identity Link from SZR Gateway");
@@ -631,7 +639,7 @@ public class PepsConnectorTask extends AbstractAuthServletTask {
}
finally {
- ConfigurationDBUtils.closeSession();
+
}
}
@@ -740,7 +748,7 @@ public class PepsConnectorTask extends AbstractAuthServletTask {
private String getdtlUrl() {
String dtlUrl;
try {
- AuthConfigurationProvider authConfigurationProvider = AuthConfigurationProvider.getInstance();
+ AuthConfiguration authConfigurationProvider = AuthConfigurationProviderFactory.getInstance();
dtlUrl = authConfigurationProvider.getDocumentServiceUrl();
Logger.info ("PEPSConnectorServlet, using dtlUrl:"+dtlUrl);
diff --git a/id/server/modules/pom.xml b/id/server/modules/pom.xml
index e9234a62f..1ca5b3835 100644
--- a/id/server/modules/pom.xml
+++ b/id/server/modules/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>MOA.id</groupId>
<artifactId>moa-id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<groupId>MOA.id.server.modules</groupId>
diff --git a/id/server/pom.xml b/id/server/pom.xml
index 2341552cc..a7e79ef78 100644
--- a/id/server/pom.xml
+++ b/id/server/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>MOA</groupId>
<artifactId>id</artifactId>
- <version>2.x</version>
+ <version>3.x</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -19,7 +19,7 @@
<modules>
<module>idserverlib</module>
- <module>proxy</module>
+<!-- <module>proxy</module> -->
<module>auth</module>
<module>moa-id-commons</module>
<module>stork2-saml-engine</module>
@@ -84,6 +84,12 @@
<dependency>
<groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${org.springframework.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
@@ -94,9 +100,27 @@
<version>${org.springframework.version}</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.unitils</groupId>
+ <artifactId>unitils-core</artifactId>
+ <version>3.4.2</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
-
+
<build>
<plugins>
<!-- <plugin>
diff --git a/id/server/stork2-commons/pom.xml b/id/server/stork2-commons/pom.xml
index 3bc3dae77..a989ea946 100644
--- a/id/server/stork2-commons/pom.xml
+++ b/id/server/stork2-commons/pom.xml
@@ -18,6 +18,14 @@
<description>
The STORKCommons library provides beans, Java Interfaces and utility classes to integrate PEPS and SAML Engine.
</description>
+
+ <repositories>
+ <repository>
+ <id>shibboleth.internet2.edu</id>
+ <name>Internet2</name>
+ <url>https://build.shibboleth.net/nexus/content/groups/public/</url>
+ </repository>
+ </repositories>
<dependencies>
@@ -52,6 +60,12 @@
</exclusions>
</dependency>
+ <!-- Bouncy Castle -->
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk16</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml</artifactId>
diff --git a/id/server/stork2-saml-engine/pom.xml b/id/server/stork2-saml-engine/pom.xml
index 4effa9d1c..ee4a61f3a 100644
--- a/id/server/stork2-saml-engine/pom.xml
+++ b/id/server/stork2-saml-engine/pom.xml
@@ -47,7 +47,7 @@
<dependency>
<groupId>eu.stork</groupId>
<artifactId>Commons</artifactId>
- <version>${commons.version}</version>
+ <version>1.5.1</version>
</dependency>
<dependency>
diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java
index be06dcfb4..a4015eed1 100644
--- a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java
+++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java
@@ -73,8 +73,8 @@ public class CustomAttributeQueryValidator implements Validator<CustomAttributeQ
* the validation exception
*/
protected void validateTime(CustomAttributeQuery query) throws ValidationException {
- if (query.getIssueInstant().isAfterNow())
- throw new ValidationException("Issue time is in the futue");
- }
+ if (query.getIssueInstant().minusMinutes(5).isAfterNow())
+ throw new ValidationException("Issue time is in the futue");
+ }
}
diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java
index 0d3dbb5e9..9c8c1e6a1 100644
--- a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java
+++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java
@@ -72,11 +72,11 @@ public class MultipleAssertionResponseValidator implements Validator<Response> {
* @throws ValidationException
* the validation exception
*/
- protected void validateTime(Response response) throws ValidationException {
- if (response.getIssueInstant().isAfterNow())
- throw new ValidationException("Issue time is in the futue");
- }
-
+ protected void validateTime(Response response) throws ValidationException {
+ if (response.getIssueInstant().minusMinutes(5).isAfterNow())
+ throw new ValidationException("Issue time is in the futue");
+ }
+
/**
* Validate ids
*
diff --git a/pom.xml b/pom.xml
index 0bb052ce3..c896e7ec3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,727 +1,773 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>MOA</groupId>
- <artifactId>MOA</artifactId>
- <packaging>pom</packaging>
- <version>2.x</version>
- <name>MOA</name>
-
- <properties>
- <repositoryPath>${basedir}/repository</repositoryPath>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-
- <!--
- <moa-commons-version>2.0.1</moa-commons-version>
- <moa-id-version>2.1.2</moa-id-version>
- <moa-id-proxy-version>2.0.0</moa-id-proxy-version>
- <moa-spss-version>2.0.3</moa-spss-version>
- <configtool-version>1.1.4</configtool-version>
- <demo-oa-version>2.0.2</demo-oa-version>
- <moa-commons-version>2.0.1</moa-commons-version>
- -->
-
- <!-- Project Version -->
- <moa-commons-version>2.0.4-SNAPSHOT</moa-commons-version>
- <moa-id-version>2.2.2-SNAPSHOT</moa-id-version>
- <moa-id-proxy-version>2.0.1-SNAPSHOT</moa-id-proxy-version>
- <moa-spss-version>2.0.5-SNAPSHOT</moa-spss-version>
- <configtool-version>1.1.7-SNAPSHOT</configtool-version>
- <demo-oa-version>2.0.5-SNAPSHOT</demo-oa-version>
-
- <!-- Library Versions -->
- <org.springframework.version>4.1.6.RELEASE</org.springframework.version>
- <surefire.version>2.18.1</surefire.version>
- <opensaml.version>2.6.5</opensaml.version>
- <openws-version>1.5.3</openws-version>
- <xmltooling.version>1.4.5</xmltooling.version>
- <cxf.version>3.0.4</cxf.version>
- <struts.version>2.3.20</struts.version>
- <egovutils.version>2.0.0</egovutils.version>
- <slf4j.version>1.7.12</slf4j.version>
- <hibernate.version>4.3.8.Final</hibernate.version>
- <mysql-connector.java>5.1.35</mysql-connector.java>
- <junit.version>4.11</junit.version>
- <org.apache.commons.io.version>2.4</org.apache.commons.io.version>
- <org.apache.commons.lang3.version>3.4</org.apache.commons.lang3.version>
- <org.apache.commons.collections4.version>4.0</org.apache.commons.collections4.version>
- <jodatime.version>2.7</jodatime.version>
-
- </properties>
-
- <profiles>
- <profile>
- <id>default</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- <property>
- <name>default</name>
- </property>
- </activation>
- <modules>
- <module>common</module>
- <module>spss</module>
- <module>id</module>
- </modules>
- <repositories>
- <repository>
- <id>local</id>
- <name>local</name>
- <url>file:${basedir}/../../../repository</url>
- </repository>
- <repository>
- <id>hyberjaxb</id>
- <url>http://repository.highsource.org/maven2/releases/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- <repository>
- <id>jboss</id>
- <url>https://repository.jboss.org/nexus/content/repositories/central/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- </repositories>
- </profile>
- </profiles>
-
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-release-plugin</artifactId>
- <version>2.5.1</version>
- </plugin>
- </plugins>
- </pluginManagement>
- <plugins>
-<!-- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- <version>1.0-alpha-2</version>
- <executions>
- <execution>
- <phase>initialize</phase>
- <goals>
- <goal>read-project-properties</goal>
- </goals>
- <configuration>
- <files>
- <file>${basedir}/moa-id.properties</file>
- </files>
- </configuration>
- </execution>
- </executions>
- </plugin> -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>${surefire.version}</version>
- <configuration>
- <excludes>
- <exclude>eu/stork/peps/test/simple/SimpleBaseTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkAuthRequestTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkLogoutRequestTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkLogoutResponseTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkNewResponseTest.java</exclude>
- <exclude>eu/stork/peps/test/simple/StorkResponseTest.java</exclude>
- <exclude>test/MOAIDTestCase.java</exclude>
- <exclude>test/at/gv/egovernment/moa/MOATestCase.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/UnitTestCase.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/MOAIDAuthInitialiserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/builder/GetIdentityLinkFormBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/builder/InfoboxReadRequestBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/invoke/IdentityLinkAssertionParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/invoke/MOASPSSTestCase.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/oauth/CertTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/auth/parser/SAMLArtifactParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/proxy/builder/SAMLArtifactBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/SPSSTestCase.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/TransformParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParserTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImplTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfiguratorTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvokerTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactoryTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/invoke/TransformationFactoryTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvokerTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvokerTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/spss/server/tools/CertToolTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/DOMUtilsTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/KeyStoreUtilsTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/SSLUtilsTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/URLDecoderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/URLEncoderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/XMLGrammarBuilderTest.java</exclude>
- <exclude>test/at/gv/egovernment/moa/util/XPathUtilsTest.java</exclude>
- </excludes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <verbose>false</verbose>
- <fork>true</fork>
- <executable>${env.BUILD_EXECUTEABLE}</executable>
- <compilerVersion>${env.BUILD_VERSION}</compilerVersion>
- <source>1.7</source>
- <target>1.7</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <inherited>false</inherited>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-1</version>
- <!-- TODO Update Version 2.2-beta-1 for MOA-SPSS -->
- <configuration>
- <finalName>moa</finalName>
- <encoding>UTF-8</encoding>
- <descriptors>
- <descriptor>id/assembly-auth.xml</descriptor>
- <descriptor>id/assembly-proxy.xml</descriptor>
- <descriptor>spss/assembly.xml</descriptor>
- <descriptor>spss/assembly-lib.xml</descriptor>
- </descriptors>
- </configuration>
- </plugin>
-
- <!-- Vulnerability checks -->
-<!-- <plugin>
- <groupId>org.owasp</groupId>
- <artifactId>dependency-check-maven</artifactId>
- <version>1.2.5</version>
- <executions>
- <execution>
- <phase>verify</phase>
- <goals>
- <goal>check</goal>
- </goals>
- </execution>
- </executions>
- </plugin> -->
-
- </plugins>
-
- </build>
-
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <excludePackageNames>test.*</excludePackageNames>
- </configuration>
- </plugin>
- </plugins>
- </reporting>
-
- <dependencyManagement>
- <dependencies>
-
- <dependency>
- <groupId>org.opensaml</groupId>
- <artifactId>opensaml</artifactId>
- <version>${opensaml.version}</version>
- </dependency>
- <dependency>
- <groupId>org.opensaml</groupId>
- <artifactId>xmltooling</artifactId>
- <version>${xmltooling.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-frontend-jaxws</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http</artifactId>
- <version>${cxf.version}</version>
- </dependency>
-
-
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- <version>${struts.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-json-plugin</artifactId>
- <version>${struts.version}</version>
- </dependency>
-
- <dependency>
- <groupId>at.gv.util</groupId>
- <artifactId>egovutils</artifactId>
- <version>${egovutils.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jul-to-slf4j</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
-
-
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis</artifactId>
- <version>1.0_IAIK_1.2</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.axis</groupId>
- <artifactId>axis-jaxrpc</artifactId>
- <version>1.4</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.axis</groupId>
- <artifactId>axis-saaj</artifactId>
- <version>1.4</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis-wsdl4j</artifactId>
- <version>1.5.1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>jaxen</groupId>
- <artifactId>jaxen</artifactId>
- <version>1.1.6</version>
- </dependency>
- <dependency>
- <groupId>saxpath</groupId>
- <artifactId>saxpath</artifactId>
- <version>1.0-FCS</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.postgresql</groupId>
- <artifactId>postgresql</artifactId>
- <version>9.3-1102-jdbc41</version>
- </dependency>
-
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4.7</version>
- </dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>3.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.4.1</version>
- </dependency>
- <dependency>
- <groupId>dav4j</groupId>
- <artifactId>dav4j</artifactId>
- <version>0.1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>httpsclient</groupId>
- <artifactId>httpsclient</artifactId>
- <version>JSSE-1.0</version>
- <scope>compile</scope>
- </dependency>
-<!-- <dependency>
- <groupId>regexp</groupId>
- <artifactId>regexp</artifactId>
- <version>1.3</version>
- </dependency> -->
-
-
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk16</artifactId>
- <version>1.46</version>
- </dependency>
-
- <dependency>
- <groupId>MOA</groupId>
- <artifactId>moa-common</artifactId>
- <version>${moa-commons-version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>MOA.id.server</groupId>
- <artifactId>moa-id-lib</artifactId>
- <version>${moa-id-version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>MOA.id.server</groupId>
- <artifactId>moa-id-commons</artifactId>
- <version>${moa-id-version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>MOA.id.server.modules</groupId>
- <artifactId>moa-id-module-stork</artifactId>
- <version>${moa-id-version}</version>
- </dependency>
- <dependency>
- <groupId>MOA.id.server.modules</groupId>
- <artifactId>moa-id-module-monitoring</artifactId>
- <version>${moa-id-version}</version>
- </dependency>
- <dependency>
- <groupId>MOA.spss.server</groupId>
- <artifactId>moa-spss-lib</artifactId>
- <version>${moa-spss-version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>MOA</groupId>
- <artifactId>moa-common</artifactId>
- <version>${moa-commons-version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>MOA.spss.server</groupId>
- <artifactId>moa-spss-tools</artifactId>
- <version>${moa-spss-version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
- <scope>provide</scope>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>1.1.1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>commons-discovery</groupId>
- <artifactId>commons-discovery</artifactId>
- <version>0.5</version>
- <scope>compile</scope>
- </dependency>
- <!-- IAIK libraries -->
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_jce_full</artifactId>
- <!-- <version>4.0_MOA</version>-->
- <version>5.2</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_moa</artifactId>
- <version>1.51</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_cms</artifactId>
- <version>5.0</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_ecc</artifactId>
- <version>2.19</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_ixsil</artifactId>
- <version>1.2.2.5</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_X509TrustManager</artifactId>
- <version>0.3</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Provider</artifactId>
- <version>1.2.4</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <classifier>win32</classifier>
- <type>dll</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <classifier>linux</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <classifier>linux_x64</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <classifier>solaris_sparc</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <classifier>solaris_sparcv9</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <version>1.2.17</version>
- <classifier>win64</classifier>
- <type>dll</type>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.2.12</version>
- </dependency>
-
- <!-- TSL -->
- <dependency>
- <groupId>iaik</groupId>
- <artifactId>iaik_tsl</artifactId>
- <version>1.1</version>
- </dependency>
-
-<!-- <dependency>
- <groupId>iaik</groupId>
- <artifactId>iaik_util</artifactId>
- <version>0.23</version>
- </dependency>
- <dependency>
- <groupId>iaik</groupId>
- <artifactId>iaik_xsect_eval</artifactId>
- <version>1.1709142</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>2.2.7</version>
- </dependency>
- <dependency>
- <groupId>org.xerial</groupId>
- <artifactId>sqlite-jdbc</artifactId>
- <version>3.7.8-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>iaik</groupId>
- <artifactId>iaik_jsse</artifactId>
- <version>4.4</version>
- </dependency> -->
-
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <version>2.11.0</version>
- <scope>compile</scope>
- </dependency>
- <!-- The xmlParserAPIs.jar of the official xalan distribution
- and the one in the central repository differ. So, we
- are going to include the official one in our own
- distribution to prevent from problems with different
- versions in the endorsed directory of the servlet container
- or jre endorsed directory. -->
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>xml-apis</artifactId>
- <version>2.11.0</version>
- <scope>runtime</scope>
- </dependency>
- <!-- The xalan.jar of the official xalan distribution
- and the one in the central repository differ. So, we
- are going to include the official one in our own
- distribution to prevent from problems with different
- versions in the endorsed directory of the servlet container
- or jre endorsed directory. -->
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>xalan</artifactId>
- <version>2.7.2</version>
- <scope>compile</scope><!-- for XPathAPI, Javadoc,...-->
- </dependency>
- <dependency>
- <groupId>xalan-bin-dist</groupId>
- <artifactId>serializer</artifactId>
- <version>2.7.2</version><!-- xalan version -->
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
-
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>win32</classifier>
- <type>dll</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>linux</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>linux_x64</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>solaris_sparc</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>solaris_sparcv9</classifier>
- <type>so</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>iaik.prod</groupId>
- <artifactId>iaik_Pkcs11Wrapper</artifactId>
- <classifier>win64</classifier>
- <type>dll</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.4</version>
- </dependency>
-
- </dependencies>
-
- <repositories>
- <repository>
- <id>MOA</id>
- <name>MOA Dependencies</name>
- <!--releases>
- <enabled>false</enabled>
- </releases-->
- <layout>default</layout>
- <url>file://${repositoryPath}</url>
- </repository>
- </repositories>
-</project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>MOA</groupId>
+ <artifactId>MOA</artifactId>
+ <packaging>pom</packaging>
+ <version>2.x</version>
+ <name>MOA</name>
+
+ <properties>
+ <repositoryPath>${basedir}/repository</repositoryPath>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+ <!--
+ <moa-commons-version>2.0.1</moa-commons-version>
+ <moa-id-version>2.1.2</moa-id-version>
+ <moa-id-proxy-version>2.0.0</moa-id-proxy-version>
+ <moa-spss-version>2.0.3</moa-spss-version>
+ <configtool-version>1.1.4</configtool-version>
+ <demo-oa-version>2.0.2</demo-oa-version>
+ <moa-commons-version>2.0.1</moa-commons-version>
+ -->
+
+ <!-- Project Version -->
+ <moa-commons-version>3.0.1-Snapshot</moa-commons-version>
+ <moa-id-version>3.0.2-Snapshot</moa-id-version>
+ <moa-id-proxy-version>2.0.1-Snapshot</moa-id-proxy-version>
+ <moa-spss-version>2.0.5-Snapshot</moa-spss-version>
+ <configtool-version>2.0.1-Snapshot</configtool-version>
+ <demo-oa-version>2.0.5-Snapshot</demo-oa-version>
+
+ <!-- Library Versions -->
+ <org.springframework.version>4.1.6.RELEASE</org.springframework.version>
+ <surefire.version>2.18.1</surefire.version>
+ <opensaml.version>2.6.5</opensaml.version>
+ <xmltooling.version>1.4.5</xmltooling.version>
+ <cxf.version>3.0.4</cxf.version>
+ <struts.version>2.3.20</struts.version>
+ <egovutils.version>2.0.0</egovutils.version>
+ <slf4j.version>1.7.12</slf4j.version>
+ <hibernate.version>4.3.8.Final</hibernate.version>
+ <mysql-connector.java>5.1.35</mysql-connector.java>
+ <junit.version>4.11</junit.version>
+ <org.apache.commons.io.version>2.4</org.apache.commons.io.version>
+ <org.apache.commons.lang3.version>3.4</org.apache.commons.lang3.version>
+ <org.apache.commons.collections4.version>4.0</org.apache.commons.collections4.version>
+ <jodatime.version>2.7</jodatime.version>
+
+ <jackson-version>2.5.4</jackson-version>
+ <apache-cli-version>1.2</apache-cli-version>
+ <spring-orm-version>3.1.1.RELEASE</spring-orm-version>
+
+ </properties>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ <property>
+ <name>default</name>
+ </property>
+ </activation>
+ <modules>
+ <module>common</module>
+ <module>spss</module>
+ <module>id</module>
+ </modules>
+ <repositories>
+ <repository>
+ <id>local</id>
+ <name>local</name>
+ <url>file:${basedir}/../../../repository</url>
+ </repository>
+ <repository>
+ <id>hyberjaxb</id>
+ <url>http://repository.highsource.org/maven2/releases/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ <repository>
+ <id>jboss</id>
+ <url>https://repository.jboss.org/nexus/content/repositories/central/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ <repository>
+ <id>egiz-commons</id>
+ <url>http://demo.egiz.gv.at/int-repo/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+
+ </repositories>
+ </profile>
+ </profiles>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>2.5.1</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+<!-- <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>properties-maven-plugin</artifactId>
+ <version>1.0-alpha-2</version>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>read-project-properties</goal>
+ </goals>
+ <configuration>
+ <files>
+ <file>${basedir}/moa-id.properties</file>
+ </files>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin> -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${surefire.version}</version>
+ <configuration>
+ <excludes>
+ <exclude>eu/stork/peps/test/simple/SimpleBaseTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkAuthRequestTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkLogoutRequestTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkLogoutResponseTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkNewResponseTest.java</exclude>
+ <exclude>eu/stork/peps/test/simple/StorkResponseTest.java</exclude>
+ <exclude>test/MOAIDTestCase.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/MOATestCase.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/UnitTestCase.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/MOAIDAuthInitialiserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/builder/GetIdentityLinkFormBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/builder/InfoboxReadRequestBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/builder/SAMLArtifactBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/invoke/IdentityLinkAssertionParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/invoke/MOASPSSTestCase.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/invoke/SignatureVerificationTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/oauth/CertTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/auth/parser/SAMLArtifactParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/proxy/builder/SAMLArtifactBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/proxy/builder/SAMLRequestBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/id/proxy/parser/SAMLResponseParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/SPSSTestCase.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/TransformParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParserTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImplTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfiguratorTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvokerTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactoryTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/invoke/TransformationFactoryTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvokerTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvokerTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/spss/server/tools/CertToolTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/DOMUtilsTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/KeyStoreUtilsTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/SSLUtilsTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/URLDecoderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/URLEncoderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/XMLGrammarBuilderTest.java</exclude>
+ <exclude>test/at/gv/egovernment/moa/util/XPathUtilsTest.java</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <verbose>false</verbose>
+ <fork>true</fork>
+ <executable>${env.BUILD_EXECUTEABLE}</executable>
+ <compilerVersion>${env.BUILD_VERSION}</compilerVersion>
+ <source>1.7</source>
+ <target>1.7</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <inherited>false</inherited>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-1</version>
+ <!-- TODO Update Version 2.2-beta-1 for MOA-SPSS -->
+ <configuration>
+ <finalName>moa</finalName>
+ <encoding>UTF-8</encoding>
+ <descriptors>
+ <descriptor>id/assembly-auth.xml</descriptor>
+ <descriptor>id/assembly-proxy.xml</descriptor>
+ <descriptor>spss/assembly.xml</descriptor>
+ <descriptor>spss/assembly-lib.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </plugin>
+
+ <!-- Vulnerability checks -->
+<!-- <plugin>
+ <groupId>org.owasp</groupId>
+ <artifactId>dependency-check-maven</artifactId>
+ <version>1.2.5</version>
+ <executions>
+ <execution>
+ <phase>verify</phase>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ </ plugin>-->
+
+ </plugins>
+
+ </build>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <excludePackageNames>test.*</excludePackageNames>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <dependency>
+ <groupId>org.opensaml</groupId>
+ <artifactId>opensaml</artifactId>
+ <version>${opensaml.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opensaml</groupId>
+ <artifactId>xmltooling</artifactId>
+ <version>${xmltooling.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxws</artifactId>
+ <version>${cxf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http</artifactId>
+ <version>${cxf.version}</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-core</artifactId>
+ <version>${struts.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-json-plugin</artifactId>
+ <version>${struts.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>at.gv.util</groupId>
+ <artifactId>egovutils</artifactId>
+ <version>${egovutils.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jul-to-slf4j</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>axis</groupId>
+ <artifactId>axis</artifactId>
+ <version>1.0_IAIK_1.2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis</groupId>
+ <artifactId>axis-jaxrpc</artifactId>
+ <version>1.4</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis</groupId>
+ <artifactId>axis-saaj</artifactId>
+ <version>1.4</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>axis</groupId>
+ <artifactId>axis-wsdl4j</artifactId>
+ <version>1.5.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>jaxen</groupId>
+ <artifactId>jaxen</artifactId>
+ <version>1.1.6</version>
+ </dependency>
+ <dependency>
+ <groupId>saxpath</groupId>
+ <artifactId>saxpath</artifactId>
+ <version>1.0-FCS</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.17</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>9.3-1102-jdbc41</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4.7</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <version>1.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.4.1</version>
+ </dependency>
+ <dependency>
+ <groupId>dav4j</groupId>
+ <artifactId>dav4j</artifactId>
+ <version>0.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>httpsclient</groupId>
+ <artifactId>httpsclient</artifactId>
+ <version>JSSE-1.0</version>
+ <scope>compile</scope>
+ </dependency>
+<!-- <dependency>
+ <groupId>regexp</groupId>
+ <artifactId>regexp</artifactId>
+ <version>1.3</version>
+ </dependency> -->
+
+
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk16</artifactId>
+ <version>1.46</version>
+ </dependency>
+
+ <dependency>
+ <groupId>MOA</groupId>
+ <artifactId>moa-common</artifactId>
+ <version>${moa-commons-version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>MOA.id.server</groupId>
+ <artifactId>moa-id-lib</artifactId>
+ <version>${moa-id-version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>MOA.id.server</groupId>
+ <artifactId>moa-id-commons</artifactId>
+ <version>${moa-id-version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>MOA.id.server.modules</groupId>
+ <artifactId>moa-id-module-stork</artifactId>
+ <version>${moa-id-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>MOA.id.server.modules</groupId>
+ <artifactId>moa-id-module-monitoring</artifactId>
+ <version>${moa-id-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>MOA.spss.server</groupId>
+ <artifactId>moa-spss-lib</artifactId>
+ <version>${moa-spss-version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>MOA</groupId>
+ <artifactId>moa-common</artifactId>
+ <version>${moa-commons-version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>MOA.spss.server</groupId>
+ <artifactId>moa-spss-tools</artifactId>
+ <version>${moa-spss-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.4</version>
+ <scope>provide</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>1.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-discovery</groupId>
+ <artifactId>commons-discovery</artifactId>
+ <version>0.5</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- IAIK libraries -->
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_jce_full</artifactId>
+ <!-- <version>4.0_MOA</version>-->
+ <version>5.2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_moa</artifactId>
+ <version>1.51</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_cms</artifactId>
+ <version>5.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_ecc</artifactId>
+ <version>2.19</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_ixsil</artifactId>
+ <version>1.2.2.5</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_X509TrustManager</artifactId>
+ <version>0.3</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Provider</artifactId>
+ <version>1.2.4</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <classifier>win32</classifier>
+ <type>dll</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <classifier>linux</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <classifier>linux_x64</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <classifier>solaris_sparc</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <classifier>solaris_sparcv9</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <version>1.2.17</version>
+ <classifier>win64</classifier>
+ <type>dll</type>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.2.12</version>
+ </dependency>
+
+ <!-- TSL -->
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_tsl</artifactId>
+ <version>1.1</version>
+ </dependency>
+
+<!-- <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_util</artifactId>
+ <version>0.23</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_xsect_eval</artifactId>
+ <version>1.1709142</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>2.2.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.xerial</groupId>
+ <artifactId>sqlite-jdbc</artifactId>
+ <version>3.7.8-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jsse</artifactId>
+ <version>4.4</version>
+ </dependency> -->
+
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.11.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- The xmlParserAPIs.jar of the official xalan distribution
+ and the one in the central repository differ. So, we
+ are going to include the official one in our own
+ distribution to prevent from problems with different
+ versions in the endorsed directory of the servlet container
+ or jre endorsed directory. -->
+ <dependency>
+ <groupId>xalan-bin-dist</groupId>
+ <artifactId>xml-apis</artifactId>
+ <version>2.11.0</version>
+ <scope>runtime</scope>
+ </dependency>
+ <!-- The xalan.jar of the official xalan distribution
+ and the one in the central repository differ. So, we
+ are going to include the official one in our own
+ distribution to prevent from problems with different
+ versions in the endorsed directory of the servlet container
+ or jre endorsed directory. -->
+ <dependency>
+ <groupId>xalan-bin-dist</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.7.1</version>
+ <scope>compile</scope><!-- for XPathAPI, Javadoc,...-->
+ </dependency>
+ <dependency>
+ <groupId>xalan-bin-dist</groupId>
+ <artifactId>serializer</artifactId>
+ <version>2.7.1</version><!-- xalan version -->
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>${org.springframework.version}</version>
+ </dependency>
+
+ <!-- the core, which includes Streaming API, shared low-level abstractions (but NOT data-binding) -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${jackson-version}</version>
+ </dependency>
+ <!-- databinding; ObjectMapper, JsonNode and related classes are here -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>${jackson-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>${apache-cli-version}</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.unitils</groupId>
+ <artifactId>unitils-core</artifactId>
+ <version>3.4.2</version>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <classifier>win32</classifier>
+ <type>dll</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <classifier>linux</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <classifier>linux_x64</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <classifier>solaris_sparc</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <classifier>solaris_sparcv9</classifier>
+ <type>so</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik.prod</groupId>
+ <artifactId>iaik_Pkcs11Wrapper</artifactId>
+ <classifier>win64</classifier>
+ <type>dll</type>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>MOA</id>
+ <name>MOA Dependencies</name>
+ <!--releases>
+ <enabled>false</enabled>
+ </releases-->
+ <layout>default</layout>
+ <url>file://${repositoryPath}</url>
+ </repository>
+ </repositories>
+</project>
diff --git a/repository/at/gv/egiz/components/egiz-configuration-meta-api/0.3/egiz-configuration-meta-api-0.3.jar b/repository/at/gv/egiz/components/egiz-configuration-meta-api/0.3/egiz-configuration-meta-api-0.3.jar
new file mode 100644
index 000000000..3065bf33c
--- /dev/null
+++ b/repository/at/gv/egiz/components/egiz-configuration-meta-api/0.3/egiz-configuration-meta-api-0.3.jar
Binary files differ
diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java
index 3a004a81d..4699c6109 100644
--- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java
+++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java
@@ -42,6 +42,8 @@ import java.nio.channels.FileChannel;
import java.security.Security;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -61,10 +63,19 @@ import at.gv.egovernment.moa.spss.tsl.utils.TSLImportFromFileContext;
public class TSLConnector implements TSLConnectorInterface {
static final String _QCSSCDURI = "http://uri.etsi.org/TrstSvc/eSigDir-1999-93-EC-TrustedList/SvcInfoExt/QCWithSSCD";
- static final String _STYPETEMPLATE = "CA/QC";
+ static final String _STYPETEMPLATE_CAQC = "CA/QC";
+ static final String _STYPETEMPLATE_TSAQTST = "TSA/QTST";
private static final String DEFAULT_HASHCACHE_DIR = "./hashcache/";
+ static final List<String> STYPETEMPLATES = Collections.unmodifiableList(new ArrayList<String>(){
+ private static final long serialVersionUID = 1L;
+ {
+ add(_STYPETEMPLATE_CAQC);
+ add(_STYPETEMPLATE_TSAQTST);
+ }
+ });
+
static Logger log = Logger.getLogger(TSLConnector.class);
@@ -612,13 +623,13 @@ public class TSLConnector implements TSLConnectorInterface {
readConnection, false, false);
log.debug("### Connected ###");
-
+ //TODO: maybe add "TSA/QTST for qualified timestamps
try {
TSLCertsExporter certsExporter;
certsExporter = tslEngine.createCertsExporter(
readConnection,
countries,
- new String[]{_STYPETEMPLATE},
+ new String[]{_STYPETEMPLATE_CAQC},
serviceLevelStatus
);
@@ -690,8 +701,8 @@ public class TSLConnector implements TSLConnectorInterface {
log.info("Cert: " + resultmap.getKey().getSubjectDN() + " sType=" + sType);
-
- if (sType.equals(_STYPETEMPLATE))
+ //TODO: maybe add "TSA/QTST for qualified timestamps
+ if (sType.equals(_STYPETEMPLATE_CAQC))
return true;
else
return false;