package at.gv.egovernment.moa.id.auth.servlet; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import at.gv.egovernment.moa.id.auth.AuthenticationServer; import at.gv.egovernment.moa.id.auth.MOAIDAuthInitializer; import at.gv.egovernment.moa.id.auth.WrongParametersException; import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider; import at.gv.egovernment.moa.id.util.MOAIDMessageProvider; import at.gv.egovernment.moa.logging.Logger; /** * Servlet requested for selecting a BKU. *
In case of {@link AuthConfigurationProvider#getBKUSelectionType}==HTMLComplete, * the browser is redirected to the configured "BKU-Auswahl-URL". *
In case of {@link AuthConfigurationProvider#getBKUSelectionType}==HTMLSelect, * the list of available BKU's is fetched from a BKU-Auswahl server, and presented * to the user in an HTML form. * * @author Paul Ivancsics * @version $Id$ */ public class SelectBKUServlet extends AuthServlet { /** * Calls the web application initializer. * * @see javax.servlet.Servlet#init(ServletConfig) */ public void init(ServletConfig servletConfig) throws ServletException { try { super.init(servletConfig); MOAIDAuthInitializer.initialize(); Logger.debug("default platform file.encoding: " + System.getProperty("file.encoding")); Logger.info(MOAIDMessageProvider.getInstance().getMessage("init.00", null)); } catch (Exception ex) { Logger.fatal(MOAIDMessageProvider.getInstance().getMessage("init.02", null), ex); throw new ServletException(ex); } } /** * Responds with an HTML form which requests the user to choose a BKU. */ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Logger.debug("GET SelectBKU"); String authURL = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + req.getContextPath() + "/"; String target = req.getParameter(PARAM_TARGET); String oaURL = req.getParameter(PARAM_OA); String bkuSelectionTemplateURL = req.getParameter(PARAM_BKUTEMPLATE); String templateURL = req.getParameter(PARAM_TEMPLATE); resp.setHeader(HEADER_EXPIRES,HEADER_VALUE_EXPIRES); resp.setHeader(HEADER_PRAGMA,HEADER_VALUE_PRAGMA); resp.setHeader(HEADER_CACHE_CONTROL,HEADER_VALUE_CACHE_CONTROL); resp.addHeader(HEADER_CACHE_CONTROL,HEADER_VALUE_CACHE_CONTROL_IE); try { String returnValue = AuthenticationServer.getInstance().selectBKU( authURL, target, oaURL, bkuSelectionTemplateURL, templateURL); String bkuSelectionType = AuthConfigurationProvider.getInstance().getBKUSelectionType(); if (bkuSelectionType.equals(AuthConfigurationProvider.BKU_SELECTION_TYPE_HTMLCOMPLETE)) { // bkuSelectionType==HTMLComplete String redirectURL = returnValue; resp.setContentType("text/html"); resp.sendRedirect(redirectURL); Logger.info("REDIRECT TO: " + redirectURL); } else { // bkuSelectionType==HTMLSelect String htmlForm = returnValue; resp.setContentType("text/html;charset=UTF-8"); Logger.debug("HTML-Form: " + htmlForm); Writer out = new OutputStreamWriter(resp.getOutputStream(), "UTF8"); out.write(htmlForm); out.flush(); Logger.debug("Finished GET SelectBKU"); } } catch (WrongParametersException ex) { handleWrongParameters(ex, req, resp); } catch (Throwable ex) { handleError(null, ex, req, resp); } } }