aboutsummaryrefslogtreecommitdiff
path: root/id/ConfigWebTool/src/main
diff options
context:
space:
mode:
authorThomas Lenz <tlenz@iaik.tugraz.at>2014-11-03 11:13:38 +0100
committerThomas Lenz <tlenz@iaik.tugraz.at>2014-11-03 11:13:38 +0100
commita3e59e5011e16271dab6cc8299a1d1241b4a7fb2 (patch)
treeaae2f450b7296a286c09a8c51d423aec4bedd0dd /id/ConfigWebTool/src/main
parent83dc74e60a4d9031285ac27aa0661fe0c26485e0 (diff)
parent1fbff5f5a86733bc6a75c8ae901153baa0963441 (diff)
downloadmoa-id-spss-a3e59e5011e16271dab6cc8299a1d1241b4a7fb2.tar.gz
moa-id-spss-a3e59e5011e16271dab6cc8299a1d1241b4a7fb2.tar.bz2
moa-id-spss-a3e59e5011e16271dab6cc8299a1d1241b4a7fb2.zip
Merge branch 'moa-2.1-Snapshot'MOA-SPSS-2.0.3MOA-ID-2.1.2
Conflicts: .gitignore
Diffstat (limited to 'id/ConfigWebTool/src/main')
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java19
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java2
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java50
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java23
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java136
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java3
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/BasicOAAction.java19
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java31
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java387
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IDPGatewayAction.java56
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java113
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java59
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/utils/UserRequestCleaner.java3
-rw-r--r--id/ConfigWebTool/src/main/resources/applicationResources_de.properties10
-rw-r--r--id/ConfigWebTool/src/main/resources/applicationResources_en.properties8
-rw-r--r--id/ConfigWebTool/src/main/resources/struts.xml21
-rw-r--r--id/ConfigWebTool/src/main/webapp/js/common.js34
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp1
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/interfederation/idplist.jsp6
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/interfederation/pvpgateway.jsp61
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/openadminrequests.jsp4
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/interfederation.jsp10
-rw-r--r--id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvpgateway.jsp18
23 files changed, 796 insertions, 278 deletions
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 5e177655d..975f627d4 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
@@ -26,6 +26,7 @@ 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;
@@ -42,6 +43,22 @@ public class GeneralStorkConfig {
private int qaa;
private static final Logger log = Logger.getLogger(GeneralStorkConfig.class);
+ private MOAIDConfiguration dbconfig = null;
+
+ /**
+ *
+ */
+ public GeneralStorkConfig() {
+ dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
+
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ ConfigurationDBUtils.closeSession();
+ super.finalize();
+ }
+
public void parse(MOAIDConfiguration config) {
log.info("Initializing general Stork config");
@@ -93,7 +110,7 @@ public class GeneralStorkConfig {
if (null == cpepslist)
return null;
- MOAIDConfiguration dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
+ //MOAIDConfiguration dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
try {
List<CPEPS> cpepss = dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS();
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java
index c4a825589..28eba9f34 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java
@@ -24,7 +24,7 @@ package at.gv.egovernment.moa.id.configuration.data;
public class OAListElement {
- public enum ServiceType {OA, VIDP, IDP}
+ public enum ServiceType {OA, VIDP, IDP, GWAY}
private long dataBaseID;
private String oaIdentifier;
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 9431cc1fd..2f9df18aa 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
@@ -45,9 +45,11 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
private static final Logger log = Logger.getLogger(OAMOAIDPInterfederationConfig.class);
private String queryURL;
- private boolean inboundSSO = true;
- private boolean outboundSSO = true;
- private boolean storeSSOSession = true;
+ private Boolean inboundSSO = true;
+ private Boolean outboundSSO = true;
+ private Boolean storeSSOSession = true;
+ private Boolean passiveRequest = true;
+ private Boolean localAuthOnError = true;
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName()
@@ -70,6 +72,8 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
this.inboundSSO = moaIDP.isInboundSSO();
this.outboundSSO = moaIDP.isOutboundSSO();
this.storeSSOSession = moaIDP.isStoreSSOSession();
+ this.localAuthOnError = moaIDP.isPerformLocalAuthenticationOnError();
+ this.passiveRequest = moaIDP.isPerformPassivRequest();
}
return null;
@@ -95,8 +99,10 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
moaIDP.setInboundSSO(inboundSSO);
moaIDP.setOutboundSSO(outboundSSO);
moaIDP.setStoreSSOSession(storeSSOSession);
- }
-
+ moaIDP.setPerformLocalAuthenticationOnError(localAuthOnError);
+ moaIDP.setPerformPassivRequest(passiveRequest);
+
+ }
return null;
}
@@ -143,7 +149,7 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
* @return the inboundSSO
*/
public boolean isInboundSSO() {
- return inboundSSO;
+ return inboundSSO.booleanValue();
}
/**
@@ -157,7 +163,7 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
* @return the outboundSSO
*/
public boolean isOutboundSSO() {
- return outboundSSO;
+ return outboundSSO.booleanValue();
}
/**
@@ -171,7 +177,7 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
* @return the storeSSOSession
*/
public boolean isStoreSSOSession() {
- return storeSSOSession;
+ return storeSSOSession.booleanValue();
}
/**
@@ -180,6 +186,34 @@ public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData {
public void setStoreSSOSession(boolean storeSSOSession) {
this.storeSSOSession = storeSSOSession;
}
+
+ /**
+ * @return the passiveRequest
+ */
+ public boolean isPassiveRequest() {
+ return passiveRequest.booleanValue();
+ }
+
+ /**
+ * @param passiveRequest the passiveRequest to set
+ */
+ public void setPassiveRequest(boolean passiveRequest) {
+ this.passiveRequest = passiveRequest;
+ }
+
+ /**
+ * @return the localAuthOnError
+ */
+ public boolean isLocalAuthOnError() {
+ return localAuthOnError.booleanValue();
+ }
+
+ /**
+ * @param localAuthOnError the localAuthOnError to set
+ */
+ public void setLocalAuthOnError(boolean localAuthOnError) {
+ this.localAuthOnError = localAuthOnError;
+ }
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 45875010b..e0a312c09 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
@@ -30,9 +30,11 @@ 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;
@@ -59,11 +61,16 @@ public class OASTORKConfig implements IOnlineApplicationData{
private List<String> citizenCountries;
private List<String> enabledCitizenCountries;
+ private MOAIDConfiguration dbconfig = null;
+
public OASTORKConfig() {
// fetch available citizen countries
citizenCountries = new ArrayList<String>();
+
+ dbconfig = ConfigurationDBRead.getMOAIDConfiguration();
+
try {
- for(CPEPS current : ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS()) {
+ for(CPEPS current : dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS()) {
citizenCountries.add(current.getCountryCode());
}
@@ -73,6 +80,12 @@ public class OASTORKConfig implements IOnlineApplicationData{
}
+ @Override
+ protected void finalize() throws Throwable {
+ ConfigurationDBUtils.closeSession();
+ super.finalize();
+ }
+
/* (non-Javadoc)
* @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName()
*/
@@ -98,7 +111,7 @@ 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(ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getQualityAuthenticationAssuranceLevel());
+ setQaa(dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getQualityAuthenticationAssuranceLevel());
}
@@ -110,7 +123,7 @@ public class OASTORKConfig implements IOnlineApplicationData{
attributes = new ArrayList<AttributeHelper>();
try {
try {
- for(StorkAttribute current : ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getAttributes()) {
+ for(StorkAttribute current : dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getAttributes()) {
AttributeHelper tmp = null;
for(OAStorkAttribute sepp : config.getOAAttributes())
@@ -220,7 +233,7 @@ public class OASTORKConfig implements IOnlineApplicationData{
return result;
for(AttributeHelper current : getHelperAttributes()) {
- for(StorkAttribute currentAttribute : ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getAttributes())
+ for(StorkAttribute currentAttribute : dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getAttributes())
if(currentAttribute.getName().equals(current.getName())) {
if(current.isUsed() || currentAttribute.isMandatory()) {
OAStorkAttribute tmp = new OAStorkAttribute();
@@ -260,7 +273,7 @@ public class OASTORKConfig implements IOnlineApplicationData{
List<CPEPS> result = new ArrayList<CPEPS>();
try {
- for(CPEPS current : ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS()) {
+ for(CPEPS current : dbconfig.getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS()) {
if(enabledCitizenCountries.contains(current.getCountryCode()))
result.add(current);
}
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
new file mode 100644
index 000000000..23af59d8e
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/PVPGatewayInterfederationConfig.java
@@ -0,0 +1,136 @@
+/*
+ * 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 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.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.helper.LanguageHelper;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+/**
+ * @author tlenz
+ *
+ */
+public class PVPGatewayInterfederationConfig implements IOnlineApplicationData {
+
+ private static final Logger log = Logger.getLogger(PVPGatewayInterfederationConfig.class);
+
+ private String entityID = null;
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName()
+ */
+ @Override
+ public String getName() {
+ return "PVPGatewayInterfederation";
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest)
+ */
+ @Override
+ public List<String> parse(OnlineApplication dbOA,
+ AuthenticatedUser authUser, HttpServletRequest request) {
+
+ InterfederationGatewayType gateway = dbOA.getInterfederationGateway();
+ if (gateway != null) {
+ this.entityID = gateway.getForwardIDPIdentifier();
+
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#store(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest)
+ */
+ @Override
+ public String store(OnlineApplication dbOA, AuthenticatedUser authUser,
+ HttpServletRequest request) {
+
+ if (authUser.isAdmin()) {
+ dbOA.setIsInterfederationGateway(true);
+
+ InterfederationGatewayType gateway = dbOA.getInterfederationGateway();
+ if (gateway == null) {
+ gateway = new InterfederationGatewayType();
+ dbOA.setInterfederationGateway(gateway);
+ }
+
+ gateway.setForwardIDPIdentifier(entityID);
+ }
+
+ dbOA.setType(Constants.MOA_CONFIG_BUSINESSSERVICE);
+ 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 (MiscUtil.isNotEmpty(entityID)) {
+ if (!ValidationHelper.validateURL(entityID)) {
+ log.info("PVP gateway EntityID is not valid");
+ errors.add(LanguageHelper.getErrorString("validation.interfederation.gateway.entityID.valid", request));
+
+ }
+
+ } else
+ errors.add(LanguageHelper.getErrorString("validation.interfederation.gateway.entityID.empty", request));
+
+ return errors;
+ }
+
+ /**
+ * @return the entityID
+ */
+ public String getEntityID() {
+ return entityID;
+ }
+
+ /**
+ * @param entityID the entityID to set
+ */
+ public void setEntityID(String entityID) {
+ this.entityID = entityID;
+ }
+
+
+
+}
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 dc97dd2c8..150483dd8 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
@@ -43,6 +43,9 @@ public class FormDataHelper {
if (dboa.isIsInterfederationIDP()!= null && dboa.isIsInterfederationIDP())
formOAs.add(addOAFormListElement(dboa, ServiceType.IDP));
+ else if (dboa.isIsInterfederationGateway()!= null && dboa.isIsInterfederationGateway())
+ formOAs.add(addOAFormListElement(dboa, ServiceType.GWAY));
+
else if (dboa.getAuthComponentOA().getOASTORK() != null
&& dboa.getAuthComponentOA().getOASTORK().isVidpEnabled() != null
&& dboa.getAuthComponentOA().getOASTORK().isVidpEnabled())
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 9c1cb90e0..5a9787069 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
@@ -142,7 +142,7 @@ public class BasicOAAction extends BasicAction {
session.setAttribute(Constants.SESSION_BKUFORMPREVIEW, null);
}
- protected OnlineApplication postProcessSaveOnlineApplication(OnlineApplication onlineapplication ) throws BasicOAActionException {
+ protected OnlineApplication postProcessSaveOnlineApplication(OnlineApplication onlineapplication, boolean persistOA) throws BasicOAActionException {
if (onlineapplication == null) {
onlineapplication = new OnlineApplication();
onlineapplication.setIsNew(true);
@@ -186,7 +186,7 @@ public class BasicOAAction extends BasicAction {
}
//save OA configuration
- String error = saveOAConfigToDatabase(onlineapplication);
+ String error = saveOAConfigToDatabase(onlineapplication, persistOA);
if (MiscUtil.isNotEmpty(error)) {
log.warn("OA configuration can not be stored!");
addActionError(error);
@@ -395,15 +395,13 @@ public class BasicOAAction extends BasicAction {
}
}
- private String saveOAConfigToDatabase(OnlineApplication dboa) {
+ private String saveOAConfigToDatabase(OnlineApplication dboa, boolean persistOA) {
for (IOnlineApplicationData form : formList.values())
form.store(dboa, authUser, request);
try {
- if (dboa.isIsNew()) {
- ConfigurationDBUtils.save(dboa);
-
+ if (dboa.isIsNew()) {
if (!authUser.isAdmin()) {
UserDatabase user = ConfigurationDBRead.getUserWithID(authUser.getUserID());
@@ -412,9 +410,16 @@ public class BasicOAAction extends BasicAction {
useroas.add(dboa);
ConfigurationDBUtils.saveOrUpdate(user);
+
+ } else {
+ if (persistOA)
+ ConfigurationDBUtils.save(dboa);
+
}
+
} else
- ConfigurationDBUtils.saveOrUpdate(dboa);
+ if (persistOA)
+ ConfigurationDBUtils.saveOrUpdate(dboa);
} catch (MOADatabaseException e) {
log.warn("Online-Application can not be stored.", e);
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 7f609d95e..31c29aef0 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
@@ -132,7 +132,7 @@ public class EditGeneralConfigAction extends BasicAction {
public String saveConfig() {
try {
populateBasicInformations();
-
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
@@ -210,6 +210,8 @@ public class EditGeneralConfigAction extends BasicAction {
public String back() {
try {
populateBasicInformations();
+ ConfigurationDBUtils.closeSession();
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
@@ -222,15 +224,15 @@ public class EditGeneralConfigAction extends BasicAction {
private String saveFormToDatabase() {
log.debug("Saving form to database");
- log.error("Saving form to db");
- log.info("SV frm db");
+// log.error("Saving form to db");
+// log.info("SV frm db");
- for (Object obj : Collections.list(request.getParameterNames())) {
- log.error(" PARAM: " + obj.toString());
- }
- for (Object obj : Collections.list(request.getSession().getAttributeNames())) {
- log.error(" SES PARAM: " + obj.toString());
- }
+// for (Object obj : Collections.list(request.getParameterNames())) {
+// log.error(" PARAM: " + obj.toString());
+// }
+// for (Object obj : Collections.list(request.getSession().getAttributeNames())) {
+// log.error(" SES PARAM: " + obj.toString());
+// }
try {
log.error(" ASSERTION " + moaconfig.getTimeoutAssertion());
@@ -523,8 +525,11 @@ public class EditGeneralConfigAction extends BasicAction {
ForeignIdentities foreign = dbauth.getForeignIdentities();
if (foreign != null) {
STORK stork = foreign.getSTORK();
- if (stork == null)
+ if (stork == null) {
stork = new STORK();
+ foreign.setSTORK(stork);
+
+ }
try {
log.error("QAAAA " + storkconfig.getDefaultQaa());
@@ -651,9 +656,11 @@ public class EditGeneralConfigAction extends BasicAction {
} catch (MOADatabaseException e) {
log.warn("MOAID Configuration can not be stored in Database", e);
return LanguageHelper.getErrorString("error.db.oa.store", request);
+
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
-
- ConfigurationDBUtils.closeSession();
return null;
}
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 3d96cc1e5..1da948eec 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
@@ -108,9 +108,7 @@ public class EditOAAction extends BasicOAAction {
}
setNewOA(false);
-
- ConfigurationDBUtils.closeSession();
-
+
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
session.setAttribute(Constants.SESSION_OAID, oaid);
@@ -123,6 +121,10 @@ public class EditOAAction extends BasicOAAction {
} catch (BasicOAActionException e) {
addActionError(e.getStrutsError());
return e.getStrutsReturnValue();
+
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
}
@@ -149,32 +151,34 @@ public class EditOAAction extends BasicOAAction {
}
getStorkOA().setHelperAttributes(attributes);
-
+
+ UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser
+ .getUserID());
+
+ if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null
+ && !userdb.isIsMailAddressVerified()) {
+ log.info("Online-Applikation managemant disabled. Mail address is not verified.");
+ addActionError(LanguageHelper.getErrorString(
+ "error.editoa.mailverification", request));
+ return Constants.STRUTS_SUCCESS;
+ }
+
+ session.setAttribute(
+ Constants.SESSION_OAUTH20SECRET,
+ ((OAOAuth20Config) formList.get(new OAOAuth20Config().getName()))
+ .getClientSecret());
+ session.setAttribute(Constants.SESSION_BKUFORMPREVIEW, getFormOA().getFormMap());
+ nextPage = Constants.STRUTS_RETURNAREA_VALUES.main.name();
+
+ return Constants.STRUTS_OA_EDIT;
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
-
- UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser
- .getUserID());
-
- if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null
- && !userdb.isIsMailAddressVerified()) {
- log.info("Online-Applikation managemant disabled. Mail address is not verified.");
- addActionError(LanguageHelper.getErrorString(
- "error.editoa.mailverification", request));
- return Constants.STRUTS_SUCCESS;
- }
-
- ConfigurationDBUtils.closeSession();
- session.setAttribute(
- Constants.SESSION_OAUTH20SECRET,
- ((OAOAuth20Config) formList.get(new OAOAuth20Config().getName()))
- .getClientSecret());
- session.setAttribute(Constants.SESSION_BKUFORMPREVIEW, getFormOA().getFormMap());
- nextPage = Constants.STRUTS_RETURNAREA_VALUES.main.name();
-
- return Constants.STRUTS_OA_EDIT;
}
public String saveOA() {
@@ -183,9 +187,92 @@ public class EditOAAction extends BasicOAAction {
try {
populateBasicInformations();
-
onlineapplication = preProcessSaveOnlineApplication();
+ List<String> errors = new ArrayList<String>();
+
+ // validate forms
+ for (IOnlineApplicationData form : formList.values())
+ errors.addAll(form.validate(getGeneralOA(), authUser, request));
+
+ // Do not allow SSO in combination with special BKUSelection features
+ if (getSsoOA().isUseSSO()
+ && (getFormOA().isOnlyMandateAllowed() || !getFormOA()
+ .isShowMandateLoginButton())) {
+ log.warn("Special BKUSelection features can not be used in combination with SSO");
+ errors.add(LanguageHelper.getErrorString(
+ "validation.general.bkuselection.specialfeatures.valid",
+ request));
+ }
+
+ if (errors.size() > 0) {
+ log.info("OAConfiguration with ID "
+ + getGeneralOA().getIdentifier() + " has some errors.");
+ for (String el : errors)
+ addActionError(el);
+
+ formID = Random.nextRandom();
+ session.setAttribute(Constants.SESSION_FORMID, formID);
+ return Constants.STRUTS_ERROR_VALIDATION;
+
+ } else {
+ try {
+ onlineapplication = postProcessSaveOnlineApplication(onlineapplication, true);
+
+ } catch (BasicOAActionException e) {
+ addActionError(e.getStrutsError());
+ return e.getStrutsReturnValue();
+ }
+
+ }
+
+ Object nextPageAttr = session
+ .getAttribute(Constants.SESSION_RETURNAREA);
+ if (nextPageAttr != null && nextPageAttr instanceof String) {
+ nextPage = (String) nextPageAttr;
+ session.setAttribute(Constants.SESSION_RETURNAREA, null);
+
+ } else {
+ nextPage = Constants.STRUTS_RETURNAREA_VALUES.main.name();
+ }
+
+ if (onlineapplication.isIsAdminRequired()) {
+ int numoas = 0;
+ int numusers = 0;
+
+ List<OnlineApplication> openOAs = ConfigurationDBRead
+ .getAllNewOnlineApplications();
+ if (openOAs != null)
+ numoas = openOAs.size();
+
+ List<UserDatabase> openUsers = ConfigurationDBRead.getAllNewUsers();
+ if (openUsers != null)
+ numusers = openUsers.size();
+ try {
+
+ addActionMessage(LanguageHelper.getGUIString(
+ "webpages.oaconfig.success.admin", getGeneralOA()
+ .getIdentifier(), request));
+
+ if (numusers > 0 || numoas > 0)
+ MailHelper.sendAdminMail(numoas, numusers);
+
+ } catch (ConfigurationException e) {
+ log.warn("Sending Mail to Admin failed.", e);
+ }
+
+ } else
+ addActionMessage(LanguageHelper.getGUIString(
+ "webpages.oaconfig.success",
+ getGeneralOA().getIdentifier(), request));
+
+ // remove session attributes
+ session.setAttribute(Constants.SESSION_OAID, null);
+ session.removeAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE);
+ session.removeAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE);
+
+ return Constants.STRUTS_SUCCESS;
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
@@ -193,122 +280,41 @@ public class EditOAAction extends BasicOAAction {
addActionError(e.getStrutsError());
return e.getStrutsReturnValue();
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
-
- List<String> errors = new ArrayList<String>();
-
- // validate forms
- for (IOnlineApplicationData form : formList.values())
- errors.addAll(form.validate(getGeneralOA(), authUser, request));
-
- // Do not allow SSO in combination with special BKUSelection features
- if (getSsoOA().isUseSSO()
- && (getFormOA().isOnlyMandateAllowed() || !getFormOA()
- .isShowMandateLoginButton())) {
- log.warn("Special BKUSelection features can not be used in combination with SSO");
- errors.add(LanguageHelper.getErrorString(
- "validation.general.bkuselection.specialfeatures.valid",
- request));
- }
-
- if (errors.size() > 0) {
- log.info("OAConfiguration with ID "
- + getGeneralOA().getIdentifier() + " has some errors.");
- for (String el : errors)
- addActionError(el);
-
- formID = Random.nextRandom();
- session.setAttribute(Constants.SESSION_FORMID, formID);
- return Constants.STRUTS_ERROR_VALIDATION;
-
- } else {
- try {
- onlineapplication = postProcessSaveOnlineApplication(onlineapplication);
-
- } catch (BasicOAActionException e) {
- addActionError(e.getStrutsError());
- return e.getStrutsReturnValue();
- }
-
- }
-
- Object nextPageAttr = session
- .getAttribute(Constants.SESSION_RETURNAREA);
- if (nextPageAttr != null && nextPageAttr instanceof String) {
- nextPage = (String) nextPageAttr;
- session.setAttribute(Constants.SESSION_RETURNAREA, null);
-
- } else {
- nextPage = Constants.STRUTS_RETURNAREA_VALUES.main.name();
- }
-
- if (onlineapplication.isIsAdminRequired()) {
- int numoas = 0;
- int numusers = 0;
-
- List<OnlineApplication> openOAs = ConfigurationDBRead
- .getAllNewOnlineApplications();
- if (openOAs != null)
- numoas = openOAs.size();
-
- List<UserDatabase> openUsers = ConfigurationDBRead.getAllNewUsers();
- if (openUsers != null)
- numusers = openUsers.size();
- try {
-
- addActionMessage(LanguageHelper.getGUIString(
- "webpages.oaconfig.success.admin", getGeneralOA()
- .getIdentifier(), request));
-
- if (numusers > 0 || numoas > 0)
- MailHelper.sendAdminMail(numoas, numusers);
-
- } catch (ConfigurationException e) {
- log.warn("Sending Mail to Admin failed.", e);
- }
-
- } else
- addActionMessage(LanguageHelper.getGUIString(
- "webpages.oaconfig.success",
- getGeneralOA().getIdentifier(), request));
-
- // remove session attributes
- session.setAttribute(Constants.SESSION_OAID, null);
- session.removeAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE);
- session.removeAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE);
-
- ConfigurationDBUtils.closeSession();
- return Constants.STRUTS_SUCCESS;
}
public String cancleAndBackOA() {
try {
populateBasicInformations();
+ Object nextPageAttr = session
+ .getAttribute(Constants.SESSION_RETURNAREA);
+ if (nextPageAttr != null && nextPageAttr instanceof String) {
+ nextPage = (String) nextPageAttr;
+ session.setAttribute(Constants.SESSION_RETURNAREA, null);
+
+ } else {
+ nextPage = Constants.STRUTS_RETURNAREA_VALUES.main.name();
+ }
+
+ session.setAttribute(Constants.SESSION_OAID, null);
+
+ addActionMessage(LanguageHelper.getGUIString(
+ "webpages.oaconfig.cancle", getGeneralOA().getIdentifier(),
+ request));
+
+ return Constants.STRUTS_SUCCESS;
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
-
- Object nextPageAttr = session
- .getAttribute(Constants.SESSION_RETURNAREA);
- if (nextPageAttr != null && nextPageAttr instanceof String) {
- nextPage = (String) nextPageAttr;
- session.setAttribute(Constants.SESSION_RETURNAREA, null);
-
- } else {
- nextPage = Constants.STRUTS_RETURNAREA_VALUES.main.name();
- }
-
- session.setAttribute(Constants.SESSION_OAID, null);
-
- addActionMessage(LanguageHelper.getGUIString(
- "webpages.oaconfig.cancle", getGeneralOA().getIdentifier(),
- request));
-
- ConfigurationDBUtils.closeSession();
-
- return Constants.STRUTS_SUCCESS;
}
public String deleteOA() {
@@ -326,7 +332,66 @@ public class EditOAAction extends BasicOAAction {
}
oaidentifier = preProcessDeleteOnlineApplication();
-
+ OnlineApplication onlineapplication = ConfigurationDBRead
+ .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)) {
+
+ if (!authUser.isAdmin()) {
+ UserDatabase user = ConfigurationDBRead.getUserWithID(authUser
+ .getUserID());
+ List<OnlineApplication> useroas = user.getOnlineApplication();
+
+ for (OnlineApplicationType oa : useroas) {
+ if (oa.getHjid().equals(onlineapplication.getHjid())) {
+ useroas.remove(oa);
+ }
+ }
+
+ try {
+ ConfigurationDBUtils.saveOrUpdate(user);
+
+ } catch (MOADatabaseException e) {
+ log.warn("User information can not be updated in database",
+ e);
+ addActionError(LanguageHelper.getGUIString(
+ "error.db.oa.store", request));
+ return Constants.STRUTS_ERROR;
+ }
+ }
+
+ 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;
+ }
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
@@ -334,63 +399,9 @@ public class EditOAAction extends BasicOAAction {
addActionError(e.getStrutsError());
return e.getStrutsReturnValue();
- }
-
- OnlineApplication onlineapplication = ConfigurationDBRead
- .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 (Throwable e) {
- log.info("Found no MetadataURL in OA-Databaseconfig!", e);
- }
-
- if (ConfigurationDBUtils.delete(onlineapplication)) {
-
- if (!authUser.isAdmin()) {
- UserDatabase user = ConfigurationDBRead.getUserWithID(authUser
- .getUserID());
- List<OnlineApplication> useroas = user.getOnlineApplication();
-
- for (OnlineApplicationType oa : useroas) {
- if (oa.getHjid().equals(onlineapplication.getHjid())) {
- useroas.remove(oa);
- }
- }
-
- try {
- ConfigurationDBUtils.saveOrUpdate(user);
-
- } catch (MOADatabaseException e) {
- log.warn("User information can not be updated in database",
- e);
- addActionError(LanguageHelper.getGUIString(
- "error.db.oa.store", request));
- return Constants.STRUTS_ERROR;
- }
- }
-
+ } finally {
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;
+
}
}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IDPGatewayAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IDPGatewayAction.java
new file mode 100644
index 000000000..e238c6d37
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IDPGatewayAction.java
@@ -0,0 +1,56 @@
+/*
+ * 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.action;
+
+import java.util.LinkedHashMap;
+
+import at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData;
+import at.gv.egovernment.moa.id.configuration.data.oa.OAMOAIDPInterfederationConfig;
+import at.gv.egovernment.moa.id.configuration.data.oa.OAPVP2Config;
+import at.gv.egovernment.moa.id.configuration.data.oa.PVPGatewayInterfederationConfig;
+
+/**
+ * @author tlenz
+ *
+ */
+public class IDPGatewayAction extends InterfederationIDPAction {
+
+ private static final long serialVersionUID = -2047128481980413334L;
+
+ public IDPGatewayAction() {
+ super();
+ formList.putAll(buildIDPGatewayFormList());
+ }
+
+ public static LinkedHashMap<String, IOnlineApplicationData> buildIDPGatewayFormList() {
+
+ LinkedHashMap<String, IOnlineApplicationData> forms =
+ new LinkedHashMap<String, IOnlineApplicationData>();
+
+ PVPGatewayInterfederationConfig pvpGatewayconfig = new PVPGatewayInterfederationConfig();
+ forms.put(pvpGatewayconfig.getName(), pvpGatewayconfig);
+
+ return forms;
+ }
+
+}
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 813aa1960..eead280be 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
@@ -46,6 +46,7 @@ import at.gv.egovernment.moa.id.configuration.data.oa.OAMOAIDPInterfederationCon
import at.gv.egovernment.moa.id.configuration.data.oa.OAOAuth20Config;
import at.gv.egovernment.moa.id.configuration.data.oa.OASTORKConfig;
import at.gv.egovernment.moa.id.configuration.data.oa.OATargetConfiguration;
+import at.gv.egovernment.moa.id.configuration.data.oa.PVPGatewayInterfederationConfig;
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.helper.FormDataHelper;
@@ -63,6 +64,7 @@ public class InterfederationIDPAction extends BasicOAAction {
public static final String STRUTS_IDP_VIDP = "-VIDP";
public static final String STRUTS_IDP_MOA = "-MOAIDP";
+ public static final String STRUTS_IDP_GATEWAY = "-IDPGATEWAY";
private List<OAListElement> formOAs;
@@ -89,9 +91,7 @@ public class InterfederationIDPAction extends BasicOAAction {
session.setAttribute(Constants.SESSION_RETURNAREA,
Constants.STRUTS_RETURNAREA_VALUES.main.name());
-
- ConfigurationDBUtils.closeSession();
-
+
return Constants.STRUTS_SUCCESS;
} else {
@@ -103,6 +103,9 @@ public class InterfederationIDPAction extends BasicOAAction {
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
}
@@ -122,6 +125,9 @@ public class InterfederationIDPAction extends BasicOAAction {
if (STRUTS_IDP_MOA.equals(interfederationType)) {
formList.putAll(MOAIDPAction.buildMOAIDPFormList());
+
+ } else if (STRUTS_IDP_GATEWAY.equals(interfederationType)) {
+ formList.putAll(IDPGatewayAction.buildIDPGatewayFormList());
} else if (STRUTS_IDP_VIDP.equals(interfederationType)) {
formList.putAll(VIDPAction.buildVIDPFormList());
@@ -140,6 +146,9 @@ public class InterfederationIDPAction extends BasicOAAction {
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
return Constants.STRUTS_OA_EDIT + interfederationType;
@@ -174,6 +183,10 @@ public class InterfederationIDPAction extends BasicOAAction {
getStorkOA().getAttributeProviderPlugins().add(new AttributeProviderPlugin());
interfederationType = STRUTS_IDP_VIDP;
+ } else if (oa.isIsInterfederationGateway() != null && oa.isIsInterfederationGateway()) {
+ formList.putAll(IDPGatewayAction.buildIDPGatewayFormList());
+ interfederationType = STRUTS_IDP_GATEWAY;
+
} else {
log.warn("Requested application is not an interfederation IDP.");
return Constants.STRUTS_NOTALLOWED;
@@ -190,7 +203,10 @@ public class InterfederationIDPAction extends BasicOAAction {
addActionError(e.getStrutsError());
return e.getStrutsReturnValue();
- }
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
+ }
}
public String saveIDP() {
@@ -210,6 +226,7 @@ public class InterfederationIDPAction extends BasicOAAction {
if ( onlineapplication != null &&
!((onlineapplication.isIsInterfederationIDP() != null && onlineapplication.isIsInterfederationIDP()) ||
+ (onlineapplication.isIsInterfederationGateway() != null && onlineapplication.isIsInterfederationGateway()) ||
(onlineapplication.getAuthComponentOA().getOASTORK() != null
&& onlineapplication.getAuthComponentOA().getOASTORK().isVidpEnabled() != null
&& onlineapplication.getAuthComponentOA().getOASTORK().isVidpEnabled()))) {
@@ -246,9 +263,10 @@ public class InterfederationIDPAction extends BasicOAAction {
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
return Constants.STRUTS_ERROR_VALIDATION;
-
+
} else {
- onlineapplication = postProcessSaveOnlineApplication(onlineapplication);
+ onlineapplication = postProcessSaveOnlineApplication(onlineapplication,
+ !(this instanceof MOAIDPAction));
//set default Target interfederated nameID caluclation
if (getPvp2OA() != null) {
@@ -287,7 +305,10 @@ public class InterfederationIDPAction extends BasicOAAction {
addActionError(e.getStrutsError());
return e.getStrutsReturnValue();
- }
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
+ }
}
public String cancleAndBackIDP() {
@@ -300,16 +321,19 @@ public class InterfederationIDPAction extends BasicOAAction {
return Constants.STRUTS_NOTALLOWED;
}
+ session.setAttribute(Constants.SESSION_OAID, null);
+ addActionMessage(LanguageHelper.getGUIString("webpages.idp.cancle", getGeneralOA().getIdentifier(), request));
+ ConfigurationDBUtils.closeSession();
+
+ return Constants.STRUTS_SUCCESS;
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
-
- session.setAttribute(Constants.SESSION_OAID, null);
- addActionMessage(LanguageHelper.getGUIString("webpages.idp.cancle", getGeneralOA().getIdentifier(), request));
- ConfigurationDBUtils.closeSession();
-
- return Constants.STRUTS_SUCCESS;
}
public String deleteIDP() {
@@ -325,7 +349,30 @@ public class InterfederationIDPAction extends BasicOAAction {
oaidentifier = preProcessDeleteOnlineApplication();
-
+ session.setAttribute(Constants.SESSION_OAID, null);
+ OnlineApplication onlineapplication = ConfigurationDBRead.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);
+
+ }
+ } catch (Throwable e) {
+ log.info("Found no MetadataURL in OA-Databaseconfig!", e);
+ }
+
+ if (ConfigurationDBUtils.delete(onlineapplication)) {
+ addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.delete.message", oaidentifier, request));
+ return Constants.STRUTS_SUCCESS;
+
+ } else {
+ addActionError(LanguageHelper.getGUIString("webpages.oaconfig.delete.error", oaidentifier, request));
+ return Constants.STRUTS_SUCCESS;
+ }
+
} catch (BasicActionException e) {
return Constants.STRUTS_ERROR;
@@ -333,34 +380,10 @@ public class InterfederationIDPAction extends BasicOAAction {
addActionError(e.getStrutsError());
return e.getStrutsReturnValue();
+ } finally {
+ ConfigurationDBUtils.closeSession();
+
}
-
- session.setAttribute(Constants.SESSION_OAID, null);
- OnlineApplication onlineapplication = ConfigurationDBRead.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);
-
- }
- } catch (Throwable e) {
- log.info("Found no MetadataURL in OA-Databaseconfig!", e);
- }
-
- if (ConfigurationDBUtils.delete(onlineapplication)) {
-
- 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;
- }
}
@@ -403,6 +426,14 @@ public class InterfederationIDPAction extends BasicOAAction {
formList.put(pvp2oa.getName(), pvp2oa);
}
+ public PVPGatewayInterfederationConfig getPVPGateway() {
+ return (PVPGatewayInterfederationConfig) formList.get(new PVPGatewayInterfederationConfig().getName());
+ }
+
+ public void setPVPGateway(PVPGatewayInterfederationConfig val) {
+ formList.put(val.getName(), val);
+ }
+
/**
* @return the formOA
*/
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
new file mode 100644
index 000000000..084d054f7
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/interceptor/HibernateSessionInterceptor.java
@@ -0,0 +1,59 @@
+/*
+ * 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();
+
+ }
+
+ }
+
+}
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 a75f8307d..27e29e292 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
@@ -68,7 +68,8 @@ public class UserRequestCleaner implements Runnable {
//clean up active user storage
AuthenticationManager.getInstance().removeAllUsersAfterTimeOut();
-
+ ConfigurationDBUtils.closeSession();
+
Thread.sleep(SESSION_CLEANUP_INTERVAL * 1000);
} catch (ConfigurationException e) {
diff --git a/id/ConfigWebTool/src/main/resources/applicationResources_de.properties b/id/ConfigWebTool/src/main/resources/applicationResources_de.properties
index 39bfcd36b..072f44981 100644
--- a/id/ConfigWebTool/src/main/resources/applicationResources_de.properties
+++ b/id/ConfigWebTool/src/main/resources/applicationResources_de.properties
@@ -108,9 +108,13 @@ 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
@@ -492,9 +496,11 @@ validation.pvp2.metadata.validation=Die Metadaten konnten von der angegebenen UR
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 zum AttributQuery Service wei\u00DFt kein g\u00FCltiges Format auf.
-validation.interfederation.moaidp.queryurl.empty=Die URL zum zum AttributQuery Service muss f\u00FCr eingehende Single Sign-On Interfederation konfiguriert werden.
+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.
diff --git a/id/ConfigWebTool/src/main/resources/applicationResources_en.properties b/id/ConfigWebTool/src/main/resources/applicationResources_en.properties
index 07c8d708d..b717377e0 100644
--- a/id/ConfigWebTool/src/main/resources/applicationResources_en.properties
+++ b/id/ConfigWebTool/src/main/resources/applicationResources_en.properties
@@ -108,9 +108,13 @@ 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
@@ -490,8 +494,10 @@ 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 for inbound Single Sign-On interfederation.
+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.
diff --git a/id/ConfigWebTool/src/main/resources/struts.xml b/id/ConfigWebTool/src/main/resources/struts.xml
index 68cd85b2f..39c38ae43 100644
--- a/id/ConfigWebTool/src/main/resources/struts.xml
+++ b/id/ConfigWebTool/src/main/resources/struts.xml
@@ -16,7 +16,10 @@
<interceptors>
+ <interceptor name="HibernateSessionInterceptor" class="at.gv.egovernment.moa.id.configuration.struts.interceptor.HibernateSessionInterceptor"/>
+
<interceptor-stack name="OwnStack">
+ <interceptor-ref name="HibernateSessionInterceptor" />
<interceptor-ref name="params">
<param
name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
@@ -85,7 +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-stack name="OwnStack">
+ <interceptor-ref name="HibernateSessionInterceptor" />
<interceptor-ref name="params">
<param
name="excludeParams">^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^method:.*</param>
@@ -149,7 +155,7 @@
<action name="newOA" method="newOA" class="at.gv.egovernment.moa.id.configuration.struts.action.EditOAAction">
<result name="editOA">/jsp/editOAGeneral.jsp</result>
- <result name="success" type="chain">main</result>
+ <result name="success">/jsp/mainpage.jsp</result>
<result name="error">/error.jsp</result>
<result name="reauthentication" type="redirectAction">
<param name="actionName">logout</param>
@@ -379,6 +385,7 @@
<action name="loadIDP" method="loadIDPInformation" class="at.gv.egovernment.moa.id.configuration.struts.action.InterfederationIDPAction">
<result name="success-VIDP">/jsp/interfederation/vidp.jsp</result>
<result name="success-MOAIDP">/jsp/interfederation/moa_idp.jsp</result>
+ <result name="success-IDPGATEWAY">/jsp/interfederation/pvpgateway.jsp</result>
<result name="notallowed" type="chain">main</result>
<result name="error">/error.jsp</result>
<result name="reauthentication" type="redirectAction">
@@ -391,6 +398,7 @@
<action name="newIDP" method="newIDP" class="at.gv.egovernment.moa.id.configuration.struts.action.InterfederationIDPAction">
<result name="editOA-VIDP">/jsp/interfederation/vidp.jsp</result>
<result name="editOA-MOAIDP">/jsp/interfederation/moa_idp.jsp</result>
+ <result name="editOA-IDPGATEWAY">/jsp/interfederation/pvpgateway.jsp</result>
<result name="success" type="chain">main</result>
<result name="error">/error.jsp</result>
<result name="reauthentication" type="redirectAction">
@@ -412,6 +420,17 @@
<interceptor-ref name="OwnStack"/>
</action>
+ <action name="saveIDPGateway" method="saveIDP" class="at.gv.egovernment.moa.id.configuration.struts.action.IDPGatewayAction">
+ <result name="success" type="chain">main</result>
+ <result name="error_validation">/jsp/interfederation/pvpgateway.jsp</result>
+ <result name="error">/error.jsp</result>
+ <result name="reauthentication" type="redirectAction">
+ <param name="actionName">logout</param>
+ <param name="namespace">/</param>
+ </result>
+ <interceptor-ref name="OwnStack"/>
+ </action>
+
<action name="saveVIDP" method="saveIDP" class="at.gv.egovernment.moa.id.configuration.struts.action.VIDPAction">
<result name="success" type="chain">main</result>
<result name="error_validation">/jsp/interfederation/vidp.jsp</result>
diff --git a/id/ConfigWebTool/src/main/webapp/js/common.js b/id/ConfigWebTool/src/main/webapp/js/common.js
index f7ef2c415..9f19e88a2 100644
--- a/id/ConfigWebTool/src/main/webapp/js/common.js
+++ b/id/ConfigWebTool/src/main/webapp/js/common.js
@@ -223,18 +223,36 @@ function oaOnLoad() {
function newPeps() {
var target = $(document.getElementById("stork_pepslist").getElementsByTagName("tr")).last()[0];
var clone = target.cloneNode(true);
+ var lastindex;
try {
- var lastindex = parseInt(clone.innerHTML.match(/name="storkconfig.cpepslist\[(\d)/)[1]);
+ lastindex = parseInt(clone.innerHTML.match(/name="storkconfig.cpepslist\[(\d*)\]/)[1]);
} catch (err) {
-
- var lastindex = 1;
+ lastindex = 1;
}
var nextindex = lastindex + 1;
-
- clone.innerHTML = clone.innerHTML.replace(/[A-Z]{2}</, '<');
- clone.innerHTML = clone.innerHTML.replace(/<input.*type="hidden".*>/, '<div id="wwgrp_loadGeneralConfig_storkconfig_cpepslist_0__countryCode" class="wwgrp"> <div id="wwctrl_loadGeneralConfig_storkconfig_cpepslist_0__countryCode" class="wwctrl"> <input id="loadGeneralConfig_storkconfig_cpepslist_0__countryCode" class="textfield_short" type="text" value="IT" name="storkconfig.cpepslist[0].countryCode"> </div> </div>');
- clone.innerHTML = clone.innerHTML.replace(/name="storkconfig.cpepslist\[\d/g, 'name="storkconfig.cpepslist[' + nextindex);
- clone.innerHTML = clone.innerHTML.replace(/(.*" value=").*?(".*)/g, '$1$2');
+ clone.innerHTML = '<tr>\
+ <td>\
+ <div id="wwgrp_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__countryCode" class="wwgrp">\
+ <div id="wwctrl_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__countryCode" class="wwctrl">\
+ <input id="loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__countryCode" class="textfield_short" type="text" value="" name="storkconfig.cpepslist['+nextindex+'].countryCode"></div>\
+ </div>\
+ </td>\
+ <td>\
+ <div id="wwgrp_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__URL" class="wwgrp">\
+ <div id="wwctrl_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__URL" class="wwctrl">\
+ <input type="text" name="storkconfig.cpepslist['+nextindex+'].URL" value="" id="loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__URL" class="textfield_long"></div>\
+ </div>\
+ </td>\
+ <td>\
+ <div id="wwgrp_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__supportsXMLSignature" class="wwgrp">\
+ <div id="wwctrl_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__supportsXMLSignature" class="wwctrl">\
+ <input type="checkbox" name="storkconfig.cpepslist['+nextindex+'].supportsXMLSignature" value="true" checked="checked" id="loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__supportsXMLSignature">\
+ <input type="hidden" id="__checkbox_loadGeneralConfig_storkconfig_cpepslist_'+nextindex+'__supportsXMLSignature" name="__checkbox_storkconfig.cpepslist['+nextindex+'].supportsXMLSignature" value=""></div>\
+ </div>\
+ </td>\
+ <td>\
+ <input type="button" value="löschen" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);"></td>\
+ </tr>';
target.parentNode.appendChild(clone);
}
function newStorkAttribute() {
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp
index bf5625419..1aeda519f 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp
@@ -260,6 +260,7 @@
<s:if test="%{storkconfig.cpepslist == null || storkconfig.cpepslist.isEmpty}">
<tr><td><s:textfield name="storkconfig.cpepslist[0].countryCode" value="CC" cssClass="textfield_short"/></td>
<td><s:textfield name="storkconfig.cpepslist[0].URL" value="http://" cssClass="textfield_long"/></td>
+ <td><s:checkbox name="storkconfig.cpepslist[0].supportsXMLSignature" value="true" /></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:if>
</table>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/interfederation/idplist.jsp b/id/ConfigWebTool/src/main/webapp/jsp/interfederation/idplist.jsp
index 3e7404dfc..ef666b357 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/interfederation/idplist.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/interfederation/idplist.jsp
@@ -46,7 +46,11 @@
<s:form action="newIDP" namespace="/secure" method="POST" >
<s:hidden name="interfederationType" value="-VIDP"></s:hidden>
<s:submit key="webpages.interfederation.new.vidp"/>
- </s:form>
+ </s:form>
+ <s:form action="newIDP" namespace="/secure" method="POST" >
+ <s:hidden name="interfederationType" value="-IDPGATEWAY"></s:hidden>
+ <s:submit key="webpages.interfederation.new.gateway"/>
+ </s:form>
</div>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/interfederation/pvpgateway.jsp b/id/ConfigWebTool/src/main/webapp/jsp/interfederation/pvpgateway.jsp
new file mode 100644
index 000000000..ee86c4b91
--- /dev/null
+++ b/id/ConfigWebTool/src/main/webapp/jsp/interfederation/pvpgateway.jsp
@@ -0,0 +1,61 @@
+<%@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" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <link rel="stylesheet" type="text/css" href="../css/index.css">
+ <title><%=LanguageHelper.getGUIString("title", request) %></title>
+ <script type="text/javascript" src="../js/common.js"></script>
+ <script src="../js/jquery.js"></script>
+ </head>
+
+ <body>
+
+ <jsp:include page="../snippets/header_userinfos.jsp"></jsp:include>
+
+ <jsp:include page="../snippets/main_menu.jsp"></jsp:include>
+
+ <div id="information_area">
+ <s:if test="hasActionErrors()">
+ <div id="error_area">
+ <label><%=LanguageHelper.getGUIString("error.title", request) %></label>
+ <s:actionerror/>
+ </div>
+ </s:if>
+
+ <s:if test="authUser.isAdmin()">
+ <div id="list_area">
+ <h2><%=LanguageHelper.getGUIString("webpages.interfederation.header", request) %></h2>
+
+ <s:form namespace="/secure" method="POST" enctype="multipart/form-data">
+
+ <s:include value="../snippets/OA/generalInformation.jsp"></s:include>
+
+ <s:include value="../snippets/OA/pvpgateway.jsp"></s:include>
+
+ <s:hidden name="formID" value="%{formID}"></s:hidden>
+ <s:hidden name="interfederationType" value="%{interfederationType}"></s:hidden>
+
+ <div id="button_area">
+ <s:submit key="webpages.edit.back" action="cancleandbackIDP"/>
+ <s:submit key="webpages.edit.save" action="saveIDPGateway"/>
+ <s:if test="!isNewOA()">
+ <s:submit key="webpages.edit.delete" action="deleteIDP"/>
+ </s:if>
+ </div>
+
+ </s:form>
+
+ </div>
+ </s:if>
+
+ </div>
+
+ <jsp:include page="../snippets/footer.jsp"></jsp:include>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/openadminrequests.jsp b/id/ConfigWebTool/src/main/webapp/jsp/openadminrequests.jsp
index 954bf9b8b..0cd861884 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/openadminrequests.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/openadminrequests.jsp
@@ -38,7 +38,9 @@
<div class="oa_config_block">
<h3><%=LanguageHelper.getGUIString("webpages.openadminrequests.oas.header", request) %></h3>
- <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>
</s:if>
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/interfederation.jsp b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/interfederation.jsp
index 97d21bcb4..b104e0fa7 100644
--- a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/interfederation.jsp
+++ b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/interfederation.jsp
@@ -20,6 +20,16 @@
labelposition="left"
cssClass="checkbox"
name="moaIDP.storeSSOSession"></s:checkbox>
+
+ <s:checkbox key="webpages.inderfederation.moaid.sendPassivRequest"
+ labelposition="left"
+ cssClass="checkbox"
+ name="moaIDP.passiveRequest"></s:checkbox>
+
+ <s:checkbox key="webpages.inderfederation.moaid.perfomLocalAuthOnError"
+ labelposition="left"
+ cssClass="checkbox"
+ name="moaIDP.localAuthOnError"></s:checkbox>
<s:textfield name="moaIDP.queryURL"
value="%{moaIDP.queryURL}"
diff --git a/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvpgateway.jsp b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvpgateway.jsp
new file mode 100644
index 000000000..13fc77081
--- /dev/null
+++ b/id/ConfigWebTool/src/main/webapp/jsp/snippets/OA/pvpgateway.jsp
@@ -0,0 +1,18 @@
+<%@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 id="oa_pvp2_area" class="oa_protocol_area">
+ <h4><%=LanguageHelper.getGUIString("webpages.inderfederation.moaid.header", request) %></h4>
+
+ <s:textfield name="pVPGateway.entityID"
+ value="%{pVPGateway.entityID}"
+ labelposition="left"
+ key="webpages.inderfederation.gateway.entityID"
+ cssClass="textfield_long">
+ </s:textfield>
+
+ </div>
+
+</html> \ No newline at end of file