package at.gv.egovernment.moa.id.auth.builder; import at.gv.egovernment.moa.id.auth.servlet.AuthServlet; import at.gv.egovernment.moa.id.config.ConfigurationException; import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider; import at.gv.egovernment.moa.id.util.MOAIDMessageProvider; import at.gv.egovernment.moa.logging.Logger; /** * Builds a DataURL parameter meant for the security layer implementation * to respond to. * * @author Paul Ivancsics * @version $Id$ */ public class DataURLBuilder { /** * Constructor for DataURLBuilder. */ public DataURLBuilder() { super(); } /** * Constructs a data URL for VerifyIdentityLink or VerifyAuthenticationBlock, * including the MOASessionID as a parameter. * * @param authBaseURL base URL (context path) of the MOA ID Authentication component, * including a trailing '/' * @param authServletName request part of the data URL * @param sessionID sessionID to be included in the dataURL * @return String */ public String buildDataURL(String authBaseURL, String authServletName, String sessionID) { String individualDataURLPrefix = null; String dataURL; try { //check if an individual prefix is configured individualDataURLPrefix = AuthConfigurationProvider.getInstance(). getGenericConfigurationParameter(AuthConfigurationProvider.INDIVIDUAL_DATA_URL_PREFIX); if (null != individualDataURLPrefix) { //check individualDataURLPrefix if(!individualDataURLPrefix.startsWith("http")) throw(new ConfigurationException("config.13", new Object[] { individualDataURLPrefix})); //when ok then use it dataURL = individualDataURLPrefix + authServletName; } else dataURL = authBaseURL + authServletName; } catch (ConfigurationException e) { Logger.warn(e); Logger.warn(MOAIDMessageProvider.getInstance().getMessage("config.12", new Object[] { authBaseURL } )); dataURL = authBaseURL + authServletName; } dataURL = addParameter(dataURL, AuthServlet.PARAM_SESSIONID, sessionID); return dataURL; } /** * Method addParameter. * @param urlString represents the url * @param paramname is the parameter to be added * @param value is the value of that parameter * @return String */ private String addParameter(String urlString, String paramname, String value) { String url = urlString; if (paramname != null) { if (url.indexOf("?") < 0) url += "?"; else url += "&"; url += paramname + "=" + value; } return url; } }