package org.ovirt.engine.core.aaa.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.ovirt.engine.core.aaa.filters.FiltersHelper; import org.ovirt.engine.core.utils.EngineLocalConfig; import org.ovirt.engine.core.uutils.net.URLBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SsoLoginServlet extends HttpServlet { private static final long serialVersionUID = 9210030009170727847L; private static final Logger log = LoggerFactory.getLogger(SsoLoginServlet.class); private String postActionUrl; private String authSequencePriorityPropertyName; @Override public void init() throws ServletException { postActionUrl = getServletContext().getInitParameter("post-action-url"); if (postActionUrl == null) { throw new RuntimeException("No post-action-url init parameter specified for SsoLoginServlet."); } authSequencePriorityPropertyName = getServletContext().getInitParameter("auth-seq-priority-property-name"); if (postActionUrl == null) { throw new RuntimeException("No auth-seq-priority-property-name init parameter specified for SsoLoginServlet."); } } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { log.debug("Entered SsoLoginServlet"); String scope = String.format("ovirt-app-admin ovirt-app-portal ovirt-ext=auth:sequence-priority=%s", EngineLocalConfig.getInstance().getProperty(authSequencePriorityPropertyName)); String redirectUri = String.format("%s://%s:%s%s", request.getScheme(), FiltersHelper.getRedirectUriServerName(request.getServerName()), request.getServerPort(), postActionUrl); String url = new URLBuilder(FiltersHelper.getEngineSsoUrl(request), "/oauth/authorize") .addParameter("client_id", EngineLocalConfig.getInstance().getProperty("ENGINE_SSO_CLIENT_ID")) .addParameter("response_type", "code") .addParameter("app_url", request.getParameter("app_url")) .addParameter("engine_url", FiltersHelper.getEngineUrl(request)) .addParameter("redirect_uri", redirectUri) .addParameter("scope", scope).build(); log.debug("Redirecting to '{}'", url); response.sendRedirect(url); } }