diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-02-14 13:47:43 +0100 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-02-14 13:47:43 +0100 | 
| commit | 650cbb315304e47e0b920c3bc81579cc4efa5514 (patch) | |
| tree | 78d3edb6dcd08934f80f2ecfa736c5356f809f9b /id/server/idserverlib | |
| parent | 4cc2fc3e44ff1e643c4a16a132ae90e60c84cf37 (diff) | |
| download | moa-id-spss-650cbb315304e47e0b920c3bc81579cc4efa5514.tar.gz moa-id-spss-650cbb315304e47e0b920c3bc81579cc4efa5514.tar.bz2 moa-id-spss-650cbb315304e47e0b920c3bc81579cc4efa5514.zip | |
allow to load SL-Templates from local file-system
Diffstat (limited to 'id/server/idserverlib')
4 files changed, 49 insertions, 10 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java index d8d375db2..7608f9f93 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java @@ -242,6 +242,7 @@ public class AuthenticationServer implements MOAIDAuthConstants {  		String template = null;  		if (session.getTemplateURL() != null) {  			try { +				  				template = new String(FileUtils.readURL(session.getTemplateURL()));  			} catch (IOException ex) {  				throw new AuthenticationException("auth.03", new Object[] { diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java index 89cc1d25e..f0de8b2e3 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/StartAuthentificationParameterParser.java @@ -38,6 +38,7 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException; +import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;  import at.gv.egovernment.moa.id.moduls.IRequest; @@ -46,6 +47,7 @@ import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol;  import at.gv.egovernment.moa.id.util.ParamValidatorUtils;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.BoolUtils; +import at.gv.egovernment.moa.util.FileUtils;  import at.gv.egovernment.moa.util.MiscUtil;  import at.gv.egovernment.moa.util.StringUtils;  import at.gv.egovernment.moa.util.URLEncoder; @@ -232,8 +234,21 @@ public class StartAuthentificationParameterParser implements MOAIDAuthConstants{  		}  	    if (MiscUtil.isEmpty(templateURL)) { -	    	templateURL = oaParam.getTemplateURL().get(0).getURL(); -	    	Log.info("No SL-Template in request, load SL-Template from OA config (URL: " + templateURL + ")"); +	    	 +	    	List<TemplateType> templateURLList = oaParam.getTemplateURL(); +	    	 +	    	if ( templateURLList != null && templateURLList.size() > 0  +	    			&& MiscUtil.isNotEmpty(templateURLList.get(0).getURL()) ) {	    	 +	    		templateURL = FileUtils.makeAbsoluteURL( +	    				oaParam.getTemplateURL().get(0).getURL(), +	    				AuthConfigurationProvider.getInstance().getRootConfigFileDir()); +	    		Log.info("No SL-Template in request, load SL-Template from OA config (URL: " + templateURL + ")"); +	    		 +	    	} else { +	    		Logger.error("NO SL-Tempalte found in OA config"); +	    		throw new WrongParametersException("StartAuthentication", PARAM_TEMPLATE, "auth.12"); +	    		 +	    	}  	    } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java index d2d458e74..deec69c7f 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/GenerateIFrameTemplateServlet.java @@ -24,6 +24,7 @@ package at.gv.egovernment.moa.id.auth.servlet;  import java.io.IOException;  import java.io.PrintWriter; +import java.util.List;  import javax.servlet.ServletConfig;  import javax.servlet.ServletException; @@ -40,12 +41,14 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;  import at.gv.egovernment.moa.id.auth.parser.StartAuthentificationParameterParser;  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils; +import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;  import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;  import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;  import at.gv.egovernment.moa.logging.Logger; +import at.gv.egovernment.moa.util.FileUtils;  import at.gv.egovernment.moa.util.MiscUtil;  import at.gv.egovernment.moa.util.StringUtils; @@ -122,7 +125,21 @@ public class GenerateIFrameTemplateServlet extends AuthServlet {  		    		bkuURL = AuthConfigurationProvider.getInstance().getDefaultBKUURL(bkuid);  		    	} -		    	String templateURL = AuthConfigurationProvider.getInstance().getSLRequestTemplates(bkuid); +		    	//search for OA specific template +		    	String templateURL = null; +		    	List<TemplateType> oaTemplateURLList = oaParam.getTemplateURL(); +		    	if ( oaTemplateURLList != null && oaTemplateURLList.size() > 0 +		    			&& MiscUtil.isNotEmpty(oaTemplateURLList.get(0).getURL()) ) { +		    		templateURL = oaTemplateURLList.get(0).getURL(); +		    		 +		    	} else {		    	 +		    		templateURL = AuthConfigurationProvider.getInstance().getSLRequestTemplates(bkuid); +		    	} +		    	 +		    	//make url absolut if it is a local url +	    		if (MiscUtil.isNotEmpty(templateURL)) +	    			templateURL = FileUtils.makeAbsoluteURL(templateURL,  +	    					AuthConfigurationProvider.getInstance().getRootConfigFileDir());  		    	if (oaParam.isOnlyMandateAllowed())   		    		useMandate = "true"; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java index bd6514c5c..9df283965 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java @@ -68,6 +68,7 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;  import at.gv.egovernment.moa.id.config.ConfigurationException;
  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;
  import at.gv.egovernment.moa.logging.Logger;
 +import at.gv.egovernment.moa.util.FileUtils;
  import at.gv.egovernment.moa.util.MiscUtil;
  import at.gv.egovernment.moa.util.StringUtils;
 @@ -293,7 +294,8 @@ public class ParamValidatorUtils implements MOAIDAuthConstants{      			  //get OA specific template URLs
      			  if (oaSlTemplates != null && oaSlTemplates.size() > 0) {
      			    for (TemplateType el : oaSlTemplates)
 -    			    	trustedTemplateURLs.add(el.getURL());    				  
 +    			    	if (MiscUtil.isNotEmpty(el.getURL()))
 +    			    		trustedTemplateURLs.add(el.getURL());    				  
      			  }
  	    		  boolean b = trustedTemplateURLs.contains(template);
 @@ -308,13 +310,17 @@ public class ParamValidatorUtils implements MOAIDAuthConstants{      		  }
 +    	  } else if (template.startsWith("file")){
 + 			 new URL(template);
 +			 Logger.debug("Parameter Template bzw. bkuSelectionTemplateURL erfolgreich ueberprueft");
 +			 Logger.debug("Load SL-Layer Template from local filesystem " + template);
 +			 return true;
 + 
 +    	  }	else {
 +    		 Logger.error("Fehler Ueberpruefung Parameter Template bzw. bkuSelectionTemplateURL. Paramter beginnt nicht mit http oder https.");
 +    		 return false;
      	  }
 -    	  else {
 -    		  Logger.error("Fehler Ueberpruefung Parameter Template bzw. bkuSelectionTemplateURL. Paramter beginnt nicht mit http oder https.");
 -    		  return false;
 -    	  }
 -    	  
 -            
 +    	   
        } catch (MalformedURLException e) {
      	 Logger.error("Fehler Ueberpruefung Parameter Template bzw. bkuSelectionTemplateURL.", e);
           return false;
 | 
