diff options
Diffstat (limited to 'id/ConfigWebTool/src')
7 files changed, 149 insertions, 47 deletions
| diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java index e309eaadd..7b02883bb 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java @@ -22,6 +22,12 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.configuration; +import java.util.Collection; +import java.util.Hashtable; +import java.util.Map; + +import edu.emory.mathcs.backport.java.util.Collections; +  public class Constants {  	public static final String FILEPREFIX = "file:"; @@ -78,4 +84,14 @@ public class Constants {  	public static final String IDENIFICATIONTYPE_BASEID_ZVR = IDENIFICATIONTYPE_BASEID + "X" + IDENIFICATIONTYPE_ZVR;  	public static final String PREFIX_WPBK = "urn:publicid:gv.at:wbpk+"; +	 +	public static final Map<String, String> BUSINESSSERVICENAMES; +	static { +		Hashtable<String, String> tmp = new Hashtable<String, String>(); +		tmp.put(IDENIFICATIONTYPE_FN, "Firmenbuchnummer"); +		tmp.put(IDENIFICATIONTYPE_ZVR, "Vereinsnummer"); +		tmp.put(IDENIFICATIONTYPE_ERSB, "ERsB Kennzahl"); +		 +		BUSINESSSERVICENAMES = Collections.unmodifiableMap(tmp); +	}  } diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java index c6b9b984a..d81d03780 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java @@ -57,6 +57,7 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyAuthBlock;  import at.gv.egovernment.moa.id.commons.db.dao.config.VerifyIdentityLink;  import at.gv.egovernment.moa.id.configuration.Constants;  import at.gv.egovernment.moa.id.configuration.data.pvp2.ContactForm; +import at.gv.egovernment.moa.util.MiscUtil;  public class GeneralMOAIDConfig { @@ -90,6 +91,8 @@ public class GeneralMOAIDConfig {  	private boolean legacy_saml1 = false;  	private boolean legacy_pvp2 = false; +	private String saml1SourceID = null; +	  	private String pvp2PublicUrlPrefix = null;  	private String pvp2IssuerName = null;  	private String pvp2OrgName = null; @@ -214,6 +217,11 @@ public class GeneralMOAIDConfig {  					SAML1 saml1 = protocols.getSAML1();  					if (saml1 != null) {  						protocolActiveSAML1 = saml1.isIsActive(); +						saml1SourceID = saml1.getSourceID(); +						 +						//TODO: could removed in a later version +						if (MiscUtil.isEmpty(saml1SourceID) && MiscUtil.isNotEmpty(alternativeSourceID)) +							saml1SourceID = alternativeSourceID;  					} @@ -263,13 +271,21 @@ public class GeneralMOAIDConfig {  				if (sso != null) {  					ssoFriendlyName = sso.getFriendlyName(); -					IdentificationNumber idl = sso.getIdentificationNumber(); -					if (idl != null)  -						ssoIdentificationNumber = idl.getValue(); +//					IdentificationNumber idl = sso.getIdentificationNumber(); +//					if (idl != null)  +//						ssoIdentificationNumber = idl.getValue();  					ssoPublicUrl = sso.getPublicURL();  					ssoSpecialText = sso.getSpecialText(); -					ssoTarget = sso.getTarget(); +					 +					if (MiscUtil.isNotEmpty(sso.getTarget()) && +							sso.getTarget().startsWith(Constants.PREFIX_WPBK)) { +						ssoTarget = sso.getTarget().substring(Constants.PREFIX_WPBK.length()). +								replace("+", ""); +						 +					} else					 +						ssoTarget = sso.getTarget(); +					  				}  			} @@ -320,20 +336,6 @@ public class GeneralMOAIDConfig {  	}  	/** -	 * @return the alternativeSourceID -	 */ -	public String getAlternativeSourceID() { -		return alternativeSourceID; -	} - -	/** -	 * @param alternativeSourceID the alternativeSourceID to set -	 */ -	public void setAlternativeSourceID(String alternativeSourceID) { -		this.alternativeSourceID = alternativeSourceID; -	} - -	/**  	 * @return the certStoreDirectory  	 */  	public String getCertStoreDirectory() { @@ -913,6 +915,21 @@ public class GeneralMOAIDConfig {  	public void setProtocolActiveOAuth(boolean protocolActiveOAuth) {  		this.protocolActiveOAuth = protocolActiveOAuth;  	} + +	/** +	 * @return the saml1SourceID +	 */ +	public String getSaml1SourceID() { +		return saml1SourceID; +	} + +	/** +	 * @param saml1SourceID the saml1SourceID to set +	 */ +	public void setSaml1SourceID(String saml1SourceID) { +		this.saml1SourceID = saml1SourceID; +	} +	 diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java index 3c8c0e18d..67750e765 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java @@ -74,6 +74,7 @@ import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;  import at.gv.egovernment.moa.id.configuration.data.GeneralMOAIDConfig;  import at.gv.egovernment.moa.id.configuration.data.GeneralStorkConfig;  import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; +import at.gv.egovernment.moa.id.configuration.validation.ValidationHelper;  import at.gv.egovernment.moa.id.configuration.validation.moaconfig.MOAConfigValidator;  import at.gv.egovernment.moa.id.configuration.validation.moaconfig.StorkConfigValidator;  import at.gv.egovernment.moa.id.util.Random; @@ -229,12 +230,12 @@ public class EditGeneralConfigAction extends ActionSupport  		if (oldauth != null)  			oldauthgeneral = oldauth.getGeneralConfiguration(); -		if (MiscUtil.isNotEmpty(moaconfig.getAlternativeSourceID())) -			dbauthgeneral.setAlternativeSourceID(moaconfig.getAlternativeSourceID()); -		else { -			if (oldauthgeneral != null) -			dbauthgeneral.setAlternativeSourceID(oldauthgeneral.getAlternativeSourceID()); -		} +//		if (MiscUtil.isNotEmpty(moaconfig.getAlternativeSourceID())) +//			dbauthgeneral.setAlternativeSourceID(moaconfig.getAlternativeSourceID()); +//		else { +//			if (oldauthgeneral != null) +//			dbauthgeneral.setAlternativeSourceID(oldauthgeneral.getAlternativeSourceID()); +//		}  		if (MiscUtil.isNotEmpty(moaconfig.getCertStoreDirectory()))  				dbauthgeneral.setCertStoreDirectory(moaconfig.getCertStoreDirectory()); @@ -287,6 +288,15 @@ public class EditGeneralConfigAction extends ActionSupport  		}  		saml1.setIsActive(moaconfig.isProtocolActiveSAML1()); +		if (MiscUtil.isNotEmpty(moaconfig.getSaml1SourceID())) { +			saml1.setSourceID(moaconfig.getSaml1SourceID()); +			 +		} else { +			if (MiscUtil.isNotEmpty(saml1.getSourceID())) +				saml1.setSourceID(moaconfig.getSaml1SourceID()); +			 +		} +		  		OAuth oauth= dbprotocols.getOAuth();  		if (oauth == null) {  			oauth = new OAuth(); @@ -356,17 +366,43 @@ public class EditGeneralConfigAction extends ActionSupport  		if (MiscUtil.isNotEmpty(moaconfig.getSsoPublicUrl()))  			dbsso.setPublicURL(moaconfig.getSsoPublicUrl()); -		if (MiscUtil.isNotEmpty(moaconfig.getSsoTarget())) -			dbsso.setTarget(moaconfig.getSsoTarget()); - -		if (MiscUtil.isNotEmpty(moaconfig.getSsoIdentificationNumber())) { -			IdentificationNumber ssoid = dbsso.getIdentificationNumber(); -			if (ssoid == null) { -				ssoid = new IdentificationNumber(); -				dbsso.setIdentificationNumber(ssoid); +		if (MiscUtil.isNotEmpty(moaconfig.getSsoTarget())) { +			 +			if (!ValidationHelper.isValidAdminTarget(moaconfig.getSsoTarget())) { +				String num = moaconfig.getSsoTarget().replaceAll(" ", ""); +				String pre = null; +				if (num.startsWith(Constants.IDENIFICATIONTYPE_FN)) { +					num = num.substring(Constants.IDENIFICATIONTYPE_FN.length()); +					 +					num = at.gv.egovernment.moa.util.StringUtils.deleteLeadingZeros(num); +					pre = Constants.IDENIFICATIONTYPE_FN; +				} +				 +				if (num.startsWith(Constants.IDENIFICATIONTYPE_ZVR)) { +					num = num.substring(Constants.IDENIFICATIONTYPE_ZVR.length()); +					pre = Constants.IDENIFICATIONTYPE_ZVR; +				} +				 +				if (num.startsWith(Constants.IDENIFICATIONTYPE_ERSB)){ +					num = num.substring(Constants.IDENIFICATIONTYPE_ERSB.length()); +					pre = Constants.IDENIFICATIONTYPE_ERSB; +				} +							 +				dbsso.setTarget(Constants.PREFIX_WPBK + pre + "+" + num); +				 +			} else { +				dbsso.setTarget(moaconfig.getSsoTarget()); +				  			} -			ssoid.setValue(moaconfig.getSsoIdentificationNumber());  		} +//		if (MiscUtil.isNotEmpty(moaconfig.getSsoIdentificationNumber())) { +//			IdentificationNumber ssoid = dbsso.getIdentificationNumber(); +//			if (ssoid == null) { +//				ssoid = new IdentificationNumber(); +//				dbsso.setIdentificationNumber(ssoid); +//			} +//			ssoid.setValue(moaconfig.getSsoIdentificationNumber()); +//		}  		DefaultBKUs dbbkus = dbconfig.getDefaultBKUs();  		if (dbbkus == null) { diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java index 775443689..25c3f24b9 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 @@ -763,6 +763,7 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  			IdentificationNumber idnumber = new IdentificationNumber();  			idnumber.setValue(Constants.PREFIX_WPBK + generalOA.getIdentificationType() + "+" + num); +			idnumber.setType(Constants.BUSINESSSERVICENAMES.get(generalOA.getIdentificationType()));  			authoa.setIdentificationNumber(idnumber); diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java index 1ea51652a..d7d97e5d4 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/moaconfig/MOAConfigValidator.java @@ -32,10 +32,12 @@ import java.util.Map;  import org.apache.log4j.Logger; +import at.gv.egovernment.moa.id.configuration.Constants;  import at.gv.egovernment.moa.id.configuration.data.GeneralMOAIDConfig;  import at.gv.egovernment.moa.id.configuration.data.pvp2.ContactForm;  import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper;  import at.gv.egovernment.moa.id.configuration.helper.StringHelper; +import at.gv.egovernment.moa.id.configuration.validation.CompanyNumberValidator;  import at.gv.egovernment.moa.id.configuration.validation.ValidationHelper;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.MiscUtil; @@ -51,11 +53,11 @@ public class MOAConfigValidator {  		log.debug("Validate general MOA configuration"); -		String check = form.getAlternativeSourceID(); +		String check = form.getSaml1SourceID();  		if (MiscUtil.isNotEmpty(check)) {  			if (ValidationHelper.containsPotentialCSSCharacter(check, false)) { -				log.warn("AlternativeSourceID contains potentail XSS characters: " + check); -				errors.add(LanguageHelper.getErrorString("validation.general.AlternativeSourceID",  +				log.warn("SAML1 SourceID contains potentail XSS characters: " + check); +				errors.add(LanguageHelper.getErrorString("validation.general.SAML1SourceID",   						new Object[] {ValidationHelper.getPotentialCSSCharacter(false)} ));  			}  		} @@ -282,14 +284,14 @@ public class MOAConfigValidator {  			}  		} -		check = form.getSsoIdentificationNumber(); -		if (MiscUtil.isNotEmpty(check)) { -			if (ValidationHelper.containsPotentialCSSCharacter(check, false)) { -				log.info("SSO IdentificationNumber is not valid: " + check); -				errors.add(LanguageHelper.getErrorString("validation.general.sso.identificationnumber.valid",  -						new Object[] {ValidationHelper.getPotentialCSSCharacter(false)} )); -			} -		} +//		check = form.getSsoIdentificationNumber(); +//		if (MiscUtil.isNotEmpty(check)) { +//			if (ValidationHelper.containsPotentialCSSCharacter(check, false)) { +//				log.info("SSO IdentificationNumber is not valid: " + check); +//				errors.add(LanguageHelper.getErrorString("validation.general.sso.identificationnumber.valid",  +//						new Object[] {ValidationHelper.getPotentialCSSCharacter(false)} )); +//			} +//		}  		check = form.getSsoPublicUrl();  		if (MiscUtil.isNotEmpty(check)) { @@ -315,8 +317,23 @@ public class MOAConfigValidator {  		} else {  			if (!ValidationHelper.isValidAdminTarget(check)) { -				log.info("Not valid SSO Target"); -				errors.add(LanguageHelper.getErrorString("validation.general.sso.target.valid")); +				 +				if (ValidationHelper.containsPotentialCSSCharacter(check, false)) { +					log.warn("IdentificationNumber contains potentail XSS characters: " + check); +					errors.add(LanguageHelper.getErrorString("validation.general.sso.target.valid",  +							new Object[] {ValidationHelper.getPotentialCSSCharacter(false)} )); +				} +				 +				String num = check.replaceAll(" ", ""); +				 +				if ( !(num.startsWith(Constants.IDENIFICATIONTYPE_FN) ||  +						num.startsWith(Constants.IDENIFICATIONTYPE_ZVR) || +							num.startsWith(Constants.IDENIFICATIONTYPE_ERSB) ) ) { +					 +					log.info("Not valid SSO Target"); +					errors.add(LanguageHelper.getErrorString("validation.general.sso.target.valid")); +				} +								  			}  		} diff --git a/id/ConfigWebTool/src/main/resources/applicationResources.properties b/id/ConfigWebTool/src/main/resources/applicationResources.properties index 216f74850..0da6b1ec8 100644 --- a/id/ConfigWebTool/src/main/resources/applicationResources.properties +++ b/id/ConfigWebTool/src/main/resources/applicationResources.properties @@ -129,6 +129,8 @@ webpages.moaconfig.protocols.legacy.header=Legacy Modus aktivieren  webpages.moaconfig.protocols.legacy.saml1=SAML1  webpages.moaconfig.protocols.legacy.pvp2=PVP2.1  webpages.moaconfig.protocols.oauth=OpenID Connect +webpages.moaconfig.protocols.saml1.header=SAML1 Konfiguration +webpages.moaconfig.protocols.saml1.sourceID=SourceID  webpages.moaconfig.protocols.pvp2.header=PVP2 Konfiguration  webpages.moaconfig.protocols.pvp2.PublicUrlPrefix=PVP2 Service URL-Prefix  webpages.moaconfig.protocols.pvp2.IssuerName=PVP Service Name @@ -298,7 +300,7 @@ validation.edituser.password.valid=Das Passwort konnte nicht in einen g\u00FClti  validation.edituser.password.equal=Die Passw\u00F6rter sind nicht identisch.  validation.edituser.bpk.valid=Die BPK enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0} -validation.general.AlternativeSourceID=Die AlternaticeSourceID enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0} +validation.general.SAML1SourceID=Die SAML1SourceID enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}  validation.general.certStoreDirectory.empty=CertStoreDirectory Feld ist leer.  validation.general.certStoreDirectory.valid=Das CertStoreDirectory Feld enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0}  validation.general.Defaultchainigmode.empty=Es wurde kein DefaultChainingMode gew\u00E4hlt. diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp index 41702cbbb..2e0e5ea2a 100644 --- a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp +++ b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp @@ -301,6 +301,19 @@  							<br>  							<div class="moageneral_protocol_area"> +								<h4><%=LanguageHelper.getGUIString("webpages.moaconfig.protocols.saml1.header", request) %></h4> +									 +									<s:textfield name="moaconfig.saml1SourceID "  +										value="%{moaconfig.saml1SourceID}"  +										labelposition="left" +										key="webpages.moaconfig.protocols.saml1.sourceID" +										cssClass="textfield_long"> +									</s:textfield> +							</div> +							 +							<br> +							 +							<div class="moageneral_protocol_area">  								<h4><%=LanguageHelper.getGUIString("webpages.moaconfig.protocols.pvp2.header", request) %></h4>  									<s:textfield name="moaconfig.pvp2PublicUrlPrefix "  | 
