diff options
Diffstat (limited to 'id')
18 files changed, 1804 insertions, 1259 deletions
| 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 687925c18..3539b4589 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 @@ -22,20 +22,40 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.configuration.data; +import java.io.File; +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 javax.servlet.http.HttpServletRequest; +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.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.oa.IOnlineApplicationData; +import at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig; +import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; +import at.gv.egovernment.moa.id.configuration.validation.FormularCustomizationValitator; +import at.gv.egovernment.moa.id.configuration.validation.oa.OAFileUploadValidation;  import at.gv.egovernment.moa.id.util.FormBuildUtils;  import at.gv.egovernment.moa.util.MiscUtil; -public class FormularCustomization { +public class FormularCustomization implements IOnlineApplicationData { +	private static final Logger log = Logger.getLogger(FormularCustomization.class); +	  	private boolean showMandateLoginButton = true;  	private boolean onlyMandateAllowed = false; @@ -52,25 +72,74 @@ public class FormularCustomization {  	private String applet_height = null;  	private String applet_width = null; +	private Map<String, String> map = null;  	private String appletRedirectTarget = null;  	public static List<String> appletRedirectTargetList = null; -	 +		  	public static List<String> fontTypeList = null;  	public String fontTypeListValue = null; -	public FormularCustomization() { +    private Map<String, byte[]> sendAssertionForm = new HashMap<String, byte[]>(); +    private Map<String, byte[]> bkuSelectionForm = new HashMap<String, byte[]>(); + +	private List<File> bkuSelectionFileUpload = null; +	private List<String> bkuSelectionFileUploadContentType = null; +	private List<String> bkuSelectionFileUploadFileName = new ArrayList<String>(); +	private boolean deleteBKUTemplate = false; +	 +	private List<File> sendAssertionFileUpload = null; +	private List<String> sendAssertionFileUploadContentType = null; +	private List<String> sendAssertionFileUploadFileName  = new ArrayList<String>();; +	private boolean deleteSendAssertionTemplate = false; +     +	private String aditionalAuthBlockText = null; +	private boolean isHideBPKAuthBlock = false; +		 +	public FormularCustomization(Map<String, String> map) {  		appletRedirectTargetList = Arrays.asList("","_blank","_self","_parent","_top");  		fontTypeList = Arrays.asList("","Verdana","Geneva","Arial","Helvetica","sans-serif","Times New Roman");  		Collections.sort(fontTypeList); +		 +		if (map == null) +			this.map = new HashMap<String, String>(); +		else +			this.map = map;  	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OAFormularCustomization"; +	} +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOA, AuthenticatedUser authUser, HttpServletRequest request) { +		AuthComponentOA auth = dbOA.getAuthComponentOA(); -	public void parse(OnlineApplication dbOAConfig, Map<String, String> map) { -		AuthComponentOA auth = dbOAConfig.getAuthComponentOA(); -				  		if (auth != null) {  			TemplatesType templates = auth.getTemplates(); +			 +			aditionalAuthBlockText = templates.getAditionalAuthBlockText(); +			isHideBPKAuthBlock = dbOA.isRemoveBPKFromAuthBlock(); +			  			if (templates != null) { +				 +				TransformsInfoType bkuSelectTemplate = templates.getBKUSelectionTemplate(); +				if (bkuSelectTemplate != null && MiscUtil.isNotEmpty(bkuSelectTemplate.getFilename())) { +					bkuSelectionFileUploadFileName.add(bkuSelectTemplate.getFilename());					 +				} +				 +				TransformsInfoType sendAssertionTemplate = templates.getSendAssertionTemplate(); +				if (sendAssertionTemplate != null && MiscUtil.isNotEmpty(sendAssertionTemplate.getFilename())) { +					sendAssertionFileUploadFileName.add(sendAssertionTemplate.getFilename());					 +				} +								  				BKUSelectionCustomizationType formcustom = templates.getBKUSelectionCustomization();  				if (formcustom != null) { @@ -140,8 +209,176 @@ public class FormularCustomization {  				}  			}  		} +		 +        request.getSession().setAttribute(Constants.SESSION_BKUFORMPREVIEW, map); +		 +		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) { + +        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dbOA.setAuthComponentOA(authoa); +        } +         +        dbOA.setRemoveBPKFromAuthBlock(isHideBPKAuthBlock()); +         +        TemplatesType templates = authoa.getTemplates(); +        if (templates == null) { +            templates = new TemplatesType(); +            authoa.setTemplates(templates); +        } +        +        templates.setAditionalAuthBlockText(getAditionalAuthBlockText()); +         +        //store BKU-selection and send-assertion templates +        if (authUser.isAdmin()) { + +            if (isDeleteBKUTemplate()) +                templates.setBKUSelectionTemplate(null); + +            if (isDeleteSendAssertionTemplate()) +                templates.setSendAssertionTemplate(null); + + +            if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) { +                TransformsInfoType template = new TransformsInfoType(); + +                Iterator<String> interator = bkuSelectionForm.keySet().iterator(); +                template.setFilename(interator.next()); +                template.setTransformation(bkuSelectionForm.get( +                        template.getFilename())); + +                templates.setBKUSelectionTemplate(template); +            } + +            if (sendAssertionForm != null && sendAssertionForm.size() > 0) { +                TransformsInfoType template = new TransformsInfoType(); + +                Iterator<String> interator = sendAssertionForm.keySet().iterator(); +                template.setFilename(interator.next()); +                template.setTransformation(sendAssertionForm.get( +                        template.getFilename())); + +                templates.setSendAssertionTemplate(template); +            } +        } +         +        BKUSelectionCustomizationType bkuselectioncustom = templates.getBKUSelectionCustomization(); +        if (bkuselectioncustom == null) { +            bkuselectioncustom = new BKUSelectionCustomizationType(); +            templates.setBKUSelectionCustomization(bkuselectioncustom); +        } +		 +        if (authoa.getMandates() != null && authoa.getMandates().getProfileName() != null &&  +        		authoa.getMandates().getProfileName().size() > 0) +        	bkuselectioncustom.setMandateLoginButton(true); +        else +        	bkuselectioncustom.setMandateLoginButton(false); +         +        bkuselectioncustom.setOnlyMandateLoginAllowed(isOnlyMandateAllowed()); +         +        bkuselectioncustom.setBackGroundColor(parseColor(getBackGroundColor())); +        bkuselectioncustom.setFrontColor(parseColor(getFrontColor())); + +        bkuselectioncustom.setHeaderBackGroundColor(parseColor(getHeader_BackGroundColor())); +        bkuselectioncustom.setHeaderFrontColor(parseColor(getHeader_FrontColor())); +        bkuselectioncustom.setHeaderText(getHeader_text()); + +        bkuselectioncustom.setButtonBackGroundColor(parseColor(getButton_BackGroundColor())); +        bkuselectioncustom.setButtonBackGroundColorFocus(parseColor(getButton_BackGroundColorFocus())); +        bkuselectioncustom.setButtonFontColor(parseColor(getButton_FrontColor())); + +        if (MiscUtil.isNotEmpty(getAppletRedirectTarget())) +            bkuselectioncustom.setAppletRedirectTarget(getAppletRedirectTarget()); + +        bkuselectioncustom.setFontType(getFontType()); + +        bkuselectioncustom.setAppletHeight(getApplet_height()); +        bkuselectioncustom.setAppletWidth(getApplet_width()); +		 +         +        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) { + +		HttpSession session = request.getSession(); +		List<String> errors = new ArrayList<String>();		 +		 +		String check = null; +		if (authUser.isAdmin()) { +			//validate aditionalAuthBlockText +			check = getAditionalAuthBlockText(); +			if (MiscUtil.isNotEmpty(check)) { +				if (ValidationHelper.containsPotentialCSSCharacter(check, false)) { +					log.warn("AditionalAuthBlockText contains potentail XSS characters: " + check); +					errors.add(LanguageHelper.getErrorString("validation.general.aditionalauthblocktext",  +							new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}, request )); +				} +			} +		} +		 +		OAFileUploadValidation valiator_fileUpload = new OAFileUploadValidation();		 +        //validate BKU-selection template +        List<String> templateError = valiator_fileUpload.validate(getBkuSelectionFileUploadFileName() +                , getBkuSelectionFileUpload(), "validation.general.bkuselection", bkuSelectionForm, request); +        if (templateError != null && templateError.size() == 0) { +            if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) +                session.setAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE, bkuSelectionForm); + +            else +                bkuSelectionForm = (Map<String, byte[]>) session.getAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE); + +        } else { +            errors.addAll(templateError); + +        } + +        //validate send-assertion template +        templateError = valiator_fileUpload.validate(getSendAssertionFileUploadFileName() +                , getSendAssertionFileUpload(), "validation.general.sendassertion", sendAssertionForm, request); +        if (templateError != null && templateError.size() == 0) { +            if (sendAssertionForm != null && sendAssertionForm.size() > 0) +                session.setAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE, sendAssertionForm); + +            else +                sendAssertionForm = (Map<String, byte[]>) session.getAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE); + +        } else { +            errors.addAll(templateError); + +        } +		 +        //validate BKUFormCustomization +		errors.addAll(new FormularCustomizationValitator().validate(this, request)); +       		 +		return errors;  	} +    private String parseColor(String color) { +        String value = ""; + +        if (MiscUtil.isNotEmpty(color)) { +            if (!color.startsWith("#")) +                value = "#" + color; +            else +                value = color; +        } +        return value; +    }  	/**  	 * @return the showMandateLoginButton @@ -389,9 +626,165 @@ public class FormularCustomization {  	public void setApplet_width(String applet_width) {  		this.applet_width = applet_width;  	} - -	 -	 -	 + + +	/** +	 * @return the bkuSelectionFileUpload +	 */ +	public List<File> getBkuSelectionFileUpload() { +		return bkuSelectionFileUpload; +	} + + +	/** +	 * @param bkuSelectionFileUpload the bkuSelectionFileUpload to set +	 */ +	public void setBkuSelectionFileUpload(List<File> bkuSelectionFileUpload) { +		this.bkuSelectionFileUpload = bkuSelectionFileUpload; +	} + + +	/** +	 * @return the bkuSelectionFileUploadContentType +	 */ +	public List<String> getBkuSelectionFileUploadContentType() { +		return bkuSelectionFileUploadContentType; +	} + + +	/** +	 * @param bkuSelectionFileUploadContentType the bkuSelectionFileUploadContentType to set +	 */ +	public void setBkuSelectionFileUploadContentType( +			List<String> bkuSelectionFileUploadContentType) { +		this.bkuSelectionFileUploadContentType = bkuSelectionFileUploadContentType; +	} + + +	/** +	 * @return the bkuSelectionFileUploadFileName +	 */ +	public List<String> getBkuSelectionFileUploadFileName() { +		return bkuSelectionFileUploadFileName; +	} + + +	/** +	 * @param bkuSelectionFileUploadFileName the bkuSelectionFileUploadFileName to set +	 */ +	public void setBkuSelectionFileUploadFileName( +			List<String> bkuSelectionFileUploadFileName) { +		this.bkuSelectionFileUploadFileName = bkuSelectionFileUploadFileName; +	} + + +	/** +	 * @return the sendAssertionFileUpload +	 */ +	public List<File> getSendAssertionFileUpload() { +		return sendAssertionFileUpload; +	} + + +	/** +	 * @param sendAssertionFileUpload the sendAssertionFileUpload to set +	 */ +	public void setSendAssertionFileUpload(List<File> sendAssertionFileUpload) { +		this.sendAssertionFileUpload = sendAssertionFileUpload; +	} + + +	/** +	 * @return the sendAssertionFileUploadContentType +	 */ +	public List<String> getSendAssertionFileUploadContentType() { +		return sendAssertionFileUploadContentType; +	} + + +	/** +	 * @param sendAssertionFileUploadContentType the sendAssertionFileUploadContentType to set +	 */ +	public void setSendAssertionFileUploadContentType( +			List<String> sendAssertionFileUploadContentType) { +		this.sendAssertionFileUploadContentType = sendAssertionFileUploadContentType; +	} + + +	/** +	 * @return the sendAssertionFileUploadFileName +	 */ +	public List<String> getSendAssertionFileUploadFileName() { +		return sendAssertionFileUploadFileName; +	} + + +	/** +	 * @param sendAssertionFileUploadFileName the sendAssertionFileUploadFileName to set +	 */ +	public void setSendAssertionFileUploadFileName( +			List<String> sendAssertionFileUploadFileName) { +		this.sendAssertionFileUploadFileName = sendAssertionFileUploadFileName; +	} + + +	/** +	 * @return the deleteBKUTemplate +	 */ +	public boolean isDeleteBKUTemplate() { +		return deleteBKUTemplate; +	} + + +	/** +	 * @param deleteBKUTemplate the deleteBKUTemplate to set +	 */ +	public void setDeleteBKUTemplate(boolean deleteBKUTemplate) { +		this.deleteBKUTemplate = deleteBKUTemplate; +	} + + +	/** +	 * @return the deleteSendAssertionTemplate +	 */ +	public boolean isDeleteSendAssertionTemplate() { +		return deleteSendAssertionTemplate; +	} + + +	/** +	 * @param deleteSendAssertionTemplate the deleteSendAssertionTemplate to set +	 */ +	public void setDeleteSendAssertionTemplate(boolean deleteSendAssertionTemplate) { +		this.deleteSendAssertionTemplate = deleteSendAssertionTemplate; +	} + +	/** +	 * @return the aditionalAuthBlockText +	 */ +	public String getAditionalAuthBlockText() { +		return aditionalAuthBlockText; +	} + +	/** +	 * @param aditionalAuthBlockText the aditionalAuthBlockText to set +	 */ +	public void setAditionalAuthBlockText(String aditionalAuthBlockText) { +		this.aditionalAuthBlockText = aditionalAuthBlockText; +	} + +	/** +	 * @return the isHideBPKAuthBlock +	 */ +	public boolean isHideBPKAuthBlock() { +		return isHideBPKAuthBlock; +	} + +	/** +	 * @param isHideBPKAuthBlock the isHideBPKAuthBlock to set +	 */ +	public void setHideBPKAuthBlock(boolean isHideBPKAuthBlock) { +		this.isHideBPKAuthBlock = isHideBPKAuthBlock; +	}	  } 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 new file mode 100644 index 000000000..37f8fbc07 --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/IOnlineApplicationData.java @@ -0,0 +1,64 @@ +/* + * 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.List; + +import javax.servlet.http.HttpServletRequest; + +import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication; +import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser; + +/** + * @author tlenz + * + */ +public interface IOnlineApplicationData { +	 +	public String getName(); +	 +	/** +	 * Parse OnlineApplication database object to formData +	 * @param dbOAConfig +	 * @return List of Errors +	 */ +	public List<String> parse(OnlineApplication dbOA, AuthenticatedUser authUser, HttpServletRequest request); +	 +	/** +	 * Store formData to OnlineApplication database object +	 * @param dboa: Database data object +	 * @param authUser  +	 * @param request: +	 * @return Error description +	 */ +	public String store(OnlineApplication dbOA, AuthenticatedUser authUser, HttpServletRequest request); +	 +	/** +	 * Validate formData +	 * @param general +	 * @param request +	 * @return +	 */ +	public List<String> validate(OAGeneralConfig general, AuthenticatedUser authUser, HttpServletRequest request); + +} 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 new file mode 100644 index 000000000..fbc16632d --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAAuthenticationData.java @@ -0,0 +1,530 @@ +/* + * 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.HashMap; +import java.util.List; +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.MandatesProfileNameItem; +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.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; +import at.gv.egovernment.moa.util.MiscUtil; + +/** + * @author tlenz + * + */ +public class OAAuthenticationData implements IOnlineApplicationData { + +	private String bkuOnlineURL = null; +	private String bkuHandyURL = null; +	private String bkuLocalURL = null; +	 +	private String mandateProfiles = null; +	private boolean useMandates = false; +	 +	private boolean calculateHPI = false; +	 +	private String keyBoxIdentifier = null; +	private static Map<String, String> keyBoxIdentifierList; +	 +	private boolean legacy = false; +	List<String> SLTemplates = null; +	 +	private Map<String, byte[]> transformations; +	 +	/** +	 *  +	 */ +	public OAAuthenticationData() { +		 keyBoxIdentifierList = new HashMap<String, String>(); +		 MOAKeyBoxSelector[] values = MOAKeyBoxSelector.values(); +		 for (int i=0; i<values.length; i++) { +			 keyBoxIdentifierList.put(values[i].value(), values[i].value()); +		 } +		  +		 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()); +	         } +	     } +	     ConfigurationDBUtils.closeSession(); +		  +	} +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OAAuthenticationData"; +	} +		 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOA, AuthenticatedUser authUser, HttpServletRequest request) { +		keyBoxIdentifier = dbOA.getKeyBoxIdentifier().value(); +		 +        AuthComponentOA oaauth = dbOA.getAuthComponentOA(); +		if (oaauth != null) { +			BKUURLS bkuurls = oaauth.getBKUURLS(); +			 +			String defaulthandy = ""; +			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(); +				} +			} +			 +			if (bkuurls != null) { +				 +				if (MiscUtil.isEmpty(bkuurls.getHandyBKU())) +					bkuHandyURL = defaulthandy; +				else +					bkuHandyURL = bkuurls.getHandyBKU(); +				 +				if (MiscUtil.isEmpty(bkuurls.getLocalBKU())) +					bkuLocalURL = defaultlocal; +				else +					bkuLocalURL = bkuurls.getLocalBKU(); +				 +				if (MiscUtil.isEmpty(bkuurls.getOnlineBKU())) +					bkuOnlineURL = defaultonline; +				else +					bkuOnlineURL = bkuurls.getOnlineBKU(); +			} +			 +			Mandates mandates = oaauth.getMandates(); +			if (mandates != null) { +				 +				mandateProfiles = null; +				 +				List<MandatesProfileNameItem> profileList = mandates.getProfileNameItems(); +				for (MandatesProfileNameItem el : profileList) { +					if (mandateProfiles == null) +						mandateProfiles = el.getItem(); +					 +					else +						mandateProfiles += "," + el.getItem(); +				} +				 +				//TODO: only for RC1 +				if (MiscUtil.isNotEmpty(mandates.getProfiles())) { +					if (mandateProfiles == null) +						mandateProfiles = mandates.getProfiles(); +					 +					else +						mandateProfiles += "," + mandates.getProfiles(); +					 +				}  +				 +				if (mandateProfiles != null) +					useMandates = true; +				 +				else +					useMandates = false; +				 +			} +			 +			TemplatesType templates = oaauth.getTemplates(); +			if (templates != null) { +				List<TemplateType> templatetype = templates.getTemplate(); +				 +				if (templatetype != null) { +					if (SLTemplates == null) { +						SLTemplates = new ArrayList<String>(); +					} + +					for (TemplateType el : templatetype) { +						SLTemplates.add(el.getURL()); +					} +				} +			} +			 +			if (SLTemplates != null && SLTemplates.size() > 0) +				legacy = true; +			 +			List<TransformsInfoType> transforminfos = oaauth.getTransformsInfo(); +			transformations = new HashMap<String, byte[]>(); +			for (TransformsInfoType el : transforminfos) { +				transformations.put(el.getFilename(), el.getTransformation()); +			} +		} +		 +		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) { +        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dbOA.setAuthComponentOA(authoa);                     +        } +         +        dbOA.setCalculateHPI(isCalculateHPI()); +         +        if (authUser.isAdmin()) { + +            //store BKU-URLs +            BKUURLS bkuruls = new BKUURLS(); +            authoa.setBKUURLS(bkuruls); +            bkuruls.setHandyBKU(getBkuHandyURL()); +            bkuruls.setLocalBKU(getBkuLocalURL()); +            bkuruls.setOnlineBKU(getBkuOnlineURL()); +        	 +            //store SecurtiyLayerTemplates             +            TemplatesType templates = authoa.getTemplates(); +            if (templates == null) { +                templates = new TemplatesType(); +                authoa.setTemplates(templates); +            } +            List<TemplateType> template = templates.getTemplate(); +            if (isLegacy()) { + +                if (template == null) +                    template = new ArrayList<TemplateType>(); +                else +                    template.clear(); + +                if (MiscUtil.isNotEmpty(getSLTemplateURL1())) { +                    TemplateType el = new TemplateType(); +                    el.setURL(getSLTemplateURL1()); +                    template.add(el); +                } else +                    template.add(new TemplateType()); +                if (MiscUtil.isNotEmpty(getSLTemplateURL2())) { +                    TemplateType el = new TemplateType(); +                    el.setURL(getSLTemplateURL2()); +                    template.add(el); +                } else +                    template.add(new TemplateType()); +                if (MiscUtil.isNotEmpty(getSLTemplateURL3())) { +                    TemplateType el = new TemplateType(); +                    el.setURL(getSLTemplateURL3()); +                    template.add(el); +                } else +                    template.add(new TemplateType()); + +            } else { +                if (template != null && template.size() > 0) template.clear(); +            } +             +        	 +            //store keyBox Identifier +            dbOA.setKeyBoxIdentifier(MOAKeyBoxSelector.fromValue(getKeyBoxIdentifier())); +        } else { +            if (dbOA.isIsNew()) dbOA.setKeyBoxIdentifier(MOAKeyBoxSelector.SECURE_SIGNATURE_KEYPAIR); +        } +         +        Mandates mandates = new Mandates(); +        if (isUseMandates()) { +            mandates.setProfiles(getMandateProfiles()); + +        } else { +            mandates.setProfiles(new String()); +        } +        authoa.setMandates(mandates); + +        // set default transformation if it is empty +        List<TransformsInfoType> transformsInfo = authoa.getTransformsInfo(); +        if (transformsInfo == null) { +            // TODO: set OA specific transformation if it is required + +        } +         +        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) { +		return new OAAuthenticationDataValidation().validate(this, authUser.isAdmin(), request); +	} + + +	/** +	 * @return the bkuOnlineURL +	 */ +	public String getBkuOnlineURL() { +		return bkuOnlineURL; +	} + + +	/** +	 * @param bkuOnlineURL the bkuOnlineURL to set +	 */ +	public void setBkuOnlineURL(String bkuOnlineURL) { +		this.bkuOnlineURL = bkuOnlineURL; +	} + + +	/** +	 * @return the bkuHandyURL +	 */ +	public String getBkuHandyURL() { +		return bkuHandyURL; +	} + + +	/** +	 * @param bkuHandyURL the bkuHandyURL to set +	 */ +	public void setBkuHandyURL(String bkuHandyURL) { +		this.bkuHandyURL = bkuHandyURL; +	} + + +	/** +	 * @return the bkuLocalURL +	 */ +	public String getBkuLocalURL() { +		return bkuLocalURL; +	} + + +	/** +	 * @param bkuLocalURL the bkuLocalURL to set +	 */ +	public void setBkuLocalURL(String bkuLocalURL) { +		this.bkuLocalURL = bkuLocalURL; +	} + + +	/** +	 * @return the mandateProfiles +	 */ +	public String getMandateProfiles() { +		return mandateProfiles; +	} + + +	/** +	 * @param mandateProfiles the mandateProfiles to set +	 */ +	public void setMandateProfiles(String mandateProfiles) { +		this.mandateProfiles = mandateProfiles; +	} + + +	/** +	 * @return the useMandates +	 */ +	public boolean isUseMandates() { +		return useMandates; +	} + + +	/** +	 * @param useMandates the useMandates to set +	 */ +	public void setUseMandates(boolean useMandates) { +		this.useMandates = useMandates; +	} + + +	/** +	 * @return the calculateHPI +	 */ +	public boolean isCalculateHPI() { +		return calculateHPI; +	} + + +	/** +	 * @param calculateHPI the calculateHPI to set +	 */ +	public void setCalculateHPI(boolean calculateHPI) { +		this.calculateHPI = calculateHPI; +	} + + +	/** +	 * @return the keyBoxIdentifier +	 */ +	public String getKeyBoxIdentifier() { +		return keyBoxIdentifier; +	} + + +	/** +	 * @param keyBoxIdentifier the keyBoxIdentifier to set +	 */ +	public void setKeyBoxIdentifier(String keyBoxIdentifier) { +		this.keyBoxIdentifier = keyBoxIdentifier; +	} + + +	/** +	 * @return the keyBoxIdentifierList +	 */ +	public Map<String, String> getKeyBoxIdentifierList() { +		return keyBoxIdentifierList; +	} + +	 +	/** +	 * @return the legacy +	 */ +	public boolean isLegacy() { +		return legacy; +	} + + +	/** +	 * @param legacy the legacy to set +	 */ +	public void setLegacy(boolean legacy) { +		this.legacy = legacy; +	} + + +	/** +	 * @return the transformations +	 */ +	public Map<String, byte[]> getTransformations() { +		return transformations; +	} + + +	/** +	 * @param transformations the transformations to set +	 */ +	public void setTransformations(Map<String, byte[]> transformations) { +		this.transformations = transformations; +	} + + +	/** +	 * @return the sLTemplates +	 */ +	public List<String> getSLTemplates() { +		return SLTemplates; +	} + +	/** +	 * @return the sLTemplateURL1 +	 */ +	public String getSLTemplateURL1() { +		if (SLTemplates != null && SLTemplates.size() > 0) +			return SLTemplates.get(0); +		else +			return null; +	} + + +	/** +	 * @param sLTemplateURL1 the sLTemplateURL1 to set +	 */ +	public void setSLTemplateURL1(String sLTemplateURL1) { +		if (SLTemplates == null) +			SLTemplates = new ArrayList<String>(); +		SLTemplates.add(sLTemplateURL1); +	} + + +	/** +	 * @return the sLTemplateURL2 +	 */ +	public String getSLTemplateURL2() { +		if (SLTemplates != null && SLTemplates.size() > 1) +			return SLTemplates.get(1); +		else +			return null; +	} + + +	/** +	 * @param sLTemplateURL2 the sLTemplateURL2 to set +	 */ +	public void setSLTemplateURL2(String sLTemplateURL2) { +		if (SLTemplates == null) +			SLTemplates = new ArrayList<String>(); +		SLTemplates.add(sLTemplateURL2); +	} + + +	/** +	 * @return the sLTemplateURL3 +	 */ +	public String getSLTemplateURL3() { +		if (SLTemplates != null && SLTemplates.size() > 2) +			return SLTemplates.get(2); +		else +			return null; +	} + + +	/** +	 * @param sLTemplateURL3 the sLTemplateURL3 to set +	 */ +	public void setSLTemplateURL3(String sLTemplateURL3) { +		if (SLTemplates == null) +			SLTemplates = new ArrayList<String>(); +		SLTemplates.add(sLTemplateURL3); +	} +	 +} 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 93986529e..5c0a2b1a6 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 @@ -22,44 +22,35 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.configuration.data.oa; -import java.io.File; -import java.util.ArrayList;  import java.util.Arrays; -import java.util.HashMap;  import java.util.List; -import java.util.Map; -import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead; +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.BKUURLS; -import at.gv.egovernment.moa.id.commons.db.dao.config.DefaultBKUs;  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.MOAKeyBoxSelector; -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.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.TransformsInfoType;  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; +import at.gv.egovernment.moa.id.configuration.validation.oa.OAGeneralConfigValidation;  import at.gv.egovernment.moa.util.MiscUtil; -public class OAGeneralConfig { - +public class OAGeneralConfig implements IOnlineApplicationData{ +	 +	private boolean isActive = false; +	  	private String dbID = null; -	private String bkuOnlineURL = null; -	private String bkuHandyURL = null; -	private String bkuLocalURL = null; -  	private String identifier = null;  	private String friendlyName = null;  	private boolean businessService = false; - +	private boolean deaktivededBusinessService = false; +	 +    private boolean subTargetSet = false; +	      private String target = null;  	private String target_subsector = null;  	private String target_admin = null; @@ -70,48 +61,9 @@ public class OAGeneralConfig {  	private String identificationNumber = null;  	private String identificationType = null;  	private static List<String> identificationTypeList = null; - -	private String aditionalAuthBlockText = null; -		 -	private String mandateProfiles = null; -	private boolean useMandates = false; -	 -	private boolean isActive = false; -	private boolean calculateHPI = false; -	 -	private String keyBoxIdentifier = null; -	private static Map<String, String> keyBoxIdentifierList; -	 -	private boolean legacy = false; -	List<String> SLTemplates = null; -		 -	private boolean isHideBPKAuthBlock = false; -	 -	private Map<String, byte[]> transformations; -	 -	private List<File> bkuSelectionFileUpload = null; -	private List<String> bkuSelectionFileUploadContentType = null; -	private List<String> bkuSelectionFileUploadFileName = new ArrayList<String>(); -	 -	private List<File> sendAssertionFileUpload = null; -	private List<String> sendAssertionFileUploadContentType = null; -	private List<String> sendAssertionFileUploadFileName  = new ArrayList<String>();; -	 -	private boolean deleteBKUTemplate = false; -	private boolean deleteSendAssertionTemplate = false; - -	 +				  	public OAGeneralConfig() { -		 keyBoxIdentifierList = new HashMap<String, String>(); -		 MOAKeyBoxSelector[] values = MOAKeyBoxSelector.values(); -		 for (int i=0; i<values.length; i++) { -			 keyBoxIdentifierList.put(values[i].value(), values[i].value()); -		 } -		  -		 keyBoxIdentifier = MOAKeyBoxSelector.SECURE_SIGNATURE_KEYPAIR.value(); -		  -		 bkuLocalURL = Constants.DEFAULT_LOCALBKU_URL; -		 bkuHandyURL = Constants.DEFAULT_HANDYBKU_URL; +  		 targetList = TargetValidator.getListOfTargets();  		 target = ""; @@ -123,17 +75,26 @@ public class OAGeneralConfig {                   Constants.IDENIFICATIONTYPE_STORK);  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OAGeneralInformation"; +	} -	public void parse(OnlineApplication dbOAConfig) { -		 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOAConfig, AuthenticatedUser authUser, HttpServletRequest request) {  		isActive = dbOAConfig.isIsActive(); -		friendlyName = dbOAConfig.getFriendlyName(); -		 -		keyBoxIdentifier = dbOAConfig.getKeyBoxIdentifier().value();		 -		 +		friendlyName = dbOAConfig.getFriendlyName();				  		identifier = dbOAConfig.getPublicURLPrefix(); +        subTargetSet = MiscUtil.isNotEmpty(getTarget_subsector()); +		  		String target_full = dbOAConfig.getTarget();  		if (MiscUtil.isNotEmpty(target_full)) {  			if (TargetValidator.isValidTarget(target_full)) { @@ -165,39 +126,6 @@ public class OAGeneralConfig {          AuthComponentOA oaauth = dbOAConfig.getAuthComponentOA();  		if (oaauth != null) { -			BKUURLS bkuurls = oaauth.getBKUURLS(); -			 -			String defaulthandy = ""; -			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(); -				} -			} -			 -			if (bkuurls != null) { -				 -				if (MiscUtil.isEmpty(bkuurls.getHandyBKU())) -					bkuHandyURL = defaulthandy; -				else -					bkuHandyURL = bkuurls.getHandyBKU(); -				 -				if (MiscUtil.isEmpty(bkuurls.getLocalBKU())) -					bkuLocalURL = defaultlocal; -				else -					bkuLocalURL = bkuurls.getLocalBKU(); -				 -				if (MiscUtil.isEmpty(bkuurls.getOnlineBKU())) -					bkuOnlineURL = defaultonline; -				else -					bkuOnlineURL = bkuurls.getOnlineBKU(); -			}  			IdentificationNumber idnumber = oaauth.getIdentificationNumber();  			if (idnumber != null) { @@ -214,81 +142,137 @@ public class OAGeneralConfig {                          identificationNumber = split[2]; // setting sp country as ident type -> sp ident                      }  				} -			} -			 -			Mandates mandates = oaauth.getMandates(); -			if (mandates != null) { -				 -				mandateProfiles = null; -				 -				List<MandatesProfileNameItem> profileList = mandates.getProfileNameItems(); -				for (MandatesProfileNameItem el : profileList) { -					if (mandateProfiles == null) -						mandateProfiles = el.getItem(); -					 -					else -						mandateProfiles += "," + el.getItem(); -				} -				//TODO: only for RC1 -				if (MiscUtil.isNotEmpty(mandates.getProfiles())) { -					if (mandateProfiles == null) -						mandateProfiles = mandates.getProfiles(); -					 -					else -						mandateProfiles += "," + mandates.getProfiles(); +				if (authUser.isOnlyBusinessService()) { +			        deaktivededBusinessService = authUser.isOnlyBusinessService(); +			        setBusinessService(authUser.isOnlyBusinessService()); -				}  -				 -				if (mandateProfiles != null) -					useMandates = true; -				 -				else -					useMandates = false; -				 -			} -			 -			TemplatesType templates = oaauth.getTemplates(); -			if (templates != null) { -				aditionalAuthBlockText = templates.getAditionalAuthBlockText(); -				List<TemplateType> templatetype = templates.getTemplate(); -				 -				if (templatetype != null) { -					if (SLTemplates == null) { -						SLTemplates = new ArrayList<String>(); -					} - -					for (TemplateType el : templatetype) { -						SLTemplates.add(el.getURL()); -					} -				} -				 -				TransformsInfoType bkuSelectTemplate = templates.getBKUSelectionTemplate(); -				if (bkuSelectTemplate != null && MiscUtil.isNotEmpty(bkuSelectTemplate.getFilename())) { -					bkuSelectionFileUploadFileName.add(bkuSelectTemplate.getFilename());					 +			        identificationType = authUser.getBusinessServiceType(); +			        identificationNumber = authUser.getBusinessServiceNumber(); +			          				} -				TransformsInfoType sendAssertionTemplate = templates.getSendAssertionTemplate(); -				if (sendAssertionTemplate != null && MiscUtil.isNotEmpty(sendAssertionTemplate.getFilename())) { -					sendAssertionFileUploadFileName.add(sendAssertionTemplate.getFilename());					 -				} -			} -		 -			if (SLTemplates != null && SLTemplates.size() > 0) -				legacy = true; -			 -			List<TransformsInfoType> transforminfos = oaauth.getTransformsInfo(); -			transformations = new HashMap<String, byte[]>(); -			for (TransformsInfoType el : transforminfos) { -				transformations.put(el.getFilename(), el.getTransformation()); -			} -						  +			}						   		} -		isHideBPKAuthBlock = dbOAConfig.isRemoveBPKFromAuthBlock(); + +		 +		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) { +        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dbOA.setAuthComponentOA(authoa); +        } +         +        if (authUser.isAdmin()) dbOA.setIsActive(isActive()); +         +        dbOA.setPublicURLPrefix(getIdentifier()); +        dbOA.setFriendlyName(getFriendlyName()); +         +        if (isBusinessService() || authUser.isOnlyBusinessService()) { + +            dbOA.setType(Constants.MOA_CONFIG_BUSINESSSERVICE); + +            String num = null; +			if (authUser.isOnlyBusinessService()) { +		        deaktivededBusinessService = authUser.isOnlyBusinessService(); +		        setBusinessService(authUser.isOnlyBusinessService()); +				num = authUser.getBusinessServiceType() + authUser.getBusinessServiceNumber(); +		         +			} else { +             +	            num = getIdentificationNumber().replaceAll(" ", ""); +	            if (num.startsWith(Constants.IDENIFICATIONTYPE_FN)) { +	                num = num.substring(Constants.IDENIFICATIONTYPE_FN.length()); +	 +	                num = at.gv.egovernment.moa.util.StringUtils.deleteLeadingZeros(num); +	 +	                // num = StringUtils.leftPad(num, 7, '0'); +	            } +	 +	            if (num.startsWith(Constants.IDENIFICATIONTYPE_ZVR)) +	                num = num.substring(Constants.IDENIFICATIONTYPE_ZVR.length()); +	 +	            if (num.startsWith(Constants.IDENIFICATIONTYPE_ERSB)) +	                num = num.substring(Constants.IDENIFICATIONTYPE_ERSB.length()); +			} +			 +            IdentificationNumber idnumber = new IdentificationNumber(); + +            if (getIdentificationType().equals(Constants.IDENIFICATIONTYPE_STORK)) { +                idnumber.setValue(Constants.PREFIX_STORK + "AT" + "+" + num); +                idnumber.setType(Constants.BUSINESSSERVICENAMES.get(getIdentificationType())); +            } else { +                idnumber.setValue(Constants.PREFIX_WPBK + getIdentificationType() + "+" + num); +                idnumber.setType(Constants.BUSINESSSERVICENAMES.get(getIdentificationType())); +            } +             +            authoa.setIdentificationNumber(idnumber); + +        } else { +            dbOA.setType(null); + +            if (authUser.isAdmin()) { +                if (MiscUtil.isNotEmpty(getTarget_admin()) && isAdminTarget()) { +                    dbOA.setTarget(getTarget_admin()); +                    dbOA.setTargetFriendlyName(getTargetFriendlyName()); + +                } else { + +                    String target = getTarget(); + +                    if (MiscUtil.isNotEmpty(getTarget_subsector()) && subTargetSet) +                        dbOA.setTarget(target + "-" + getTarget_subsector()); +                    else +                        dbOA.setTarget(target); + +                    String targetname = TargetValidator.getTargetFriendlyName(target); +                    if (MiscUtil.isNotEmpty(targetname)) dbOA.setTargetFriendlyName(targetname); + +                } + +            } else { + +                if (MiscUtil.isNotEmpty(getTarget())) { + +                    String target = getTarget(); + +                    if (MiscUtil.isNotEmpty(getTarget_subsector()) && subTargetSet) +                        dbOA.setTarget(target + "-" + getTarget_subsector()); + +                    else +                        dbOA.setTarget(target); + +                    String targetname = TargetValidator.getTargetFriendlyName(target); +                    if (MiscUtil.isNotEmpty(targetname)) dbOA.setTargetFriendlyName(targetname); + +                } +            } +        } +         +        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) { +		return new OAGeneralConfigValidation().validate(this, authUser.isAdmin(), request); +	} +  	public String getIdentifier() {  		return identifier;  	} @@ -337,22 +321,6 @@ public class OAGeneralConfig {  		this.identificationType = identificationType;  	} -	public String getAditionalAuthBlockText() { -		return aditionalAuthBlockText; -	} - -	public void setAditionalAuthBlockText(String aditionalAuthBlockText) { -		this.aditionalAuthBlockText = aditionalAuthBlockText; -	} - -	public String getMandateProfiles() { -		return mandateProfiles; -	} - -	public void setMandateProfiles(String mandateProfiles) { -		this.mandateProfiles = mandateProfiles; -	} -  	public boolean isActive() {  		return isActive;  	} @@ -369,59 +337,6 @@ public class OAGeneralConfig {  		this.businessService = businessService;  	} -	public String getBkuOnlineURL() { -		return bkuOnlineURL; -	} - -	public void setBkuOnlineURL(String bkuOnlineURL) { -		this.bkuOnlineURL = bkuOnlineURL; -	} - -	public String getBkuHandyURL() { -		return bkuHandyURL; -	} - -	public void setBkuHandyURL(String bkuHandyURL) { -		this.bkuHandyURL = bkuHandyURL; -	} - -	public String getBkuLocalURL() { -		return bkuLocalURL; -	} - -	public void setBkuLocalURL(String bkuLocalURL) { -		this.bkuLocalURL = bkuLocalURL; -	} - -	/** -	 * @return the keyBoxIdentifier -	 */ -	public String getKeyBoxIdentifier() { -		return keyBoxIdentifier; -	} - -	/** -	 * @param keyBoxIdentifier the keyBoxIdentifier to set -	 */ -	public void setKeyBoxIdentifier(String keyBoxIdentifier) { -		this.keyBoxIdentifier = keyBoxIdentifier; -	} -	 -	/** -	 * @return the transformations -	 */ -	public Map<String, byte[]> getTransformations() { -		return transformations; -	} - -	/** -	 * @param transformations the transformations to set -	 */ -	public void setTransformations(Map<String, byte[]> transformations) { -		this.transformations = transformations; -	} - -  	/**  	 * @return the dbID  	 */ @@ -446,117 +361,6 @@ public class OAGeneralConfig {  	/** -	 * @return the calculateHPI -	 */ -	public boolean isCalculateHPI() { -		return calculateHPI; -	} - - -	/** -	 * @param calculateHPI the calculateHPI to set -	 */ -	public void setCalculateHPI(boolean calculateHPI) { -		this.calculateHPI = calculateHPI; -	} - - -	/** -	 * @return the keyBoxIdentifierList -	 */ -	public Map<String, String> getKeyBoxIdentifierList() { -		return keyBoxIdentifierList; -	} - - -	/** -	 * @param keyBoxIdentifierList the keyBoxIdentifierList to set -	 */ -	public void setKeyBoxIdentifierList(Map<String, String> list) { -		keyBoxIdentifierList = list; -	} - - -	/** -	 * @return the legacy -	 */ -	public boolean isLegacy() { -		return legacy; -	} - - -	/** -	 * @param legacy the legacy to set -	 */ -	public void setLegacy(boolean legacy) { -		this.legacy = legacy; -	} - - -	/** -	 * @return the sLTemplateURL1 -	 */ -	public String getSLTemplateURL1() { -		if (SLTemplates != null && SLTemplates.size() > 0) -			return SLTemplates.get(0); -		else -			return null; -	} - - -	/** -	 * @param sLTemplateURL1 the sLTemplateURL1 to set -	 */ -	public void setSLTemplateURL1(String sLTemplateURL1) { -		if (SLTemplates == null) -			SLTemplates = new ArrayList<String>(); -		SLTemplates.add(sLTemplateURL1); -	} - - -	/** -	 * @return the sLTemplateURL2 -	 */ -	public String getSLTemplateURL2() { -		if (SLTemplates != null && SLTemplates.size() > 1) -			return SLTemplates.get(1); -		else -			return null; -	} - - -	/** -	 * @param sLTemplateURL2 the sLTemplateURL2 to set -	 */ -	public void setSLTemplateURL2(String sLTemplateURL2) { -		if (SLTemplates == null) -			SLTemplates = new ArrayList<String>(); -		SLTemplates.add(sLTemplateURL2); -	} - - -	/** -	 * @return the sLTemplateURL3 -	 */ -	public String getSLTemplateURL3() { -		if (SLTemplates != null && SLTemplates.size() > 2) -			return SLTemplates.get(2); -		else -			return null; -	} - - -	/** -	 * @param sLTemplateURL3 the sLTemplateURL3 to set -	 */ -	public void setSLTemplateURL3(String sLTemplateURL3) { -		if (SLTemplates == null) -			SLTemplates = new ArrayList<String>(); -		SLTemplates.add(sLTemplateURL3); -	} - - -	/**  	 * @return the target_subsector  	 */  	public String getTarget_subsector() { @@ -618,171 +422,20 @@ public class OAGeneralConfig {  	public void setAdminTarget(boolean isAdminTarget) {  		this.isAdminTarget = isAdminTarget;  	} - - -	/** -	 * @return the isHideBPKAuthBlock -	 */ -	public boolean isHideBPKAuthBlock() { -		return isHideBPKAuthBlock; -	} - - -	/** -	 * @param isHideBPKAuthBlock the isHideBPKAuthBlock to set -	 */ -	public void setHideBPKAuthBlock(boolean isHideBPKAuthBlock) { -		this.isHideBPKAuthBlock = isHideBPKAuthBlock; -	} - - -	/** -	 * @return the useMandates -	 */ -	public boolean isUseMandates() { -		return useMandates; -	} - - -	/** -	 * @param useMandates the useMandates to set -	 */ -	public void setUseMandates(boolean useMandates) { -		this.useMandates = useMandates; -	} - - -	/** -	 * @return the bkuSelectionFileUpload -	 */ -	public List<File> getBkuSelectionFileUpload() { -		return bkuSelectionFileUpload; -	} - - -	/** -	 * @param bkuSelectionFileUpload the bkuSelectionFileUpload to set -	 */ -	public void setBkuSelectionFileUpload(List<File> bkuSelectionFileUpload) { -		this.bkuSelectionFileUpload = bkuSelectionFileUpload; -	} - - -	/** -	 * @return the bkuSelectionFileUploadContentType -	 */ -	public List<String> getBkuSelectionFileUploadContentType() { -		return bkuSelectionFileUploadContentType; -	} - - -	/** -	 * @param bkuSelectionFileUploadContentType the bkuSelectionFileUploadContentType to set -	 */ -	public void setBkuSelectionFileUploadContentType( -			List<String> bkuSelectionFileUploadContentType) { -		this.bkuSelectionFileUploadContentType = bkuSelectionFileUploadContentType; -	} - - -	/** -	 * @return the bkuSelectionFileUploadFileName -	 */ -	public List<String> getBkuSelectionFileUploadFileName() { -		return bkuSelectionFileUploadFileName; -	} - - -	/** -	 * @param bkuSelectionFileUploadFileName the bkuSelectionFileUploadFileName to set -	 */ -	public void setBkuSelectionFileUploadFileName( -			List<String> bkuSelectionFileUploadFileName) { -		this.bkuSelectionFileUploadFileName = bkuSelectionFileUploadFileName; -	} - - -	/** -	 * @return the sendAssertionFileUpload -	 */ -	public List<File> getSendAssertionFileUpload() { -		return sendAssertionFileUpload; -	} - - -	/** -	 * @param sendAssertionFileUpload the sendAssertionFileUpload to set -	 */ -	public void setSendAssertionFileUpload(List<File> sendAssertionFileUpload) { -		this.sendAssertionFileUpload = sendAssertionFileUpload; -	} - - -	/** -	 * @return the sendAssertionFileUploadContentType -	 */ -	public List<String> getSendAssertionFileUploadContentType() { -		return sendAssertionFileUploadContentType; -	} - - -	/** -	 * @param sendAssertionFileUploadContentType the sendAssertionFileUploadContentType to set -	 */ -	public void setSendAssertionFileUploadContentType( -			List<String> sendAssertionFileUploadContentType) { -		this.sendAssertionFileUploadContentType = sendAssertionFileUploadContentType; -	} - - -	/** -	 * @return the sendAssertionFileUploadFileName -	 */ -	public List<String> getSendAssertionFileUploadFileName() { -		return sendAssertionFileUploadFileName; -	} - - -	/** -	 * @param sendAssertionFileUploadFileName the sendAssertionFileUploadFileName to set -	 */ -	public void setSendAssertionFileUploadFileName( -			List<String> sendAssertionFileUploadFileName) { -		this.sendAssertionFileUploadFileName = sendAssertionFileUploadFileName; -	} - - -	/** -	 * @return the deleteBKUTemplate -	 */ -	public boolean isDeleteBKUTemplate() { -		return deleteBKUTemplate; -	} - - -	/** -	 * @param deleteBKUTemplate the deleteBKUTemplate to set -	 */ -	public void setDeleteBKUTemplate(boolean deleteBKUTemplate) { -		this.deleteBKUTemplate = deleteBKUTemplate; -	} - - -	/** -	 * @return the deleteSendAssertionTemplate -	 */ -	public boolean isDeleteSendAssertionTemplate() { -		return deleteSendAssertionTemplate; -	} - - -	/** -	 * @param deleteSendAssertionTemplate the deleteSendAssertionTemplate to set -	 */ -	public void setDeleteSendAssertionTemplate(boolean deleteSendAssertionTemplate) { -		this.deleteSendAssertionTemplate = deleteSendAssertionTemplate; -	}	 -	 +    /** +     * @return the deaktivededBusinessService +     */ +    public boolean isDeaktivededBusinessService() { +        return deaktivededBusinessService; +    } + + +    /** +     * @param deaktivededBusinessService the deaktivededBusinessService to set +     */ +    public void setDeaktivededBusinessService(boolean deaktivededBusinessService) { +        this.deaktivededBusinessService = deaktivededBusinessService; +    }  } 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 3617c192e..b95090a55 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 @@ -27,6 +27,7 @@ import java.util.List;  import java.util.UUID;  import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession;  import org.apache.commons.lang.StringUtils;  import org.apache.log4j.Logger; @@ -34,10 +35,13 @@ 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.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.id.configuration.validation.oa.OAOAUTH20ConfigValidation;  import at.gv.egovernment.moa.id.protocols.oauth20.OAuth20Util; -public class OAOAuth20Config { +public class OAOAuth20Config implements IOnlineApplicationData{  	private final Logger log = Logger.getLogger(OAOAuth20Config.class); @@ -45,12 +49,24 @@ public class OAOAuth20Config {  	private String clientSecret = null;  	private String redirectUri = null; -	public OAOAuth20Config() { +	public OAOAuth20Config() {		 +        this.generateClientSecret(); +          	} -	public List<String> parse(OnlineApplication dbOAConfig, HttpServletRequest request) { +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OAOpenIDConnect"; +	} +	 +	public List<String> parse(OnlineApplication dbOAConfig, AuthenticatedUser authUser, HttpServletRequest request) {  		List<String> errors = new ArrayList<String>(); +		HttpSession session = request.getSession(); +		  		AuthComponentOA authdata = dbOAConfig.getAuthComponentOA();  		if (authdata != null) {  			// set client id to public url prefix @@ -77,7 +93,52 @@ public class OAOAuth20Config {  			}  		} -		return errors; +		session.setAttribute(Constants.SESSION_OAUTH20SECRET, this.getClientSecret()); +		 +		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) { +		return new OAOAUTH20ConfigValidation().validate(this, request); +		 +	} +	 +	/* (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) { +        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dbOA.setAuthComponentOA(authoa); +        } +         +        log.debug("Saving OAuth 2.0 configuration:"); +        OAOAUTH20 oaOAuth20 = authoa.getOAOAUTH20(); +        if (oaOAuth20 == null) { +            oaOAuth20 = new OAOAUTH20(); +            authoa.setOAOAUTH20(oaOAuth20); +        } + +        oaOAuth20.setOAuthClientId(dbOA.getPublicURLPrefix()); +        // oaOAuth20.setOAuthClientSecret(oauth20OA.getClientSecret()); +        oaOAuth20.setOAuthRedirectUri(getRedirectUri()); +        log.debug("client id: " + getClientId()); +        log.debug("client secret: " + getClientSecret()); +        log.debug("redirect uri:" + getRedirectUri()); + +        oaOAuth20.setOAuthClientSecret((String) request.getSession().getAttribute(Constants.SESSION_OAUTH20SECRET)); +        request.getSession().setAttribute(Constants.SESSION_OAUTH20SECRET, null); + +        return null;		  	}  	public String getClientId() { @@ -106,6 +167,5 @@ public class OAOAuth20Config {  	public void generateClientSecret() {  		this.clientSecret = UUID.randomUUID().toString(); -	} -	 +	}	  } 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 a61e1ea96..c2a92c9fc 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 @@ -27,6 +27,7 @@ import java.io.FileInputStream;  import java.io.IOException;  import java.security.cert.CertificateException;  import java.util.ArrayList; +import java.util.Date;  import java.util.List;  import javax.servlet.http.HttpServletRequest; @@ -37,10 +38,12 @@ 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.configuration.auth.AuthenticatedUser;  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.MiscUtil; -public class OAPVP2Config { +public class OAPVP2Config implements IOnlineApplicationData{  	private final Logger log = Logger.getLogger(OAPVP2Config.class); @@ -56,7 +59,72 @@ public class OAPVP2Config {  	public OAPVP2Config() {  	} -	public List<String> parse(OnlineApplication dbOAConfig, HttpServletRequest request) { +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OAPVP2"; +	} + +	/* (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) +	 */ +	@Override +	public String store(OnlineApplication dboa, AuthenticatedUser authUser, HttpServletRequest request) {		 +        AuthComponentOA authoa = dboa.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dboa.setAuthComponentOA(authoa); +        }		 +        OAPVP2 pvp2 = authoa.getOAPVP2(); +        if (pvp2 == null) { +            pvp2 = new OAPVP2(); +            authoa.setOAPVP2(pvp2); +        } + +        try { + +            if (getFileUpload() != null) {  +            	pvp2.setCertificate(getCertificate()); +            	setReLoad(true); +            } + +        } catch (CertificateException e) { +            log.info("Uploaded Certificate can not be found", e); +            return LanguageHelper.getErrorString("validation.pvp2.certificate.notfound", request); +        } catch (IOException e) { +            log.info("Uploaded Certificate can not be parsed", e); +            return LanguageHelper.getErrorString("validation.pvp2.certificate.format", request); +        } + +        if (getMetaDataURL() != null &&  +        		!getMetaDataURL().equals(pvp2.getMetadataURL())) +        	setReLoad(true);         +        pvp2.setMetadataURL(getMetaDataURL()); +         +        if (isReLoad()) +        	pvp2.setUpdateRequiredItem(new Date()); +         +        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) { +		return new OAPVP2ConfigValidation().validate(this, request); +	} +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOAConfig, AuthenticatedUser authUser, HttpServletRequest request) {  		List<String> errors = new ArrayList<String>();  		AuthComponentOA authdata = dbOAConfig.getAuthComponentOA(); @@ -158,7 +226,6 @@ public class OAPVP2Config {  		this.reLoad = reLoad;  	} -	  } 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 bb5baf53e..8d7d02048 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 @@ -22,11 +22,18 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.configuration.data.oa; +import java.math.BigInteger; +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.configuration.auth.AuthenticatedUser; +import at.gv.egovernment.moa.id.configuration.validation.oa.OASAML1ConfigValidation; -public class OASAML1Config { +public class OASAML1Config implements IOnlineApplicationData{  	private Boolean isActive = false;  	private Boolean provideStammZahl = false; @@ -41,8 +48,20 @@ public class OASAML1Config {  	public OASAML1Config() {  	} -	public void parse(OnlineApplication dbOAConfig) { -		AuthComponentOA authdata = dbOAConfig.getAuthComponentOA(); +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OASAML1"; +	} +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOA, AuthenticatedUser authUser, HttpServletRequest request) { +		AuthComponentOA authdata = dbOA.getAuthComponentOA();  		if (authdata != null) {  			OASAML1 saml1 = authdata.getOASAML1();  			if (saml1 != null) { @@ -62,8 +81,55 @@ public class OASAML1Config {  					isActive = saml1.isIsActive();  			}  		} +		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) { +		return new OASAML1ConfigValidation().validate(this, general, request);  	} +	/* (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) { +	        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +	        if (authoa == null) { +	            authoa = new AuthComponentOA(); +	            dbOA.setAuthComponentOA(authoa); +	        } +	         +	        OASAML1 saml1 = authoa.getOASAML1(); +	        if (saml1 == null) { +	            saml1 = new OASAML1(); +	            authoa.setOASAML1(saml1); +	            saml1.setIsActive(false); +	        } + +	        if (authUser.isAdmin()) { +	            saml1.setIsActive(isActive()); +	        } + +	        if (saml1.isIsActive() != null && saml1.isIsActive()) { +	            saml1.setProvideAUTHBlock(isProvideAuthBlock()); +	            saml1.setProvideCertificate(isProvideCertificate()); +	            saml1.setProvideFullMandatorData(isProvideFullMandateData()); +	            saml1.setProvideIdentityLink(isProvideIdentityLink()); +	            saml1.setProvideStammzahl(isProvideStammZahl()); +	            saml1.setUseCondition(isUseCondition()); +	            saml1.setConditionLength(BigInteger.valueOf(getConditionLength())); +	            // TODO: set sourceID +	            // saml1.setSourceID(""); +	        } +	         +	        return null;	        	         +	} +		  	public boolean isProvideStammZahl() {  		return provideStammZahl;  	} @@ -119,8 +185,5 @@ public class OASAML1Config {  	 */  	public void setActive(boolean isActive) {  		this.isActive = isActive; -	} -	 -	 -	 +	}	  } 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 593c2291f..28144666b 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 @@ -22,11 +22,17 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.configuration.data.oa; +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.configuration.auth.AuthenticatedUser; +import at.gv.egovernment.moa.id.configuration.validation.oa.OASSOConfigValidation; -public class OASSOConfig { +public class OASSOConfig implements IOnlineApplicationData{  	private boolean useSSO = false;  	private boolean showAuthDataFrame = true; @@ -36,7 +42,15 @@ public class OASSOConfig {  	} -	public void parse(OnlineApplication dbOAConfig) { +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OASingleSignOn"; +	} +	 +	public List<String> parse(OnlineApplication dbOAConfig, AuthenticatedUser authUser, HttpServletRequest request) {  		AuthComponentOA authdata = dbOAConfig.getAuthComponentOA();  		if (authdata != null) {  			OASSO ssoconfig = authdata.getOASSO(); @@ -46,6 +60,42 @@ public class OASSOConfig {  				singleLogOutURL = ssoconfig.getSingleLogOutURL();  			}	  		} +		 +		return null; +	} +	 + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#validate(at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> validate(OAGeneralConfig general, AuthenticatedUser authUser, +			HttpServletRequest request) { +		return new OASSOConfigValidation().validate(this, authUser.isAdmin(), request); +	} +	 +	public String store(OnlineApplication dboa, AuthenticatedUser authUser, HttpServletRequest request) { +		 +        AuthComponentOA authoa = dboa.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dboa.setAuthComponentOA(authoa); +        } +		 +        OASSO sso = authoa.getOASSO(); +        if (sso == null) { +            sso = new OASSO(); +            authoa.setOASSO(sso); +            sso.setAuthDataFrame(true); +        } +        sso.setUseSSO(this.useSSO); + +        if (authUser.isAdmin()) +        	sso.setAuthDataFrame(this.showAuthDataFrame); + +        sso.setSingleLogOutURL(this.singleLogOutURL); +         +        return null;  	}  	public boolean isUseSSO() { @@ -65,7 +115,5 @@ public class OASSOConfig {  	}  	public void setSingleLogOutURL(String singleLogOutURL) {  		this.singleLogOutURL = singleLogOutURL; -	} -	 -	 +	}	  } 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 b43e76d53..2bb8c0a19 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 @@ -25,6 +25,8 @@ 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.ConfigurationDBRead; @@ -35,10 +37,11 @@ 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.configuration.helper.MailHelper; +import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser; +import at.gv.egovernment.moa.id.configuration.validation.oa.OASTORKConfigValidation;  import at.gv.egovernment.moa.id.protocols.stork2.AttributeProviderFactory; -public class OASTORKConfig { +public class OASTORKConfig implements IOnlineApplicationData{  	private static final Logger log = Logger.getLogger(OASTORKConfig.class); @@ -62,15 +65,26 @@ public class OASTORKConfig {  		for(CPEPS current : ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getCPEPS()) {  			citizenCountries.add(current.getCountryCode());  		} +		 +		getAttributeProviderPlugins().add(new AttributeProviderPlugin()); +		  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OASTORK2"; +	} +	  	/**  	 * Parses the OA config for stork entities.  	 *  	 * @param dbOAConfig  	 *            the db oa config  	 */ -	public void parse(OnlineApplication dbOAConfig) { +	public List<String> parse(OnlineApplication dbOAConfig, AuthenticatedUser authUser, HttpServletRequest request) {  		AuthComponentOA authdata = dbOAConfig.getAuthComponentOA();  		if (authdata != null) {  			OASTORK config = authdata.getOASTORK(); @@ -128,8 +142,53 @@ public class OASTORKConfig {                  }  			}  		} +		 +		return null;  	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#validate(at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> validate(OAGeneralConfig general, AuthenticatedUser authUser, +			HttpServletRequest request) { +		return new OASTORKConfigValidation().validate(this, request); +	} +	 +	/* (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) { +        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dbOA.setAuthComponentOA(authoa); +        } +         +        // fetch stork configuration from database model +        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(isStorkLogonEnabled()); +        stork.setQaa(getQaa()); +        stork.setOAAttributes(getAttributes()); +        stork.setVidpEnabled(isVidpEnabled()); +        stork.setRequireConsent(isRequireConsent()); +        stork.setAttributeProviders(getAttributeProviderPlugins()); +        stork.setCPEPS(getEnabledCPEPS()); +         +        return null; +         +	} +	  	public boolean isStorkLogonEnabled() {  		return isStorkLogonEnabled;  	} 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 d3a9ffcd4..8e58f7bde 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 @@ -57,16 +57,9 @@ public class FormDataHelper {  			boolean ismandate = false;  			if (dbuser.isIsMandateUser() != null)  				ismandate = dbuser.isIsMandateUser(); -			 -			 -			userlist.add(new AuthenticatedUser( -					dbuser.getHjid(),  -					dbuser.getGivenname(),  -					dbuser.getFamilyname(), -					dbuser.getInstitut(), -					dbuser.getUsername(), +						 +			userlist.add(new AuthenticatedUser(dbuser,   					dbuser.isIsActive(),  -					dbuser.isIsAdmin(),  					ismandate,  					false));  		} 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 88dcbb5da..2cbac64ff 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 @@ -67,25 +67,46 @@ public class EditOAAction extends BasicAction {      private boolean newOA;      private String formID; -    private boolean onlyBusinessService = false; -    private boolean subTargetSet = false; -    private boolean deaktivededBusinessService = false;      private boolean isMetaDataRefreshRequired = false; -      private String nextPage; - -    private OAGeneralConfig generalOA = new OAGeneralConfig(); -    private OAPVP2Config pvp2OA = new OAPVP2Config(); -    private OASAML1Config saml1OA = new OASAML1Config(); -    private OASSOConfig ssoOA = new OASSOConfig(); -    private OAOAuth20Config oauth20OA = new OAOAuth20Config(); -    private OASTORKConfig storkOA = new OASTORKConfig(); -    private FormularCustomization formOA = new FormularCustomization(); -      private InputStream stream; - -    private Map<String, byte[]> sendAssertionForm = new HashMap<String, byte[]>(); -    private Map<String, byte[]> bkuSelectionForm = new HashMap<String, byte[]>(); +     +    private LinkedHashMap<String, IOnlineApplicationData> formList; +     +    /** +	 *  +	 */ +	public EditOAAction() { +    	formList = new LinkedHashMap<String, IOnlineApplicationData>(); +    	 +    	OAGeneralConfig generalOA = new OAGeneralConfig(); +    	formList.put(generalOA.getName(), generalOA); + +    	OAAuthenticationData authOA = new OAAuthenticationData(); +    	formList.put(authOA.getName(), authOA); +    	 +    	OASSOConfig ssoOA = new OASSOConfig(); +    	formList.put(ssoOA.getName(), ssoOA); +    	 +    	OASAML1Config saml1OA = new OASAML1Config(); +    	formList.put(saml1OA.getName(), saml1OA); +    	 +    	OAPVP2Config pvp2OA = new OAPVP2Config(); +    	formList.put(pvp2OA.getName(), pvp2OA); +    	 +    	OAOAuth20Config oauth20OA = new OAOAuth20Config(); +    	formList.put(oauth20OA.getName(), oauth20OA); +    	 +    	OASTORKConfig storkOA = new OASTORKConfig(); +    	formList.put(storkOA.getName(), storkOA); +    	 +        Map<String, String> map = new HashMap<String, String>(); +        map.putAll(FormBuildUtils.getDefaultMap()); +    	FormularCustomization formOA = new FormularCustomization(map); +    	formList.put(formOA.getName(), formOA); +		 +	} +          // STRUTS actions      public String inital() { @@ -134,32 +155,19 @@ public class EditOAAction extends BasicAction {              }          } -        generalOA.parse(onlineapplication); -        ssoOA.parse(onlineapplication); -        saml1OA.parse(onlineapplication); -        oauth20OA.parse(onlineapplication, request); -        session.setAttribute(Constants.SESSION_OAUTH20SECRET, this.oauth20OA.getClientSecret()); - -        storkOA.parse(onlineapplication); - -        Map<String, String> map = new HashMap<String, String>(); -        map.putAll(FormBuildUtils.getDefaultMap()); -        formOA.parse(onlineapplication, map); - -        session.setAttribute(Constants.SESSION_BKUFORMPREVIEW, map); - -        List<String> errors = pvp2OA.parse(onlineapplication, request); - +        List<String> errors = new ArrayList<String>(); +         +         +		for (IOnlineApplicationData form : formList.values()) { +			List<String> error = form.parse(onlineapplication, authUser, request); +			if (error != null) +				errors.addAll(error); +		}          if (errors.size() > 0) {              for (String el : errors)                  addActionError(el);          } -        subTargetSet = MiscUtil.isNotEmpty(generalOA.getTarget_subsector()); - -        // set UserSpezific OA Parameters -        if (!authUser.isAdmin()) generateUserSpecificConfigurationOptions(userdb); -          ConfigurationDBUtils.closeSession();          session.setAttribute(Constants.SESSION_OAID, oaid); @@ -192,35 +200,13 @@ public class EditOAAction extends BasicAction {              addActionError(LanguageHelper.getErrorString("error.editoa.mailverification", request));              return Constants.STRUTS_SUCCESS;          } - -        MOAIDConfiguration moaidconfig = ConfigurationDBRead.getMOAIDConfiguration(); -        if (moaidconfig != null) { -            DefaultBKUs defaultbkus = moaidconfig.getDefaultBKUs(); -            if (defaultbkus != null) { -                generalOA.setBkuHandyURL(defaultbkus.getHandyBKU()); -                generalOA.setBkuLocalURL(defaultbkus.getLocalBKU()); -                generalOA.setBkuOnlineURL(defaultbkus.getOnlineBKU()); -            } -        } - -        // set UserSpezific OA Parameters -        if (!authUser.isAdmin()) generateUserSpecificConfigurationOptions(userdb); - -        ConfigurationDBUtils.closeSession(); - -        //VIDP attribute provider configuration -        storkOA = new OASTORKConfig(); -        storkOA.getAttributeProviderPlugins().add(new AttributeProviderPlugin());          newOA = true;          formID = Random.nextRandom();          session.setAttribute(Constants.SESSION_FORMID, formID); -          session.setAttribute(Constants.SESSION_BKUFORMPREVIEW, null); - -        this.oauth20OA.generateClientSecret(); -        session.setAttribute(Constants.SESSION_OAUTH20SECRET, this.oauth20OA.getClientSecret()); - +        session.setAttribute(Constants.SESSION_OAUTH20SECRET, ((OAOAuth20Config)formList.get(new OAOAuth20Config().getName())).getClientSecret()); +                  return Constants.STRUTS_OA_EDIT;      } @@ -276,7 +262,8 @@ public class EditOAAction extends BasicAction {          }          // valid DBID and check entry -        String oaidentifier = generalOA.getIdentifier(); +        OAGeneralConfig oaGeneralForm = ((OAGeneralConfig)formList.get(new OAGeneralConfig().getName())); +        String oaidentifier = oaGeneralForm.getIdentifier();          if (MiscUtil.isEmpty(oaidentifier)) {              log.info("Empty OA identifier");              errors.add(LanguageHelper.getErrorString("validation.general.oaidentifier.empty", request)); @@ -310,66 +297,18 @@ public class EditOAAction extends BasicAction {              }          } -        // set UserSpezific OA Parameters -        if (!authUser.isAdmin()) generateUserSpecificConfigurationOptions(userdb); - -        // check form -        OAGeneralConfigValidation validatior_general = new OAGeneralConfigValidation(); -        OAPVP2ConfigValidation validatior_pvp2 = new OAPVP2ConfigValidation(); -        OASAML1ConfigValidation validatior_saml1 = new OASAML1ConfigValidation(); -        OASSOConfigValidation validatior_sso = new OASSOConfigValidation(); -        OASTORKConfigValidation validator_stork = new OASTORKConfigValidation(); -        FormularCustomizationValitator validator_form = new FormularCustomizationValitator(); -        OAOAUTH20ConfigValidation validatior_oauth20 = new OAOAUTH20ConfigValidation(); -        OAFileUploadValidation valiator_fileUpload = new OAFileUploadValidation(); - -        errors.addAll(validatior_general.validate(generalOA, authUser.isAdmin(), request)); -        errors.addAll(validatior_pvp2.validate(pvp2OA, request)); -        errors.addAll(validatior_saml1.validate(saml1OA, generalOA, request)); -        errors.addAll(validatior_sso.validate(ssoOA, authUser.isAdmin(), request)); -        errors.addAll(validator_stork.validate(storkOA, request)); -        errors.addAll(validator_form.validate(formOA, request)); -        errors.addAll(validatior_oauth20.validate(oauth20OA, request)); - -        //validate BKU-selection template -        List<String> templateError = valiator_fileUpload.validate(generalOA.getBkuSelectionFileUploadFileName() -                , generalOA.getBkuSelectionFileUpload(), "validation.general.bkuselection", bkuSelectionForm, request); -        if (templateError != null && templateError.size() == 0) { -            if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) -                session.setAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE, bkuSelectionForm); - -            else -                bkuSelectionForm = (Map<String, byte[]>) session.getAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE); - -        } else { -            errors.addAll(templateError); - -        } - -        //validate send-assertion template -        templateError = valiator_fileUpload.validate(generalOA.getSendAssertionFileUploadFileName() -                , generalOA.getSendAssertionFileUpload(), "validation.general.sendassertion", sendAssertionForm, request); -        if (templateError != null && templateError.size() == 0) { -            if (sendAssertionForm != null && sendAssertionForm.size() > 0) -                session.setAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE, sendAssertionForm); - -            else -                sendAssertionForm = (Map<String, byte[]>) session.getAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE); - -        } else { -            errors.addAll(templateError); - -        } - +        //validate forms +        for (IOnlineApplicationData form : formList.values()) +        	errors.addAll(form.validate(oaGeneralForm, authUser, request));          // Do not allow SSO in combination with special BKUSelection features -        if (ssoOA.isUseSSO() && (formOA.isOnlyMandateAllowed() || !formOA.isShowMandateLoginButton())) { +        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 " + generalOA.getIdentifier() + " has some errors."); +            log.info("OAConfiguration with ID " + oaGeneralForm.getIdentifier() + " has some errors.");              for (String el : errors)                  addActionError(el); @@ -383,7 +322,7 @@ public class EditOAAction extends BasicAction {              if (onlineapplication == null) {                  onlineapplication = new OnlineApplication(); -                newentry = true; +                onlineapplication.setIsNew(true);                  onlineapplication.setIsActive(false);                  if (!authUser.isAdmin()) { @@ -393,7 +332,8 @@ public class EditOAAction extends BasicAction {                      isMetaDataRefreshRequired = true;              } else { -                if (!authUser.isAdmin() && !onlineapplication.getPublicURLPrefix().equals(generalOA.getIdentifier())) { +            	onlineapplication.setIsNew(false); +                if (!authUser.isAdmin() && !onlineapplication.getPublicURLPrefix().equals(oaGeneralForm.getIdentifier())) {                      onlineapplication.setIsAdminRequired(true);                      onlineapplication.setIsActive(false); @@ -403,7 +343,7 @@ public class EditOAAction extends BasicAction {              }              if ((onlineapplication.isIsAdminRequired() == null) -                    || (authUser.isAdmin() && generalOA.isActive() && onlineapplication.isIsAdminRequired())) { +                    || (authUser.isAdmin() && oaGeneralForm.isActive() && onlineapplication.isIsAdminRequired())) {                  onlineapplication.setIsAdminRequired(false);                  isMetaDataRefreshRequired = true; @@ -422,7 +362,7 @@ public class EditOAAction extends BasicAction {              }              //save OA configuration -            String error = saveOAConfigToDatabase(onlineapplication, newentry); +            String error = saveOAConfigToDatabase(onlineapplication);              if (MiscUtil.isNotEmpty(error)) {                  log.warn("OA configuration can not be stored!");                  addActionError(error); @@ -433,13 +373,13 @@ public class EditOAAction extends BasicAction {              }              //set metadata reload flag if reload is required -            if (pvp2OA.getMetaDataURL() != null) { +            if (getPvp2OA().getMetaDataURL() != null) {                  try {                      if (isMetaDataRefreshRequired -                            || !pvp2OA.getMetaDataURL().equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL()) -                            || pvp2OA.getFileUpload() != null -                            || pvp2OA.isReLoad()) { +                            || !getPvp2OA().getMetaDataURL().equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL()) +                            || getPvp2OA().getFileUpload() != null +                            || getPvp2OA().isReLoad()) {                          log.debug("Set PVP2 Metadata refresh flag.");                          MOAIDConfiguration moaconfig = ConfigurationDBRead.getMOAIDConfiguration(); @@ -474,7 +414,7 @@ public class EditOAAction extends BasicAction {              if (openUsers != null) numusers = openUsers.size();              try { -                addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.success.admin", generalOA.getIdentifier(), request)); +                addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.success.admin", oaGeneralForm.getIdentifier(), request));                  if (numusers > 0 || numoas > 0) MailHelper.sendAdminMail(numoas, numusers); @@ -483,7 +423,7 @@ public class EditOAAction extends BasicAction {              }          } else -            addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.success", generalOA.getIdentifier(), request)); +            addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.success", oaGeneralForm.getIdentifier(), request));          //remove session attributes          session.setAttribute(Constants.SESSION_OAID, null); @@ -514,7 +454,7 @@ public class EditOAAction extends BasicAction {          session.setAttribute(Constants.SESSION_OAID, null); -        addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.cancle", generalOA.getIdentifier(), request)); +        addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.cancle", getGeneralOA().getIdentifier(), request));          ConfigurationDBUtils.closeSession(); @@ -560,7 +500,7 @@ public class EditOAAction extends BasicAction {              return Constants.STRUTS_SUCCESS;          } -        String oaidentifier = generalOA.getIdentifier(); +        String oaidentifier = getGeneralOA().getIdentifier();          if (MiscUtil.isEmpty(oaidentifier)) {              log.info("Empty OA identifier");              addActionError(LanguageHelper.getErrorString("validation.general.oaidentifier.empty", request)); @@ -620,13 +560,13 @@ public class EditOAAction extends BasicAction {              ConfigurationDBUtils.closeSession(); -            addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.delete.message", generalOA.getIdentifier(), request)); +            addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.delete.message", oaidentifier, request));              return Constants.STRUTS_SUCCESS;          } else {              ConfigurationDBUtils.closeSession(); -            addActionError(LanguageHelper.getGUIString("webpages.oaconfig.delete.error", generalOA.getIdentifier(), request)); +            addActionError(LanguageHelper.getGUIString("webpages.oaconfig.delete.error", oaidentifier, request));              return Constants.STRUTS_SUCCESS;          } @@ -712,335 +652,13 @@ public class EditOAAction extends BasicAction {          return Constants.STRUTS_SUCCESS;      } -    private String saveOAConfigToDatabase(OnlineApplication dboa, boolean newentry) { - -        AuthComponentOA authoa = dboa.getAuthComponentOA(); -        if (authoa == null) { -            authoa = new AuthComponentOA(); -            dboa.setAuthComponentOA(authoa); -        } - -        if (authUser.isAdmin()) dboa.setIsActive(generalOA.isActive()); - -        dboa.setFriendlyName(generalOA.getFriendlyName()); -        dboa.setCalculateHPI(generalOA.isCalculateHPI()); -        dboa.setRemoveBPKFromAuthBlock(generalOA.isHideBPKAuthBlock()); - -        if (authUser.isAdmin()) -            dboa.setKeyBoxIdentifier(MOAKeyBoxSelector.fromValue(generalOA.getKeyBoxIdentifier())); -        else { -            if (newentry) dboa.setKeyBoxIdentifier(MOAKeyBoxSelector.SECURE_SIGNATURE_KEYPAIR); -        } - -        dboa.setPublicURLPrefix(generalOA.getIdentifier()); - -        if (generalOA.isBusinessService() || onlyBusinessService) { - -            dboa.setType(Constants.MOA_CONFIG_BUSINESSSERVICE); - -            String num = generalOA.getIdentificationNumber().replaceAll(" ", ""); -            if (num.startsWith(Constants.IDENIFICATIONTYPE_FN)) { -                num = num.substring(Constants.IDENIFICATIONTYPE_FN.length()); - -                num = at.gv.egovernment.moa.util.StringUtils.deleteLeadingZeros(num); - -                // num = StringUtils.leftPad(num, 7, '0'); -            } - -            if (num.startsWith(Constants.IDENIFICATIONTYPE_ZVR)) -                num = num.substring(Constants.IDENIFICATIONTYPE_ZVR.length()); - -            if (num.startsWith(Constants.IDENIFICATIONTYPE_ERSB)) -                num = num.substring(Constants.IDENIFICATIONTYPE_ERSB.length()); - -            IdentificationNumber idnumber = new IdentificationNumber(); - -            if (generalOA.getIdentificationType().equals(Constants.IDENIFICATIONTYPE_STORK)) { -                idnumber.setValue(Constants.PREFIX_STORK + "AT" + "+" + num); -                idnumber.setType(Constants.BUSINESSSERVICENAMES.get(generalOA.getIdentificationType())); -            } else { -                idnumber.setValue(Constants.PREFIX_WPBK + generalOA.getIdentificationType() + "+" + num); -                idnumber.setType(Constants.BUSINESSSERVICENAMES.get(generalOA.getIdentificationType())); -            } - - -            authoa.setIdentificationNumber(idnumber); - -        } else { -            dboa.setType(null); - -            if (authUser.isAdmin()) { -                if (MiscUtil.isNotEmpty(generalOA.getTarget_admin()) && generalOA.isAdminTarget()) { -                    dboa.setTarget(generalOA.getTarget_admin()); -                    dboa.setTargetFriendlyName(generalOA.getTargetFriendlyName()); - -                } else { - -                    String target = generalOA.getTarget(); - -                    if (MiscUtil.isNotEmpty(generalOA.getTarget_subsector()) && subTargetSet) -                        dboa.setTarget(target + "-" + generalOA.getTarget_subsector()); -                    else -                        dboa.setTarget(target); - -                    String targetname = TargetValidator.getTargetFriendlyName(target); -                    if (MiscUtil.isNotEmpty(targetname)) dboa.setTargetFriendlyName(targetname); - -                } - -            } else { - -                if (MiscUtil.isNotEmpty(generalOA.getTarget())) { - -                    String target = generalOA.getTarget(); - -                    if (MiscUtil.isNotEmpty(generalOA.getTarget_subsector()) && subTargetSet) -                        dboa.setTarget(target + "-" + generalOA.getTarget_subsector()); - -                    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); -        if (authUser.isAdmin()) { -            bkuruls.setHandyBKU(generalOA.getBkuHandyURL()); -            bkuruls.setLocalBKU(generalOA.getBkuLocalURL()); -            bkuruls.setOnlineBKU(generalOA.getBkuOnlineURL()); -        } - -        TemplatesType templates = authoa.getTemplates(); -        if (templates == null) { -            templates = new TemplatesType(); -            authoa.setTemplates(templates); -        } - -        //store BKU-selection and send-assertion templates -        if (authUser.isAdmin()) { - -            if (generalOA.isDeleteBKUTemplate()) -                templates.setBKUSelectionTemplate(null); - -            if (generalOA.isDeleteSendAssertionTemplate()) -                templates.setSendAssertionTemplate(null); - - -            if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) { -                TransformsInfoType template = new TransformsInfoType(); - -                Iterator<String> interator = bkuSelectionForm.keySet().iterator(); -                template.setFilename(interator.next()); -                template.setTransformation(bkuSelectionForm.get( -                        template.getFilename())); - -                templates.setBKUSelectionTemplate(template); -            } - -            if (sendAssertionForm != null && sendAssertionForm.size() > 0) { -                TransformsInfoType template = new TransformsInfoType(); - -                Iterator<String> interator = sendAssertionForm.keySet().iterator(); -                template.setFilename(interator.next()); -                template.setTransformation(sendAssertionForm.get( -                        template.getFilename())); - -                templates.setSendAssertionTemplate(template); -            } -        } - - -        //store BKU-selection customization -        BKUSelectionCustomizationType bkuselectioncustom = templates.getBKUSelectionCustomization(); -        if (bkuselectioncustom == null) { -            bkuselectioncustom = new BKUSelectionCustomizationType(); -            templates.setBKUSelectionCustomization(bkuselectioncustom); -        } - -        Mandates mandates = new Mandates(); -        if (generalOA.isUseMandates()) { -            mandates.setProfiles(generalOA.getMandateProfiles()); - -        } else { -            mandates.setProfiles(new String()); -        } - -        authoa.setMandates(mandates); -        bkuselectioncustom.setMandateLoginButton(MiscUtil.isNotEmpty(generalOA.getMandateProfiles())); -        bkuselectioncustom.setOnlyMandateLoginAllowed(formOA.isOnlyMandateAllowed()); - -        if (authUser.isAdmin()) { -            templates.setAditionalAuthBlockText(generalOA.getAditionalAuthBlockText()); - -            List<TemplateType> template = templates.getTemplate(); -            if (generalOA.isLegacy()) { - -                if (template == null) -                    template = new ArrayList<TemplateType>(); -                else -                    template.clear(); - -                if (MiscUtil.isNotEmpty(generalOA.getSLTemplateURL1())) { -                    TemplateType el = new TemplateType(); -                    el.setURL(generalOA.getSLTemplateURL1()); -                    template.add(el); -                } else -                    template.add(new TemplateType()); -                if (MiscUtil.isNotEmpty(generalOA.getSLTemplateURL2())) { -                    TemplateType el = new TemplateType(); -                    el.setURL(generalOA.getSLTemplateURL2()); -                    template.add(el); -                } else -                    template.add(new TemplateType()); -                if (MiscUtil.isNotEmpty(generalOA.getSLTemplateURL3())) { -                    TemplateType el = new TemplateType(); -                    el.setURL(generalOA.getSLTemplateURL3()); -                    template.add(el); -                } else -                    template.add(new TemplateType()); - -            } else { -                if (template != null && template.size() > 0) template.clear(); -            } - -            bkuselectioncustom.setBackGroundColor(parseColor(formOA.getBackGroundColor())); -            bkuselectioncustom.setFrontColor(parseColor(formOA.getFrontColor())); - -            bkuselectioncustom.setHeaderBackGroundColor(parseColor(formOA.getHeader_BackGroundColor())); -            bkuselectioncustom.setHeaderFrontColor(parseColor(formOA.getHeader_FrontColor())); -            bkuselectioncustom.setHeaderText(formOA.getHeader_text()); - -            bkuselectioncustom.setButtonBackGroundColor(parseColor(formOA.getButton_BackGroundColor())); -            bkuselectioncustom.setButtonBackGroundColorFocus(parseColor(formOA.getButton_BackGroundColorFocus())); -            bkuselectioncustom.setButtonFontColor(parseColor(formOA.getButton_FrontColor())); - -            if (MiscUtil.isNotEmpty(formOA.getAppletRedirectTarget())) -                bkuselectioncustom.setAppletRedirectTarget(formOA.getAppletRedirectTarget()); - -            bkuselectioncustom.setFontType(formOA.getFontType()); - -            bkuselectioncustom.setAppletHeight(formOA.getApplet_height()); -            bkuselectioncustom.setAppletWidth(formOA.getApplet_width()); - -        } - -        // set default transformation if it is empty -        List<TransformsInfoType> transformsInfo = authoa.getTransformsInfo(); -        if (transformsInfo == null) { -            // TODO: set OA specific transformation if it is required - -        } - -        OAPVP2 pvp2 = authoa.getOAPVP2(); -        if (pvp2 == null) { -            pvp2 = new OAPVP2(); -            authoa.setOAPVP2(pvp2); -        } - -        try { - -            if (pvp2OA.getFileUpload() != null) {  -            	pvp2.setCertificate(pvp2OA.getCertificate()); -            	pvp2OA.setReLoad(true); -            } - -        } catch (CertificateException e) { -            log.info("Uploaded Certificate can not be found", e); -            return LanguageHelper.getErrorString("validation.pvp2.certificate.notfound", request); -        } catch (IOException e) { -            log.info("Uploaded Certificate can not be parsed", e); -            return LanguageHelper.getErrorString("validation.pvp2.certificate.format", request); -        } - -        if (pvp2OA.getMetaDataURL() != null &&  -        		!pvp2OA.getMetaDataURL().equals(pvp2.getMetadataURL())) -        	pvp2OA.setReLoad(true);         -        pvp2.setMetadataURL(pvp2OA.getMetaDataURL()); -         -        if (pvp2OA.isReLoad()) -        	pvp2.setUpdateRequiredItem(new Date()); - -        OASAML1 saml1 = authoa.getOASAML1(); -        if (saml1 == null) { -            saml1 = new OASAML1(); -            authoa.setOASAML1(saml1); -            saml1.setIsActive(false); -        } - -        if (authUser.isAdmin()) { -            saml1.setIsActive(saml1OA.isActive()); -        } - -        if (saml1.isIsActive() != null && saml1.isIsActive()) { -            saml1.setProvideAUTHBlock(saml1OA.isProvideAuthBlock()); -            saml1.setProvideCertificate(saml1OA.isProvideCertificate()); -            saml1.setProvideFullMandatorData(saml1OA.isProvideFullMandateData()); -            saml1.setProvideIdentityLink(saml1OA.isProvideIdentityLink()); -            saml1.setProvideStammzahl(saml1OA.isProvideStammZahl()); -            saml1.setUseCondition(saml1OA.isUseCondition()); -            saml1.setConditionLength(BigInteger.valueOf(saml1OA.getConditionLength())); -            // TODO: set sourceID -            // saml1.setSourceID(""); -        } - -        OASSO sso = authoa.getOASSO(); -        if (sso == null) { -            sso = new OASSO(); -            authoa.setOASSO(sso); -            sso.setAuthDataFrame(true); -        } -        sso.setUseSSO(ssoOA.isUseSSO()); - -        if (authUser.isAdmin()) sso.setAuthDataFrame(ssoOA.isShowAuthDataFrame()); - -        sso.setSingleLogOutURL(ssoOA.getSingleLogOutURL()); - -        if (oauth20OA != null) { -            log.debug("Saving OAuth 2.0 configuration:"); -            OAOAUTH20 oaOAuth20 = authoa.getOAOAUTH20(); -            if (oaOAuth20 == null) { -                oaOAuth20 = new OAOAUTH20(); -                authoa.setOAOAUTH20(oaOAuth20); -            } - -            oaOAuth20.setOAuthClientId(generalOA.getIdentifier()); -            // oaOAuth20.setOAuthClientSecret(oauth20OA.getClientSecret()); -            oaOAuth20.setOAuthRedirectUri(oauth20OA.getRedirectUri()); -            log.debug("client id: " + oauth20OA.getClientId()); -            log.debug("client secret: " + oauth20OA.getClientSecret()); -            log.debug("redirect uri:" + oauth20OA.getRedirectUri()); - -            oaOAuth20.setOAuthClientSecret((String) request.getSession().getAttribute(Constants.SESSION_OAUTH20SECRET)); -            request.getSession().setAttribute(Constants.SESSION_OAUTH20SECRET, null); - -        } - - -        // fetch stork configuration from database model -        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(storkOA.isStorkLogonEnabled()); -        stork.setQaa(storkOA.getQaa()); -        stork.setOAAttributes(storkOA.getAttributes()); -        stork.setVidpEnabled(storkOA.isVidpEnabled()); -        stork.setRequireConsent(storkOA.isRequireConsent()); -        stork.setAttributeProviders(storkOA.getAttributeProviderPlugins()); -        stork.setCPEPS(storkOA.getEnabledCPEPS()); - +    private String saveOAConfigToDatabase(OnlineApplication dboa) { +    	 +    	for (IOnlineApplicationData form : formList.values()) +    		form.store(dboa, authUser, request); +    	          try { -            if (newentry) { +            if (dboa.isIsNew()) {                  ConfigurationDBUtils.save(dboa);                  if (!authUser.isAdmin()) { @@ -1063,41 +681,6 @@ public class EditOAAction extends BasicAction {          return null;      } -    private String parseColor(String color) { -        String value = ""; - -        if (MiscUtil.isNotEmpty(color)) { -            if (!color.startsWith("#")) -                value = "#" + color; -            else -                value = color; -        } -        return value; -    } - -    private void generateUserSpecificConfigurationOptions(UserDatabase userdb) { - -        if (userdb.isIsMandateUser() != null && userdb.isIsMandateUser()) { -            String bpk = userdb.getBpk(); -            if (bpk.startsWith(Constants.IDENIFICATIONTYPE_BASEID_FN) || bpk.startsWith(Constants.IDENIFICATIONTYPE_BASEID_ZVR) || bpk.startsWith(Constants.IDENIFICATIONTYPE_STORK)) { -                onlyBusinessService = true; -                generalOA.setBusinessService(true); -            } - -            deaktivededBusinessService = true; - -            String[] split = bpk.split("\\+"); -            generalOA.setIdentificationType(split[1].substring(1)); - -            if (bpk.startsWith(Constants.IDENIFICATIONTYPE_BASEID_FN)) -                generalOA.setIdentificationNumber(at.gv.egovernment.moa.util.StringUtils.deleteLeadingZeros(split[2])); -            else -                generalOA.setIdentificationNumber(split[2]); - -        } - -    } -      public String setGeneralOAConfig() {          return Constants.STRUTS_SUCCESS; @@ -1123,44 +706,53 @@ public class EditOAAction extends BasicAction {          return Constants.STRUTS_SUCCESS;      } +     +    public OAAuthenticationData getAuthOA() { +        return (OAAuthenticationData) formList.get(new OAAuthenticationData().getName()); +    } + +    public void setAuthOA(OAAuthenticationData generalOA) { +    	formList.put(generalOA.getName(), generalOA); +    } +          public OAGeneralConfig getGeneralOA() { -        return generalOA; +        return (OAGeneralConfig) formList.get(new OAGeneralConfig().getName());      }      public void setGeneralOA(OAGeneralConfig generalOA) { -        this.generalOA = generalOA; +    	formList.put(generalOA.getName(), generalOA);      }      public OAPVP2Config getPvp2OA() { -        return pvp2OA; +        return (OAPVP2Config) formList.get(new OAPVP2Config().getName());      }      public void setPvp2OA(OAPVP2Config pvp2oa) { -        pvp2OA = pvp2oa; +    	formList.put(pvp2oa.getName(), pvp2oa);      }      public OASAML1Config getSaml1OA() { -        return saml1OA; +        return (OASAML1Config) formList.get(new OASAML1Config().getName());      }      public void setSaml1OA(OASAML1Config saml1oa) { -        saml1OA = saml1oa; +    	formList.put(saml1oa.getName(), saml1oa);      }      public OASSOConfig getSsoOA() { -        return ssoOA; +        return (OASSOConfig) formList.get(new OASSOConfig().getName());      }      public void setSsoOA(OASSOConfig ssoOA) { -        this.ssoOA = ssoOA; +    	formList.put(ssoOA.getName(), ssoOA);      }      public OASTORKConfig getStorkOA() { -        return storkOA; +        return (OASTORKConfig) formList.get(new OASTORKConfig().getName());      }      public void setStorkOA(OASTORKConfig storkOA) { -        this.storkOA = storkOA; +    	formList.put(storkOA.getName(), storkOA);      }      /** @@ -1206,61 +798,17 @@ public class EditOAAction extends BasicAction {      }      /** -     * @return the onlyBusinessService -     */ -    public boolean isOnlyBusinessService() { -        return onlyBusinessService; -    } - -    /** -     * @param onlyBusinessService the onlyBusinessService to set -     */ -    public void setOnlyBusinessService(boolean onlyBusinessService) { -        this.onlyBusinessService = onlyBusinessService; -    } - - -    /** -     * @return the subTargetSet -     */ -    public boolean isSubTargetSet() { -        return subTargetSet; -    } - -    /** -     * @param subTargetSet the subTargetSet to set -     */ -    public void setSubTargetSet(boolean subTargetSet) { -        this.subTargetSet = subTargetSet; -    } - -    /** -     * @return the deaktivededBusinessService -     */ -    public boolean isDeaktivededBusinessService() { -        return deaktivededBusinessService; -    } - - -    /** -     * @param deaktivededBusinessService the deaktivededBusinessService to set -     */ -    public void setDeaktivededBusinessService(boolean deaktivededBusinessService) { -        this.deaktivededBusinessService = deaktivededBusinessService; -    } - -    /**       * @return the formOA       */      public FormularCustomization getFormOA() { -        return formOA; +        return (FormularCustomization) formList.get(new FormularCustomization(null).getName());      }      /**       * @param formOA the formOA to set       */      public void setFormOA(FormularCustomization formOA) { -        this.formOA = formOA; +    	formList.put(formOA.getName(), formOA);      }      /** @@ -1271,11 +819,11 @@ public class EditOAAction extends BasicAction {      }      public OAOAuth20Config getOauth20OA() { -        return oauth20OA; +        return (OAOAuth20Config) formList.get(new OAOAuth20Config().getName());      }      public void setOauth20OA(OAOAuth20Config oauth20OA) { -        this.oauth20OA = oauth20OA; +    	formList.put(oauth20OA.getName(), oauth20OA);      }  } diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAAuthenticationDataValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAAuthenticationDataValidation.java new file mode 100644 index 000000000..0bbf2116d --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAAuthenticationDataValidation.java @@ -0,0 +1,151 @@ +/******************************************************************************* + * 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.validation.oa; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.log4j.Logger; + +import at.gv.egovernment.moa.id.commons.validation.ValidationHelper; +import at.gv.egovernment.moa.id.configuration.data.oa.OAAuthenticationData; +import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; +import at.gv.egovernment.moa.util.MiscUtil; + +public class OAAuthenticationDataValidation { + +	private static final Logger log = Logger.getLogger(OASSOConfigValidation.class); +	 +	public List<String> validate(OAAuthenticationData form, boolean isAdmin, HttpServletRequest request) { +		 +		List<String> errors = new ArrayList<String>(); +		String check; +		 + +		 +		//Check BKU URLs +		if (isAdmin) { +			check =form.getBkuHandyURL(); +			if (MiscUtil.isNotEmpty(check)) { +//				log.info("Empty Handy-BKU URL"); +//				errors.add(LanguageHelper.getErrorString("validation.general.bku.handy.empty")); +//				 +//			} else { +				if (!ValidationHelper.validateURL(check)) { +					log.info("Not valid Handy-BKU URL"); +					errors.add(LanguageHelper.getErrorString("validation.general.bku.handy.valid", request)); +				} +			} +			 +			check =form.getBkuLocalURL(); +			if (MiscUtil.isNotEmpty(check)) { +//				log.info("Empty Local-BKU URL"); +//				errors.add(LanguageHelper.getErrorString("validation.general.bku.local.empty")); +//				 +//			} else { +				if (!ValidationHelper.validateURL(check)) { +					log.info("Not valid Online-BKU URL"); +					errors.add(LanguageHelper.getErrorString("validation.general.bku.local.valid", request)); +				} +			} +			 +			check =form.getBkuOnlineURL(); +			if (MiscUtil.isNotEmpty(check)) { +//				log.info("Empty Online-BKU URL"); +//				errors.add(LanguageHelper.getErrorString("validation.general.bku.online.empty")); +//				 +//			} else { +				if (!ValidationHelper.validateURL(check)) { +					log.info("Not valid Online-BKU URL"); +					errors.add(LanguageHelper.getErrorString("validation.general.bku.online.valid", request)); +				} +			} +		} +		 +		if (isAdmin) { +			//check KeyBoxIdentifier +			check = form.getKeyBoxIdentifier(); +			if (MiscUtil.isEmpty(check)) { +				log.info("Empty KeyBoxIdentifier"); +				errors.add(LanguageHelper.getErrorString("validation.general.keyboxidentifier.empty", request)); +			} else { +				Map<String, String> list = form.getKeyBoxIdentifierList(); +				if (!list.containsKey(check)) { +					log.info("Not valid KeyBoxIdentifier " + check); +					errors.add(LanguageHelper.getErrorString("validation.general.keyboxidentifier.valid", request)); +				} +			} +			 +			//check LegacyMode SLTemplates +			if (form.isLegacy()) { +				if (MiscUtil.isEmpty(form.getSLTemplateURL1()) && +					MiscUtil.isEmpty(form.getSLTemplateURL2()) && +					MiscUtil.isEmpty(form.getSLTemplateURL3()) ) { +						log.info("Empty OA-specific SecurityLayer Templates"); +						errors.add(LanguageHelper.getErrorString("validation.general.sltemplates.empty", request)); +						 +				} else { +					check = form.getSLTemplateURL1(); +					if (MiscUtil.isNotEmpty(check) && +						ValidationHelper.isNotValidIdentityLinkSigner(check)	) { +							log.info("First OA-specific SecurityLayer Templates is not valid"); +							errors.add(LanguageHelper.getErrorString("validation.general.sltemplate1.valid", request)); +					} +					check = form.getSLTemplateURL2(); +					if (MiscUtil.isNotEmpty(check) && +						ValidationHelper.isNotValidIdentityLinkSigner(check)	) { +							log.info("Second OA-specific SecurityLayer Templates is not valid"); +							errors.add(LanguageHelper.getErrorString("validation.general.sltemplate2.valid", request)); +					} +					check = form.getSLTemplateURL3(); +					if (MiscUtil.isNotEmpty(check) && +						ValidationHelper.isNotValidIdentityLinkSigner(check)	) { +							log.info("Third OA-specific SecurityLayer Templates is not valid"); +							errors.add(LanguageHelper.getErrorString("validation.general.sltemplate3.valid", request)); +					} +				}	 +			} +		} +		 +		//check Mandate Profiles +		check = form.getMandateProfiles(); +		if (MiscUtil.isNotEmpty(check)) { +			 +			if (!form.isUseMandates()) { +				log.info("MandateProfiles configured but useMandates is false."); +				errors.add(LanguageHelper.getErrorString("validation.general.mandate.usemandate", request)); +			} +			 +			if (ValidationHelper.containsPotentialCSSCharacter(check, true)) { +				log.warn("MandateProfiles contains potentail XSS characters: " + check); +				errors.add(LanguageHelper.getErrorString("validation.general.mandate.profiles",  +						new Object[] {ValidationHelper.getPotentialCSSCharacter(true)}, request )); +			} +		} +				 +		return errors; +	} +} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAGeneralConfigValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAGeneralConfigValidation.java index 5f563ac49..82037e39d 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAGeneralConfigValidation.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAGeneralConfigValidation.java @@ -24,7 +24,6 @@ package at.gv.egovernment.moa.id.configuration.validation.oa;  import java.util.ArrayList;  import java.util.List; -import java.util.Map;  import javax.servlet.http.HttpServletRequest; @@ -45,58 +44,7 @@ public class OAGeneralConfigValidation {  		List<String> errors = new ArrayList<String>();  		String check; -		 -		if (isAdmin) { -			//validate aditionalAuthBlockText -			check = form.getAditionalAuthBlockText(); -			if (MiscUtil.isNotEmpty(check)) { -				if (ValidationHelper.containsPotentialCSSCharacter(check, false)) { -					log.warn("AditionalAuthBlockText contains potentail XSS characters: " + check); -					errors.add(LanguageHelper.getErrorString("validation.general.aditionalauthblocktext",  -							new Object[] {ValidationHelper.getPotentialCSSCharacter(false)}, request )); -				} -			} -		} -		 -		//Check BKU URLs -		if (isAdmin) { -			check =form.getBkuHandyURL(); -			if (MiscUtil.isNotEmpty(check)) { -//				log.info("Empty Handy-BKU URL"); -//				errors.add(LanguageHelper.getErrorString("validation.general.bku.handy.empty")); -//				 -//			} else { -				if (!ValidationHelper.validateURL(check)) { -					log.info("Not valid Handy-BKU URL"); -					errors.add(LanguageHelper.getErrorString("validation.general.bku.handy.valid", request)); -				} -			} -			check =form.getBkuLocalURL(); -			if (MiscUtil.isNotEmpty(check)) { -//				log.info("Empty Local-BKU URL"); -//				errors.add(LanguageHelper.getErrorString("validation.general.bku.local.empty")); -//				 -//			} else { -				if (!ValidationHelper.validateURL(check)) { -					log.info("Not valid Online-BKU URL"); -					errors.add(LanguageHelper.getErrorString("validation.general.bku.local.valid", request)); -				} -			} -			 -			check =form.getBkuOnlineURL(); -			if (MiscUtil.isNotEmpty(check)) { -//				log.info("Empty Online-BKU URL"); -//				errors.add(LanguageHelper.getErrorString("validation.general.bku.online.empty")); -//				 -//			} else { -				if (!ValidationHelper.validateURL(check)) { -					log.info("Not valid Online-BKU URL"); -					errors.add(LanguageHelper.getErrorString("validation.general.bku.online.valid", request)); -				} -			} -		} -		  		//check OA FriendlyName  		check = form.getFriendlyName();  		if (MiscUtil.isNotEmpty(check)) { @@ -109,70 +57,7 @@ public class OAGeneralConfigValidation {  			log.info("OA friendlyName is empty");  			errors.add(LanguageHelper.getErrorString("validation.general.oafriendlyname.empty", request));  		} -		 -		if (isAdmin) { -			//check KeyBoxIdentifier -			check = form.getKeyBoxIdentifier(); -			if (MiscUtil.isEmpty(check)) { -				log.info("Empty KeyBoxIdentifier"); -				errors.add(LanguageHelper.getErrorString("validation.general.keyboxidentifier.empty", request)); -			} else { -				Map<String, String> list = form.getKeyBoxIdentifierList(); -				if (!list.containsKey(check)) { -					log.info("Not valid KeyBoxIdentifier " + check); -					errors.add(LanguageHelper.getErrorString("validation.general.keyboxidentifier.valid", request)); -				} -			} -			 -			//check LegacyMode SLTemplates -			if (form.isLegacy()) { -				if (MiscUtil.isEmpty(form.getSLTemplateURL1()) && -					MiscUtil.isEmpty(form.getSLTemplateURL2()) && -					MiscUtil.isEmpty(form.getSLTemplateURL3()) ) { -						log.info("Empty OA-specific SecurityLayer Templates"); -						errors.add(LanguageHelper.getErrorString("validation.general.sltemplates.empty", request)); -						 -				} else { -					check = form.getSLTemplateURL1(); -					if (MiscUtil.isNotEmpty(check) && -						ValidationHelper.isNotValidIdentityLinkSigner(check)	) { -							log.info("First OA-specific SecurityLayer Templates is not valid"); -							errors.add(LanguageHelper.getErrorString("validation.general.sltemplate1.valid", request)); -					} -					check = form.getSLTemplateURL2(); -					if (MiscUtil.isNotEmpty(check) && -						ValidationHelper.isNotValidIdentityLinkSigner(check)	) { -							log.info("Second OA-specific SecurityLayer Templates is not valid"); -							errors.add(LanguageHelper.getErrorString("validation.general.sltemplate2.valid", request)); -					} -					check = form.getSLTemplateURL3(); -					if (MiscUtil.isNotEmpty(check) && -						ValidationHelper.isNotValidIdentityLinkSigner(check)	) { -							log.info("Third OA-specific SecurityLayer Templates is not valid"); -							errors.add(LanguageHelper.getErrorString("validation.general.sltemplate3.valid", request)); -					} -				}	 -			} -		} -		 -		//check Mandate Profiles -		check = form.getMandateProfiles(); -		if (MiscUtil.isNotEmpty(check)) { -			 -			if (!form.isUseMandates()) { -				log.info("MandateProfiles configured but useMandates is false."); -				errors.add(LanguageHelper.getErrorString("validation.general.mandate.usemandate", request)); -			} -			 -			if (ValidationHelper.containsPotentialCSSCharacter(check, true)) { -				log.warn("MandateProfiles contains potentail XSS characters: " + check); -				errors.add(LanguageHelper.getErrorString("validation.general.mandate.profiles",  -						new Object[] {ValidationHelper.getPotentialCSSCharacter(true)}, request )); -			} -		} -		 -		 -						 +							  		boolean businessservice = form.isBusinessService();          if (businessservice) { diff --git a/id/ConfigWebTool/src/main/resources/applicationResources_de.properties b/id/ConfigWebTool/src/main/resources/applicationResources_de.properties index 916206cf1..3606eab38 100644 --- a/id/ConfigWebTool/src/main/resources/applicationResources_de.properties +++ b/id/ConfigWebTool/src/main/resources/applicationResources_de.properties @@ -94,6 +94,10 @@ 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.moaconfig.save.success=Die MOA-ID Konfiguration wurde erfolgreich gespeichert.  webpages.moaconfig.header=Allgemeine Konfiguration diff --git a/id/ConfigWebTool/src/main/resources/applicationResources_en.properties b/id/ConfigWebTool/src/main/resources/applicationResources_en.properties index 4163cbc37..256530a97 100644 --- a/id/ConfigWebTool/src/main/resources/applicationResources_en.properties +++ b/id/ConfigWebTool/src/main/resources/applicationResources_en.properties @@ -95,6 +95,11 @@ 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 Konfiguration +webpages.interfederation.list.header=Liste aller konfiguerierten IDPs  + +  webpages.moaconfig.save.success=MOA-ID has been successfully saved.  webpages.moaconfig.header=General configuration  webpages.oaconfig.general.publicURLPreFix=Public URL Prefix diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp index 20a5ad1ea..95a93eecc 100644 --- a/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp +++ b/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp @@ -186,36 +186,36 @@  						<div class="oa_config_block">  							<h3><%=LanguageHelper.getGUIString("webpages.oaconfig.general.bku.header", request) %></h3> -							<s:textfield name="generalOA.bkuOnlineURL"  -								value="%{generalOA.bkuOnlineURL}"  +							<s:textfield name="authOA.bkuOnlineURL"  +								value="%{authOA.bkuOnlineURL}"   								labelposition="left"  								key="webpages.oaconfig.general.bku.online"  								cssClass="textfield_long">  							</s:textfield> -							<s:textfield name="generalOA.bkuHandyURL"  -								value="%{generalOA.bkuHandyURL}"  +							<s:textfield name="authOA.bkuHandyURL"  +								value="%{authOA.bkuHandyURL}"   								labelposition="left"  								key="webpages.oaconfig.general.bku.handy"  								cssClass="textfield_long">  							</s:textfield> -							<s:textfield name="generalOA.bkuLocalURL"  -								value="%{generalOA.bkuLocalURL}"  +							<s:textfield name="authOA.bkuLocalURL"  +								value="%{authOA.bkuLocalURL}"   								labelposition="left"  								key="webpages.oaconfig.general.bku.local"  								cssClass="textfield_long">  							</s:textfield> -							<s:radio list="generalOA.keyBoxIdentifierList" -								name="generalOA.keyBoxIdentifier" -								value="%{generalOA.keyBoxIdentifier}" +							<s:radio list="authOA.keyBoxIdentifierList" +								name="authOA.keyBoxIdentifier" +								value="%{authOA.keyBoxIdentifier}"  								labelposition="left"  								key="webpages.oaconfig.general.bku.keyboxidentifier"  								cssClass="radio">  							</s:radio>						 -							<s:checkbox name="generalOA.legacy"  -								value="%{generalOA.legacy}" +							<s:checkbox name="authOA.legacy"  +								value="%{authOA.legacy}"  								labelposition="left"  								key="webpages.oaconfig.general.bku.legacy"  								cssClass="checkbox" @@ -223,20 +223,20 @@  								id="OAislegacy">  							</s:checkbox>  							<div id="oa_config_sltemplates"> -								<s:textfield name="generalOA.SLTemplateURL1"  -									value="%{generalOA.SLTemplateURL1}"  +								<s:textfield name="authOA.SLTemplateURL1"  +									value="%{authOA.SLTemplateURL1}"   									labelposition="left"  									key="webpages.oaconfig.general.bku.sltemplate.first"  									cssClass="textfield_long">  								</s:textfield> -								<s:textfield name="generalOA.SLTemplateURL2"  -									value="%{generalOA.SLTemplateURL2}"  +								<s:textfield name="authOA.SLTemplateURL2"  +									value="%{authOA.SLTemplateURL2}"   									labelposition="left"  									key="webpages.oaconfig.general.bku.sltemplate.second"  									cssClass="textfield_long">  								</s:textfield> -								<s:textfield name="generalOA.SLTemplateURL3"  -									value="%{generalOA.SLTemplateURL3}"  +								<s:textfield name="authOA.SLTemplateURL3"  +									value="%{authOA.SLTemplateURL3}"   									labelposition="left"  									key="webpages.oaconfig.general.bku.sltemplate.third"  									cssClass="textfield_long"> @@ -245,42 +245,42 @@  							<div class="oa_protocol_area">  								<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.general.bku.bkuselection.header", request) %></h4> -								<s:iterator value="%{generalOA.bkuSelectionFileUploadFileName}" var="fileNameBKU"> +								<s:iterator value="%{formOA.bkuSelectionFileUploadFileName}" var="fileNameBKU">  									<div class="floatClass">  										<s:label key="webpages.oaconfig.general.bku.bkuselection.filename" value="%{fileNameBKU}"/>  										<s:checkbox key="webpages.oaconfig.general.bku.delete"  																labelposition="left"														  																cssClass="checkbox" -																name="generalOA.deleteBKUTemplate"></s:checkbox> +																name="formOA.deleteBKUTemplate"></s:checkbox>  									</div>  									<div id="pvp2_certificate_upload"> -										<s:file name="generalOA.bkuSelectionFileUpload" key="webpages.oaconfig.general.bku.bkuselection.upload" cssClass="textfield_long"></s:file> +										<s:file name="formOA.bkuSelectionFileUpload" key="webpages.oaconfig.general.bku.bkuselection.upload" cssClass="textfield_long"></s:file>  									</div>  								</s:iterator> -								<s:if test="generalOA.bkuSelectionFileUploadFileName.size() == 0"> +								<s:if test="formOA.bkuSelectionFileUploadFileName.size() == 0">  										<div id="pvp2_certificate_upload"> -										<s:file name="generalOA.bkuSelectionFileUpload" key="webpages.oaconfig.general.bku.bkuselection.upload" cssClass="textfield_long"></s:file> +										<s:file name="formOA.bkuSelectionFileUpload" key="webpages.oaconfig.general.bku.bkuselection.upload" cssClass="textfield_long"></s:file>  									</div>  								</s:if>  							</div>  							<div class="oa_protocol_area">  								<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.general.bku.sendassertion.header", request) %></h4> -								<s:iterator value="%{generalOA.sendAssertionFileUploadFileName}" var="fileNameBKU"> +								<s:iterator value="%{formOA.sendAssertionFileUploadFileName}" var="fileNameBKU">  									<div class="floatClass">  										<s:label 	key="webpages.oaconfig.general.bku.sendassertion.filename"   															value="%{fileNameBKU}"/>  										<s:checkbox key="webpages.oaconfig.general.bku.delete"  																labelposition="left"														  																cssClass="checkbox" -																name="generalOA.deleteSendAssertionTemplate"></s:checkbox> +																name="formOA.deleteSendAssertionTemplate"></s:checkbox>  									</div>  									<div id="pvp2_certificate_upload"> -										<s:file name="generalOA.sendAssertionFileUpload" key="webpages.oaconfig.general.bku.sendassertion.upload" cssClass="textfield_long"></s:file> +										<s:file name="formOA.sendAssertionFileUpload" key="webpages.oaconfig.general.bku.sendassertion.upload" cssClass="textfield_long"></s:file>  									</div>  								</s:iterator> -								<s:if test="generalOA.sendAssertionFileUploadFileName.size() == 0"> +								<s:if test="formOA.sendAssertionFileUploadFileName.size() == 0">  										<div id="pvp2_certificate_upload"> -										<s:file name="generalOA.sendAssertionFileUpload" key="webpages.oaconfig.general.bku.sendassertion.upload" cssClass="textfield_long"></s:file> +										<s:file name="formOA.sendAssertionFileUpload" key="webpages.oaconfig.general.bku.sendassertion.upload" cssClass="textfield_long"></s:file>  									</div>  								</s:if>  							</div> @@ -292,15 +292,15 @@  						<h3><%=LanguageHelper.getGUIString("webpages.oaconfig.general.mandate.header", request) %></h3> -						<s:checkbox name="generalOA.useMandates"  -												value="%{generalOA.useMandates}" +						<s:checkbox name="authOA.useMandates"  +												value="%{authOA.useMandates}"  												labelposition="left"  												key="webpages.oaconfig.general.mandate.usemandate"  												cssClass="checkbox">  						</s:checkbox>	 -						<s:textfield name="generalOA.mandateProfiles"  -							value="%{generalOA.mandateProfiles}"  +						<s:textfield name="authOA.mandateProfiles"  +							value="%{authOA.mandateProfiles}"   							labelposition="left"  							key="webpages.oaconfig.general.mandate.profiles"  							cssClass="textfield_long"> @@ -553,16 +553,16 @@  							cssClass="textfield_long">  						</s:checkbox> --%> -						<s:checkbox name="generalOA.HideBPKAuthBlock"  -							value="%{generalOA.HideBPKAuthBlock}" +						<s:checkbox name="formOA.HideBPKAuthBlock"  +							value="%{formOA.HideBPKAuthBlock}"  							labelposition="left"  							key="webpages.oaconfig.general.isHideBPKAuthBlock"  							cssClass="checkbox">  						</s:checkbox>  						<s:if test="authUser.isAdmin()">						 -							<s:textarea name="generalOA.aditionalAuthBlockText"  -								value="%{generalOA.aditionalAuthBlockText}"  +							<s:textarea name="formOA.aditionalAuthBlockText"  +								value="%{formOA.aditionalAuthBlockText}"   								labelposition="left"  								key="webpages.oaconfig.general.aditional.authblocktext"  								cssClass="textfield_large"> diff --git a/id/server/moa-id-commons/src/main/resources/config/bindings.xjb b/id/server/moa-id-commons/src/main/resources/config/bindings.xjb index f2701bec4..cf04319c8 100644 --- a/id/server/moa-id-commons/src/main/resources/config/bindings.xjb +++ b/id/server/moa-id-commons/src/main/resources/config/bindings.xjb @@ -1,7 +1,8 @@ -<jaxb:bindings version="1.0" +<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"> +	xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" +	jaxb:extensionBindingPrefixes="hj">  	<jaxb:bindings schemaLocation="moaid_config_2.0.xsd" node="/xsd:schema">  		<jaxb:globalBindings localScoping="toplevel"> 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/config/moaid_config_2.0.xsd index 32b4f4ba7..0715cec87 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/config/moaid_config_2.0.xsd @@ -1,6 +1,6 @@  <?xml version="1.0" encoding="UTF-8"?>  <!-- Mit XMLSpy v2013 sp1 (http://www.altova.com) von Thomas Lenz (Graz University of Technology IAIK) bearbeitet --> -<xsd:schema xmlns="http://www.buergerkarte.at/namespaces/moaconfig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.buergerkarte.at/namespaces/moaconfig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0.0"> +<xsd:schema xmlns="http://www.buergerkarte.at/namespaces/moaconfig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:hj="http://hyperjaxb3.jvnet.org/ejb/schemas/customizations" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" targetNamespace="http://www.buergerkarte.at/namespaces/moaconfig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0.0" jaxb:extensionBindingPrefixes="xjc hj" jaxb:version="2.0">  	<xsd:complexType name="OnlineApplication">  		<xsd:complexContent>  			<xsd:extension base="OnlineApplicationType"> @@ -489,6 +489,13 @@  	</xsd:complexType>  	<xsd:complexType name="OnlineApplicationType">  		<xsd:sequence> +			<xsd:element name="isNew" type="xsd:boolean" default="false" minOccurs="0" maxOccurs="1"> +				<xsd:annotation> +					<xsd:appinfo> +						<hj:ignored/> +					</xsd:appinfo> +				</xsd:annotation> +			</xsd:element>  			<xsd:element name="isActive" type="xsd:boolean" default="false" minOccurs="1" maxOccurs="1"/>  			<xsd:element name="isAdminRequired" type="xsd:boolean" default="false" minOccurs="0" maxOccurs="1"/>  			<xsd:element name="isInterfederationIDP" type="xsd:boolean" default="false" minOccurs="0" maxOccurs="1"/> @@ -946,6 +953,20 @@  			<xsd:element name="isPVP2Generated" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>  			<xsd:element name="lastLogin" type="xsd:string" minOccurs="1" maxOccurs="1"/>  			<xsd:element name="OnlineApplication" type="OnlineApplication" minOccurs="0" maxOccurs="unbounded"/> +			<xsd:element name="onlyBusinessService" type="xsd:boolean" minOccurs="1" maxOccurs="1" default="false"> +				<xsd:annotation> +                    <xsd:appinfo> +                        <hj:ignored/> +                    </xsd:appinfo> +                </xsd:annotation> +			</xsd:element> +			<xsd:element name="businessServiceType" type="xsd:string" minOccurs="0" maxOccurs="1"> +				<xsd:annotation> +                    <xsd:appinfo> +                        <hj:ignored/> +                    </xsd:appinfo> +                </xsd:annotation> +			</xsd:element>  		</xsd:sequence>  	</xsd:complexType>  	<xsd:complexType name="BKUSelectionCustomizationType"> | 
