Ravi Nori has uploaded a new change for review. Change subject: core, webadmin: Modify webadmin to use enginesso for authentication ......................................................................
core, webadmin: Modify webadmin to use enginesso for authentication Add webadmin side code to support authentication using engine sso Change-Id: Iff0aee9d0f5ee606ff7f397cab69017ca7d9df08 Bug-Url: https://bugzilla.redhat.com/1092744 Signed-off-by: Ravi Nori <rn...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/CreateUserSessionCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LogoutUserCommand.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateUserSessionParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java M backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/servlets/EngineSSOServlet.java M backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/utils/SSOUtils.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOAuthorizationException.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginFilter.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginServlet.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOPermissionsRoleManager.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOUtils.java M frontend/webadmin/modules/webadmin/src/main/webapp/WEB-INF/web.xml 12 files changed, 465 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/19/36619/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/CreateUserSessionCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/CreateUserSessionCommand.java new file mode 100644 index 0000000..5ee7501 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/CreateUserSessionCommand.java @@ -0,0 +1,45 @@ +package org.ovirt.engine.core.bll.aaa; + +import org.apache.commons.codec.binary.Base64; +import org.ovirt.engine.core.bll.CommandBase; +import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.action.CreateUserSessionParameters; + +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.Collections; +import java.util.List; + +public class CreateUserSessionCommand<T extends CreateUserSessionParameters> extends CommandBase<T> { + public CreateUserSessionCommand(T parameters) { + super(parameters); + setCurrentUser(parameters.getUser()); + } + + @Override + protected void executeCommand() { + String engineSessionId = null; + try { + byte s[] = new byte[64]; + SecureRandom.getInstance("SHA1PRNG").nextBytes(s); + engineSessionId = new Base64(0).encodeToString(s); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + SessionDataContainer.getInstance().setUser(engineSessionId, getParameters().getUser()); + getReturnValue().setActionReturnValue(engineSessionId); + setSucceeded(true); + } + + @Override + protected boolean isUserAuthorizedToRunAction() { + return true; + } + + @Override + public List<PermissionSubject> getPermissionCheckSubjects() { + // Not needed for admin operations. + return Collections.emptyList(); + } + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LogoutUserCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LogoutUserCommand.java index 669ffd6..c471294 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LogoutUserCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LogoutUserCommand.java @@ -44,6 +44,10 @@ } SessionDataContainer.getInstance().removeSessionOnLogout(getParameters().getSessionId()); } + + if (SessionDataContainer.getInstance().getUser(getParameters().getSessionId(), false) != null) { + SessionDataContainer.getInstance().removeSessionOnLogout(getParameters().getSessionId()); + } setSucceeded(true); } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateUserSessionParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateUserSessionParameters.java new file mode 100644 index 0000000..c4a5b63 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateUserSessionParameters.java @@ -0,0 +1,28 @@ +package org.ovirt.engine.core.common.action; + +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; + +public class CreateUserSessionParameters extends VdcActionParametersBase { + + /** + * + */ + private static final long serialVersionUID = 5238452182295928273L; + private DbUser user; + + public CreateUserSessionParameters(DbUser user) { + this.user = user; + } + + public CreateUserSessionParameters() { + } + + public void setUser(DbUser user) { + this.user = user; + } + + public DbUser getUser() { + return user; + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java index 3165e6b..b467378 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java @@ -175,6 +175,7 @@ LoginAdminUser(418, ActionGroup.LOGIN, false, QuotaDependency.NONE), AddUser(419, ActionGroup.MANIPULATE_USERS, false, QuotaDependency.NONE), AddGroup(420, ActionGroup.MANIPULATE_USERS, false, QuotaDependency.NONE), + CreateUserSession(421, ActionGroup.LOGIN, false, QuotaDependency.NONE), // Tags AddTag(501, false, QuotaDependency.NONE), RemoveTag(502, false, QuotaDependency.NONE), 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 index ef873b1..6852a01 100644 --- 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 @@ -31,6 +31,12 @@ if (StringUtils.isEmpty(request.getParameter(SSOUtils.MODULE))) { throw new RuntimeException("No module name found in request."); } + if (StringUtils.isNotEmpty(request.getParameter(SSOUtils.REAUTHENTICATE))) { + HttpSession existingSession = request.getSession(false); + if (existingSession != null) { + existingSession.invalidate(); + } + } HttpSession session = request.getSession(true); if (SSOUtils.isUserAuthenticated(session)) { request.getRequestDispatcher("/sso-redirect").forward(request, response); diff --git a/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/utils/SSOUtils.java b/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/utils/SSOUtils.java index 02ff0b1..27e91f1 100644 --- a/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/utils/SSOUtils.java +++ b/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/utils/SSOUtils.java @@ -18,6 +18,7 @@ public static final String SSO_PRINCIPAL_RECORD_ATTR_NAME = "PRINCIPAL_RECORD"; public static final String SSO_AUTH_RECORD_ATTR_NAME = "AUTH_RECORD"; public static final String MODULE = "module"; + public static final String REAUTHENTICATE = "reauthenticate"; public static final String USER_GROUP_MANAGER = "user_group_manager"; public static final String EXTENSION_MANAGER = "ext_manager"; public static final String SSO_LOCAL_CONFIG = "localConfig"; diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOAuthorizationException.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOAuthorizationException.java new file mode 100644 index 0000000..95afefe --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOAuthorizationException.java @@ -0,0 +1,13 @@ +package org.ovirt.engine.core.utils.servlet; + +public class SSOAuthorizationException extends Exception { + private static final long serialVersionUID = 3399862373159832066L; + + public SSOAuthorizationException(String msg) { + super(msg); + } + + public SSOAuthorizationException(String msg, Exception ex) { + super(msg, ex); + } +} diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginFilter.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginFilter.java new file mode 100644 index 0000000..7719741 --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginFilter.java @@ -0,0 +1,64 @@ +package org.ovirt.engine.core.utils.servlet; + +import org.ovirt.engine.core.common.constants.SessionConstants; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class SSOLoginFilter implements Filter { + + private String loginUrl; + private String ssoUrl; + private String ssoReauthenticateUrl; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + String strVal = filterConfig.getInitParameter("login-url"); + if (strVal == null) { + throw new RuntimeException("No login-url init parameter specified."); + } else { + loginUrl = strVal; + } + strVal = filterConfig.getInitParameter("sso-url"); + if (strVal == null) { + throw new RuntimeException("No sso-url init parameter specified."); + } else { + ssoUrl = strVal; + ssoReauthenticateUrl = strVal + "&reauthenticate=true"; + } + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, + ServletException { + HttpServletRequest req = (HttpServletRequest) request; + String url = req.getRequestURL().toString(); + if (url.indexOf(loginUrl) != -1) { + request.getRequestDispatcher(loginUrl).forward(request, response); + } else { + HttpSession session = req.getSession(false); + if (session != null && session.getAttribute(SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY) != null) { + if (SSOUtils.isSessionValid((String) session.getAttribute(SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY))) { + chain.doFilter(request, response); + } else { + ((HttpServletResponse) response).sendRedirect(ssoReauthenticateUrl); + } + } else { + ((HttpServletResponse) response).sendRedirect(ssoUrl); + } + } + } + + @Override + public void destroy() { + } + +} diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginServlet.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginServlet.java new file mode 100644 index 0000000..0a13145 --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOLoginServlet.java @@ -0,0 +1,67 @@ +package org.ovirt.engine.core.utils.servlet; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.common.constants.SessionConstants; +import org.ovirt.engine.core.compat.Guid; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +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 SSOLoginServlet extends HttpServlet { + private static final long serialVersionUID = 9210030009170727847L; + + private Logger log = LoggerFactory.getLogger(getClass()); + private boolean loginAsAdmin = false; + private String moduleUrl; + + @Override + public void init() throws ServletException { + String strVal = getServletConfig().getInitParameter("login-as-admin"); + if (strVal != null) { + loginAsAdmin = Boolean.parseBoolean(strVal); + } + strVal = getServletConfig().getInitParameter("module-url"); + if (strVal == null) { + throw new RuntimeException("No module-url init parameter specified."); + } else { + moduleUrl = strVal; + } + } + + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (StringUtils.isEmpty(request.getParameter("userId"))) { + throw new RuntimeException("No user id found in request."); + } + + Guid userId = Guid.createGuidFromString(request.getParameter("userId")); + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String[] groupIds = request.getParameterValues("groupId"); + if (groupIds == null) { + groupIds = new String[0]; + } + try { + SSOUtils.checkUserAndGroupsAuthorization(userId, username, groupIds); + boolean isAdmin = SSOUtils.isAdminUser(userId, groupIds); + if (loginAsAdmin && !isAdmin) { + throw new SSOAuthorizationException( + String.format("The user %s is not authorized to perform login", username)); + } + HttpSession httpSession = request.getSession(true); + httpSession.setAttribute( + SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY, + SSOUtils.attachUserToSession(userId, username, email, groupIds, isAdmin)); + } catch (SSOAuthorizationException ex) { + log.error(ex.getMessage()); + } + response.sendRedirect(moduleUrl); + } + +} diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOPermissionsRoleManager.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOPermissionsRoleManager.java new file mode 100644 index 0000000..bdcb7b6 --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOPermissionsRoleManager.java @@ -0,0 +1,103 @@ +package org.ovirt.engine.core.utils.servlet; + +import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.businessentities.ActionGroup; +import org.ovirt.engine.core.common.businessentities.Role; +import org.ovirt.engine.core.common.businessentities.RoleType; +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.mode.ApplicationMode; +import org.ovirt.engine.core.compat.Guid; + +import javax.naming.InitialContext; +import javax.naming.NamingException; +import javax.sql.DataSource; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class SSOPermissionsRoleManager { + + public static final String DATA_SOURCE = "java:/ENGINEDataSource"; + private DataSource ds; + + public SSOPermissionsRoleManager() { + try { + ds = (DataSource) new InitialContext().lookup(DATA_SOURCE); + if (ds == null) { + throw new RuntimeException("Failed to obtain data source"); + } + } catch (NamingException ex) { + throw new RuntimeException("Error looking up resource " + DATA_SOURCE); + } + } + + public Guid getEntityPermissionsForUserAndGroups(Guid userId, + String groupIds, + ActionGroup actionGroup, + Guid objectId, + VdcObjectType vdcObjectType, + boolean ignoreEveryone) throws SQLException { + Guid id = null; + try ( + Connection connection = ds.getConnection(); + CallableStatement cs = connection.prepareCall("SELECT * FROM get_entity_permissions_for_user_and_groups(?, ?, ?, ?, ?, ?)"); + ) { + cs.setObject(1, userId.getUuid()); + cs.setString(2, groupIds); + cs.setInt(3, actionGroup.getId()); + cs.setObject(4, objectId.getUuid()); + cs.setInt(5, vdcObjectType.getValue()); + cs.setBoolean(6, ignoreEveryone); + + try (ResultSet rs = cs.executeQuery();) { + if (rs.next()) { + id = new Guid((UUID) rs.getObject(1)); + } + } + } + return id; + } + + public List<Role> getAnyAdminRoleForUserAndGroups(Guid userId, String groupIds) throws SQLException { + Integer appMode = Config.<Integer> getValue(ConfigValues.ApplicationMode); + List<Role> roles = new ArrayList<>(); + try ( + Connection connection = ds.getConnection(); + CallableStatement cs = connection.prepareCall("SELECT * FROM GetAnyAdminRoleByUserIdAndGroupIds(?, ?, ?)"); + ) { + cs.setObject(1, userId.getUuid()); + cs.setString(2, groupIds); + cs.setInt(3, appMode.intValue()); + + try (ResultSet rs = cs.executeQuery();) { + while (rs.next()) { + Role role = new Role(); + role.setdescription(rs.getString("description")); + role.setId(getGuid(rs, "id")); + role.setname(rs.getString("name")); + role.setis_readonly(rs.getBoolean("is_readonly")); + role.setType(RoleType.getById(rs.getInt("role_type"))); + role.setAllowsViewingChildren(rs.getBoolean("allows_viewing_children")); + role.setAppMode(ApplicationMode.from(rs.getInt("app_mode"))); + roles.add(role); + } + } + } + return roles; + } + + private static Guid getGuid(ResultSet resultSet, String columnName) throws SQLException { + Guid defaultValue = Guid.Empty; + UUID uuid = (UUID) resultSet.getObject(columnName); + if (uuid == null || resultSet.wasNull()) { + return defaultValue; + } + return new Guid(uuid); + } + +} diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOUtils.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOUtils.java new file mode 100644 index 0000000..26a2188 --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/SSOUtils.java @@ -0,0 +1,98 @@ +package org.ovirt.engine.core.utils.servlet; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.action.CreateUserSessionParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.action.VdcReturnValueBase; +import org.ovirt.engine.core.common.businessentities.ActionGroup; +import org.ovirt.engine.core.common.businessentities.Role; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.core.common.interfaces.BackendLocal; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.naming.Context; +import javax.naming.InitialContext; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +public class SSOUtils { + private static final Guid BOTTOM_OBJECT_ID = new Guid("BBB00000-0000-0000-0000-123456789BBB"); + private static BackendLocal backend; + private static SSOPermissionsRoleManager permissionsRoleManager; + private static Logger log = LoggerFactory.getLogger(SSOUtils.class); + + static { + // Lookup the backend bean: + try { + Context initial = new InitialContext(); + backend = (BackendLocal) initial.lookup("java:global/engine/bll/Backend!org.ovirt.engine.core.common.interfaces.BackendLocal"); + } + catch (Exception exception) { + throw new RuntimeException("Can't find reference to backend bean.", exception); + } + + permissionsRoleManager = new SSOPermissionsRoleManager(); + } + + public static boolean isSessionValid(String session) { + VdcQueryReturnValue returnValue = backend.runPublicQuery( + VdcQueryType.ValidateSession, + new VdcQueryParametersBase(session)); + return returnValue.getSucceeded(); + } + + public static String attachUserToSession(Guid userId, String username, String email, String[] groupIds, boolean isAdmin) { + String engineSessionId = null; + DbUser user = new DbUser(); + user.setId(userId); + user.setLoginName(username); + user.setEmail(email); + user.setGroupIds((Collection) Arrays.asList(groupIds)); + user.setAdmin(isAdmin); + VdcReturnValueBase retVal = backend.runAction(VdcActionType.CreateUserSession, new CreateUserSessionParameters(user)); + if (retVal.getSucceeded()) { + engineSessionId = (String) retVal.getActionReturnValue(); + } + return engineSessionId; + } + + public static void checkUserAndGroupsAuthorization(Guid userId, + String username, + String[] groupIds) throws SSOAuthorizationException { + try { + if (permissionsRoleManager.getEntityPermissionsForUserAndGroups(userId, + StringUtils.join(groupIds, ","), + ActionGroup.LOGIN, + BOTTOM_OBJECT_ID, + VdcObjectType.Bottom, + true) == null) { + throw new SSOAuthorizationException(String.format("The user %s is not authorized to perform login", username)); + } + } catch (SQLException ex) { + log.error("Internal Database Error", ex); + throw new SSOAuthorizationException("Internal Database Error", ex); + } + } + + public static boolean isAdminUser(Guid userId, String[] groupIds) throws SSOAuthorizationException { + try { + List<Role> userRoles = permissionsRoleManager.getAnyAdminRoleForUserAndGroups(userId, StringUtils.join(groupIds, ",")); + if (!userRoles.isEmpty()) { + log.debug("User logged to admin using role '{}'", userRoles.get(0).getname()); + return true; + } + } catch (SQLException ex) { + log.error("Internal Database Error", ex); + throw new SSOAuthorizationException("Internal Database Error", ex); + } + return false; + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/webapp/WEB-INF/web.xml b/frontend/webadmin/modules/webadmin/src/main/webapp/WEB-INF/web.xml index a88f172..42a43dd 100644 --- a/frontend/webadmin/modules/webadmin/src/main/webapp/WEB-INF/web.xml +++ b/frontend/webadmin/modules/webadmin/src/main/webapp/WEB-INF/web.xml @@ -21,6 +21,24 @@ <param-name>contextToRootModifier</param-name> <param-value>..</param-value> </context-param> + + <filter> + <filter-name>SSOLoginFilter</filter-name> + <filter-class>org.ovirt.engine.core.utils.servlet.SSOLoginFilter</filter-class> + <init-param> + <param-name>login-url</param-name> + <param-value>/public/login</param-value> + </init-param> + <init-param> + <param-name>sso-url</param-name> + <param-value>/ovirt-engine/sso?module=webadmin</param-value> + </init-param> + </filter> + <filter-mapping> + <filter-name>SSOLoginFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + <filter> <filter-name>SessionValidationFilter</filter-name> <filter-class>org.ovirt.engine.core.aaa.filters.SessionValidationFilter</filter-class> @@ -100,6 +118,23 @@ <url-pattern>/*</url-pattern> </filter-mapping> + <servlet> + <servlet-name>login</servlet-name> + <servlet-class>org.ovirt.engine.core.utils.servlet.SSOLoginServlet</servlet-class> + <init-param> + <param-name>login-as-admin</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>module-url</param-name> + <param-value>/ovirt-engine/webadmin/WebAdmin.html</param-value> + </init-param> + </servlet> + <servlet-mapping> + <servlet-name>login</servlet-name> + <url-pattern>/public/login</url-pattern> + </servlet-mapping> + <servlet-mapping> <servlet-name>WebAdminHostPageServlet</servlet-name> <url-pattern>/WebAdmin.html</url-pattern> -- To view, visit http://gerrit.ovirt.org/36619 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iff0aee9d0f5ee606ff7f397cab69017ca7d9df08 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches