Ravi Nori has uploaded a new change for review. Change subject: core : Add engine sso ......................................................................
core : Add engine sso A simple sso login page that takes user name, password and domain and authenticates the user Change-Id: I4894fc12653027271b6abd4dd5313b10593703fa Bug-Url: https://bugzilla.redhat.com/1092744 Signed-off-by: Ravi Nori <[email protected]> --- A backend/manager/modules/enginesso/pom.xml A backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSORedirectServlet.java A backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSOServlet.java A backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login-error.jsp A backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login.jsp A backend/manager/modules/enginesso/src/main/webapp/WEB-INF/ovirt.jsp A backend/manager/modules/enginesso/src/main/webapp/WEB-INF/web.xml M backend/manager/modules/pom.xml M ear/pom.xml 9 files changed, 639 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/19/36119/1 diff --git a/backend/manager/modules/enginesso/pom.xml b/backend/manager/modules/enginesso/pom.xml new file mode 100644 index 0000000..6cc989a --- /dev/null +++ b/backend/manager/modules/enginesso/pom.xml @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>manager-modules</artifactId> + <groupId>org.ovirt.engine.core</groupId> + <version>3.6.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>enginesso</artifactId> + <packaging>war</packaging> + <name>ovirt-engine sso</name> + <description>oVirt engine sso</description> + + <dependencies> + + <dependency> + <groupId>org.jboss.logging</groupId> + <artifactId>jboss-logging</artifactId> + <version>3.1.3.GA</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>common</artifactId> + <version>${engine.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>aaa</artifactId> + <version>${engine.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>bll</artifactId> + <version>${engine.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>extensions-manager</artifactId> + <version>${engine.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>utils</artifactId> + <version>${engine.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.ovirt.engine.api</groupId> + <artifactId>ovirt-engine-extensions-api</artifactId> + <version>${org.ovirt.engine.api.ovirt-engine-extensions-api.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.jboss.spec.javax.servlet</groupId> + <artifactId>jboss-servlet-api_3.0_spec</artifactId> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + <version>${mockito.version}</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>utils</artifactId> + <version>${engine.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>utils</artifactId> + <version>${engine.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>branding</artifactId> + <version>${engine.version}</version> + </dependency> + <dependency> + <groupId>org.ovirt.engine.core</groupId> + <artifactId>utils</artifactId> + <version>3.6.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.ovirt.engine.core</groupId> + <artifactId>utils</artifactId> + <version>3.6.0-SNAPSHOT</version> + </dependency> + + </dependencies> + + +</project> diff --git a/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSORedirectServlet.java b/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSORedirectServlet.java new file mode 100644 index 0000000..5f852d8 --- /dev/null +++ b/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSORedirectServlet.java @@ -0,0 +1,44 @@ +package org.ovirt.engine.core.sso.servlets; + +import org.ovirt.engine.core.common.businessentities.EngineSession; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class EngineSSORedirectServlet extends HttpServlet { + + private static final long serialVersionUID = -2662355980947122988L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + HttpSession session = request.getSession(false); + if (session == null || session.getAttribute("engineSession") == null) { + forwardRequest(request, response, "/WEB-INF/login.jsp"); + } else { + EngineSession engineSession = (EngineSession) session.getAttribute("engineSession"); + String module = request.getParameter("module"); + StringBuilder redirectUrl = new StringBuilder("/ovirt-engine/"); + redirectUrl.append(module); + redirectUrl.append("/login?"); + redirectUrl.append("engineSessionId="); + redirectUrl.append(engineSession.getEngineSessionId()); + response.sendRedirect(redirectUrl.toString()); + } + + } + + private void forwardRequest(HttpServletRequest request, HttpServletResponse response, String uri) + throws ServletException, IOException { + RequestDispatcher dispatcher = request.getRequestDispatcher(uri); + response.setContentType("text/html;charset=UTF-8"); + if (dispatcher != null) { + dispatcher.include(request, response); + } + } +} diff --git a/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSOServlet.java b/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSOServlet.java new file mode 100644 index 0000000..7b05359 --- /dev/null +++ b/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSOServlet.java @@ -0,0 +1,177 @@ +package org.ovirt.engine.core.sso.servlets; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.api.extensions.Base; +import org.ovirt.engine.api.extensions.ExtMap; +import org.ovirt.engine.api.extensions.aaa.Acct; +import org.ovirt.engine.api.extensions.aaa.Authn; +import org.ovirt.engine.core.aaa.AcctUtils; +import org.ovirt.engine.core.aaa.AuthType; +import org.ovirt.engine.core.aaa.AuthenticationProfile; +import org.ovirt.engine.core.aaa.AuthenticationProfileRepository; +import org.ovirt.engine.core.aaa.filters.FiltersHelper; + +import javax.naming.InitialContext; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import org.ovirt.engine.core.common.action.LoginUserParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.action.VdcLoginReturnValueBase; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.core.common.businessentities.EngineSession; +import org.ovirt.engine.core.common.constants.SessionConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EngineSSOServlet extends HttpServlet { + + private static final long serialVersionUID = -88168919566901736L; + private static final String USERNAME = "username"; + private static final String PASSWORD = "password"; + private static final String DOMAIN = "domain"; + private static final Logger log = LoggerFactory.getLogger(EngineSSOServlet.class); + + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + if (!containsUserCredentials(request.getParameterMap())) { + forwardRequest(request, response, "/WEB-INF/login.jsp"); + } else { + String username = request.getParameter(USERNAME); + String password = request.getParameter(PASSWORD); + String domain = request.getParameter(DOMAIN); + Map<String, Object> authResult = new HashMap<>(); + if (handleCredentials(authResult, username, password, domain)) { + EngineSession engineSession = doLogin(authResult, password); + log.info("user = " + engineSession.getUserName()); + HttpSession session = request.getSession(true); + session.setAttribute("engineSession", engineSession); + forwardRequest(request, response, "/WEB-INF/ovirt.jsp"); + } else { + forwardRequest(request, response, "/WEB-INF/login-error.jsp"); + } + } + + } + + private void forwardRequest(HttpServletRequest request, HttpServletResponse response, String uri) + throws ServletException, IOException { + RequestDispatcher dispatcher = request.getRequestDispatcher(uri); + response.setContentType("text/html;charset=UTF-8"); + if (dispatcher != null) { + dispatcher.include(request, response); + } + } + + private boolean handleCredentials(Map<String, Object> authResult, String username, String password, String domain) { + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(domain)) { + return false; + } + UserProfile userProfile = translateUser(username, domain); + boolean authenticated = false; + if (userProfile == null || userProfile.profile == null) { + log.error("Error in obtaining profile {}", userProfile.profile); + } else { + ExtMap outputMap = userProfile.profile.getAuthn().invoke(new ExtMap().mput( + Base.InvokeKeys.COMMAND, + Authn.InvokeCommands.AUTHENTICATE_CREDENTIALS + ).mput( + Authn.InvokeKeys.USER, + userProfile.userName + ).mput( + Authn.InvokeKeys.CREDENTIALS, + password + ) + ); + if (outputMap.<Integer>get(Base.InvokeKeys.RESULT) == Base.InvokeResult.SUCCESS && + outputMap.<Integer>get(Authn.InvokeKeys.RESULT) == Authn.AuthResult.SUCCESS) { + authResult.put(FiltersHelper.Constants.REQUEST_AUTH_RECORD_KEY, + outputMap.<ExtMap>get(Authn.InvokeKeys.AUTH_RECORD)); + authResult.put(FiltersHelper.Constants.REQUEST_AUTH_TYPE_KEY, AuthType.CREDENTIALS); + authResult.put(FiltersHelper.Constants.REQUEST_PROFILE_KEY, userProfile.profile.getName()); + authenticated = true; + } else { + if (outputMap.<Integer>get(Base.InvokeKeys.RESULT) != Base.InvokeResult.SUCCESS + || outputMap.<Integer>get(Authn.InvokeKeys.RESULT) != Authn.AuthResult.SUCCESS) { + AcctUtils.reportRecords( + Acct.ReportReason.PRINCIPAL_LOGIN_FAILED, + userProfile.userName, + null, + null, + "Basic authentication failed for User %1$s.", + userProfile.userName + ); + } + log.error("Failure in authentication to profile {}. Invocation Result code is {}. Authn result code is {}", + userProfile.profile, + outputMap.<Integer>get(Base.InvokeKeys.RESULT), + outputMap.<Integer>get(Authn.InvokeKeys.RESULT) + ); + } + } + return authenticated; + } + + public EngineSession doLogin(Map<String, Object> authResult, String password) throws IOException, + ServletException { + EngineSession engineSession = null; + String profileName = (String) authResult.get(FiltersHelper.Constants.REQUEST_PROFILE_KEY); + ExtMap authRecord = (ExtMap) authResult.get(FiltersHelper.Constants.REQUEST_AUTH_RECORD_KEY); + if (authRecord != null) { + try { + InitialContext context = new InitialContext(); + VdcLoginReturnValueBase returnValue = (VdcLoginReturnValueBase) FiltersHelper.getBackend(context).login( + new LoginUserParameters( + profileName, + authRecord, + password, + VdcActionType.LoginUser, + AuthType.CREDENTIALS + ) + ); + if (returnValue.getSucceeded()) { + authResult.put( + SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY, + returnValue.getSessionId() + ); + log.info("returnValue.getSessionId() = " + returnValue.getSessionId()); + DbUser user = (DbUser) returnValue.getActionReturnValue(); + engineSession = new EngineSession(user, returnValue.getSessionId()); + } + } catch (Exception ex) { + log.error("Error in login to engine ", ex); + } + } + return engineSession; + } + + private UserProfile translateUser(String username, String domain) { + AuthenticationProfile profile = AuthenticationProfileRepository.getInstance().getProfile(domain); + UserProfile result = profile != null ? new UserProfile(username, profile) : null; + return result; + } + + private boolean containsUserCredentials(Map<String, String[]> parameters) { + return parameters.containsKey(USERNAME) && parameters.containsKey(PASSWORD) && parameters.containsKey(DOMAIN); + } + + private static class UserProfile { + + private String userName; + private AuthenticationProfile profile; + + public UserProfile(String user, AuthenticationProfile profile) { + this.userName = user; + this.profile = profile; + } + } +} diff --git a/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login-error.jsp b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login-error.jsp new file mode 100644 index 0000000..e319079 --- /dev/null +++ b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login-error.jsp @@ -0,0 +1,61 @@ +<%@ page pageEncoding="UTF-8" session="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="obrand" uri="obrand" %> +<fmt:setLocale value="${locale}" /> +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <obrand:favicon /> + <title>Login Page</title> + <obrand:stylesheets /> +</head> +<body> +<div class="obrand_loginPageBackground"> + <a href="<obrand:messages key="obrand.common.vendor_url"/>" class="obrand_loginPageLogoImageLink"> + <span class="obrand_loginPageLogoImage"></span> + </a> + <div class="login-pf"> + <div class="container"> + <div class="row"> + + <div class="col-sm-12"> + <div id="brand"> + <div class="obrand_loginFormLogoImage"></div> + </div> + </div> + <div class="col-sm-12"> + <div style="width:250px;"> + <form id="login_form" name="login_form" method="post" + action="" enctype="application/x-www-form-urlencoded"> + <center> + <p style="color: red">Login failed, please try again.</p> + </center> + <div style="margin-left: 15px;width:250px;"> + <p> + <label for="username" style="width:70px;"> Username</label><input id="username" + type="text" name="username" size="20" style="color:black;"/> + </p> + <p> + <label for="password" style="width:70px;"> Password</label><input id="password" + type="password" name="password" value="" size="20" style="color:black;"/> + </p> + <p> + <label for="domain" style="width:70px;"> Domain</label><input id="domain" + type="text" name="domain" value="" size="20" style="color:black;"/> + </p> + <center> + <input id="submit" type="submit" name="submit" value="Login" + class="buttonmed" /> + </center> + </div> + </form> + </div> + </div> + </div> + </div> + </div> + </div> +</body> +</html> diff --git a/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login.jsp b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login.jsp new file mode 100644 index 0000000..7a5db6c --- /dev/null +++ b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/login.jsp @@ -0,0 +1,62 @@ +<%@ page pageEncoding="UTF-8" session="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="obrand" uri="obrand" %> +<fmt:setLocale value="${locale}" /> +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <obrand:favicon /> + <title>Login Page</title> + <obrand:stylesheets /> +</head> +<body> +<div class="obrand_loginPageBackground"> + <a href="<obrand:messages key="obrand.common.vendor_url"/>" class="obrand_loginPageLogoImageLink"> + <span class="obrand_loginPageLogoImage"></span> + </a> + <div class="login-pf"> + <div class="container"> + <div class="row"> + + <div class="col-sm-12"> + <div id="brand"> + <div class="obrand_loginFormLogoImage"></div> + </div> + </div> + + <div class="col-sm-12"> + <div style="width:250px;"> + <form id="login_form" name="login_form" method="post" + action="" enctype="application/x-www-form-urlencoded"> + <center> + <p>Please login to proceed.</p> + </center> + <div style="margin-left: 15px;width:250px;"> + <p> + <label for="username" style="width:70px;"> Username</label><input id="username" + type="text" name="username" size="20" style="color:black;"/> + </p> + <p> + <label for="password" style="width:70px;"> Password</label><input id="password" + type="password" name="password" value="" size="20" style="color:black;"/> + </p> + <p> + <label for="domain" style="width:70px;"> Domain</label><input id="domain" + type="text" name="domain" value="" size="20" style="color:black;"/> + </p> + <center> + <input id="submit" type="submit" name="submit" value="Login" + class="buttonmed" /> + </center> + </div> + </form> + </div> + </div> + </div> + </div> + </div> + </div> +</body> +</html> diff --git a/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/ovirt.jsp b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/ovirt.jsp new file mode 100644 index 0000000..70571f4 --- /dev/null +++ b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/ovirt.jsp @@ -0,0 +1,44 @@ +<%@ page pageEncoding="UTF-8" session="false" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="obrand" uri="obrand" %> +<fmt:setLocale value="${locale}" /> +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <obrand:favicon /> + <title>oVirt Engine</title> + <obrand:stylesheets /> +</head> +<body> +<div class="obrand_loginPageBackground"> + <a href="<obrand:messages key="obrand.common.vendor_url"/>" class="obrand_loginPageLogoImageLink"> + <span class="obrand_loginPageLogoImage"></span> + </a> + <div class="login-pf"> + <div class="container"> + <div class="row"> + + <div class="col-sm-12"> + <div id="brand"> + <div class="obrand_loginFormLogoImage"></div> + </div> + </div> + + <div class="col-sm-12 welcome-title-wrapper"> + <span class="welcome-title">Welcome to Open Virtualization Manager</span> + </div> + + <div class="col-sm-12"> + <a id="userportal" href="/ovirt-engine/sso/sso-redirect?module=userportal">User Portal</a><br> + <a id="webadmin" href="/ovirt-engine/sso/sso-redirect?module=webadmin">Administration Portal</a> + </div> + + </div> + </div> + </div> + </div> +</body> +</html> + diff --git a/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/web.xml b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..1c51698 --- /dev/null +++ b/backend/manager/modules/enginesso/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,102 @@ +<?xml version="1.0"?> +<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" + version="2.5"> + + <!-- Application with context parameters --> + <context-param> + <param-name>obrandThemePath</param-name> + <param-value>/theme</param-value> + </context-param> + <context-param> + <param-name>obrandResourcePath</param-name> + <param-value>/theme-resource</param-value> + </context-param> + <context-param> + <param-name>obrandApplicationName</param-name> + <param-value>welcome</param-value> + </context-param> + + <!-- Branding Servlet --> + <servlet> + <servlet-name>BrandingServlet</servlet-name> + <servlet-class>org.ovirt.engine.core.branding.BrandingServlet</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>BrandingServlet</servlet-name> + <url-pattern>/theme/*</url-pattern> + </servlet-mapping> + + <!-- Branding Cascading Resource Servlet --> + <servlet> + <servlet-name>BrandingCascadingResourceServlet</servlet-name> + <servlet-class>org.ovirt.engine.core.branding.BrandingCascadingResourceServlet</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>BrandingCascadingResourceServlet</servlet-name> + <url-pattern>/theme-resource/*</url-pattern> + </servlet-mapping> + + + + <!-- Filters --> + <!-- Locale Filter, determines the user locale --> + <filter> + <filter-name>LocaleFilter</filter-name> + <filter-class>org.ovirt.engine.core.utils.servlet.LocaleFilter</filter-class> + </filter> + <!-- Branding Filter, passes branding information to jsps --> + <filter> + <filter-name>BrandingFilter</filter-name> + <filter-class>org.ovirt.engine.core.branding.BrandingFilter</filter-class> + </filter> + + <!-- Header filter to automatically add some headers to each response --> + <filter> + <filter-name>HeaderFilter</filter-name> + <filter-class>org.ovirt.engine.core.utils.servlet.HeaderFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>HeaderFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <filter-mapping> + <filter-name>LocaleFilter</filter-name> + <url-pattern>/*</url-pattern> + <dispatcher>REQUEST</dispatcher> + <dispatcher>ERROR</dispatcher> + </filter-mapping> + + <filter-mapping> + <filter-name>BrandingFilter</filter-name> + <url-pattern>/*</url-pattern> + <dispatcher>FORWARD</dispatcher> + <dispatcher>REQUEST</dispatcher> + <dispatcher>ERROR</dispatcher> + </filter-mapping> + + <servlet> + <servlet-name>EngineSSOServlet</servlet-name> + <servlet-class>org.ovirt.engine.core.sso.servlets.EngineSSOServlet</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>EngineSSOServlet</servlet-name> + <url-pattern>/index.html</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>EngineSSORedirectServlet</servlet-name> + <servlet-class>org.ovirt.engine.core.sso.servlets.EngineSSORedirectServlet</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>EngineSSORedirectServlet</servlet-name> + <url-pattern>/sso-redirect</url-pattern> + </servlet-mapping> + + <welcome-file-list> + <welcome-file>index.html</welcome-file> + </welcome-file-list> + +</web-app> diff --git a/backend/manager/modules/pom.xml b/backend/manager/modules/pom.xml index 73d590c..0b1b882 100644 --- a/backend/manager/modules/pom.xml +++ b/backend/manager/modules/pom.xml @@ -15,6 +15,7 @@ <description>parent POM for all oVirt modules</description> <modules> + <module>enginesso</module> <module>extensions-api-root</module> <module>uutils</module> <module>extensions-manager</module> diff --git a/ear/pom.xml b/ear/pom.xml index 8bdb747..f5f9a43 100644 --- a/ear/pom.xml +++ b/ear/pom.xml @@ -65,6 +65,13 @@ <dependency> <groupId>org.ovirt.engine.core</groupId> + <artifactId>enginesso</artifactId> + <version>${engine.version}</version> + <type>war</type> + </dependency> + + <dependency> + <groupId>org.ovirt.engine.core</groupId> <artifactId>welcome</artifactId> <version>${engine.version}</version> <type>war</type> @@ -219,6 +226,13 @@ <webModule> <groupId>org.ovirt.engine.core</groupId> + <artifactId>enginesso</artifactId> + <bundleFileName>enginesso.war</bundleFileName> + <contextRoot>/ovirt-engine/sso</contextRoot> + </webModule> + + <webModule> + <groupId>org.ovirt.engine.core</groupId> <artifactId>welcome</artifactId> <bundleFileName>welcome.war</bundleFileName> <contextRoot>/ovirt-engine</contextRoot> -- To view, visit http://gerrit.ovirt.org/36119 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4894fc12653027271b6abd4dd5313b10593703fa Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
