commit 3d8c926ccc1f60c43c7999ad3415185cd812d7d4 Author: Mauro Mugnaini Date: Thu May 21 15:48:12 2020 +0200 Intial GIT commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..34de4b4 --- /dev/null +++ b/.classpath @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..330d718 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +target +bin/* diff --git a/.project b/.project new file mode 100644 index 0000000..475a6b1 --- /dev/null +++ b/.project @@ -0,0 +1,39 @@ + + + oidc-enrollment-hook + + + oidc-library + oidc-library-portal + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..f179e11 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..cac0df4 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..4528a36 --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles=gcube-developer +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.m2e.wtp.prefs b/.settings/org.eclipse.m2e.wtp.prefs new file mode 100644 index 0000000..ef86089 --- /dev/null +++ b/.settings/org.eclipse.m2e.wtp.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.m2e.wtp.enabledProjectSpecificPrefs=false diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..8838a95 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 0000000..cc81385 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..aac0919 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..b440baf --- /dev/null +++ b/pom.xml @@ -0,0 +1,133 @@ + + 4.0.0 + + maven-parent + org.gcube.tools + 1.1.0 + + + org.gcube.portal + oidc-enrollment-hook + war + 0.4.0-SNAPSHOT + + 1.8 + 6.2.5 + 6.2.10.12 + /Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/deploy + + /Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/webapps + + /Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/lib/ext + + /Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/webapps/ROOT + + + + + + org.gcube.distribution + maven-portal-bom + 3.6.0 + pom + import + + + org.jboss.resteasy + resteasy-jaxb-provider + + + com.sun.istack + istack-commons-runtime + + + org.jvnet.staxex + stax-ex + + + org.glassfish.jaxb + txw2 + + + com.sun.xml.fastinfoset + FastInfoset + + + org.glassfish.jaxb + jaxb-runtime + + + + + + + + org.gcube.portal + oidc-library-portal + [0.1.0,) + compile + + + org.gcube.common + oidc-library + [0.1.0,) + compile + + + com.liferay.portal + portal-service + provided + + + com.liferay.portal + util-java + provided + + + javax.portlet + portlet-api + provided + + + javax.servlet + javax.servlet-api + provided + + + + + + com.liferay.maven.plugins + liferay-maven-plugin + ${liferay.maven.plugin.version} + + ${liferay.auto.deploy.dir} + ${liferay.app.server.deploy.dir} + + ${liferay.app.server.lib.global.dir} + + ${liferay.app.server.portal.dir} + + ${liferay.version} + hook + + + + maven-compiler-plugin + + UTF-8 + ${maven.compiler.source} + ${maven.compiler.target} + + + + maven-war-plugin + + WEB-INF/lib/oidc-library*.jar + + + + + \ No newline at end of file diff --git a/src/main/java/com/nubisware/oidc/lr62/OpenIdConnectAutoLogin.java b/src/main/java/com/nubisware/oidc/lr62/OpenIdConnectAutoLogin.java new file mode 100644 index 0000000..8730007 --- /dev/null +++ b/src/main/java/com/nubisware/oidc/lr62/OpenIdConnectAutoLogin.java @@ -0,0 +1,163 @@ +package com.nubisware.oidc.lr62; + +import java.util.Arrays; +import java.util.Calendar; +import java.util.Locale; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.liferay.portal.kernel.exception.PortalException; +import com.liferay.portal.kernel.exception.SystemException; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; +import com.liferay.portal.kernel.util.LocaleUtil; +import com.liferay.portal.kernel.util.StringPool; +import com.liferay.portal.model.User; +import com.liferay.portal.security.auth.BaseAutoLogin; +import com.liferay.portal.service.ServiceContext; +import com.liferay.portal.service.UserLocalServiceUtil; +import com.liferay.portal.util.PortalUtil; +import com.liferay.util.PwdGenerator; +import com.nubisware.oidc.gcube.URLEncodedContextMapper; +import com.nubisware.oidc.rest.JWTToken; + +public class OpenIdConnectAutoLogin extends BaseAutoLogin { + + private static final Log log = LogFactoryUtil.getLog(OpenIdConnectAutoLogin.class); + + @Override + public String[] doLogin(HttpServletRequest request, HttpServletResponse response) throws Exception { + JWTToken token = JWTToken.fromString((String) request.getAttribute(JWTToken.OIDC_TOKEN_ATTRIBUTE)); + if (token == null) { + return null; + } + if (log.isTraceEnabled()) { + log.trace("Token's access token part is: " + token.getAccessTokenString()); + } + LiferayOpenIdConnectConfiguration configuration = LiferayOpenIdConnectConfiguration.getConfiguration(request); + long companyId = PortalUtil.getCompanyId(request); + long groupId = PortalUtil.getScopeGroupId(request); + String portalURL = PortalUtil.getPortalURL(request, true); + User user = createOrUpdateUser(token, companyId, groupId, portalURL, configuration); + if (user != null) { + log.info("Applying sites and roles strategy"); + try { + UserSitesToGroupsAndRolesMapper mapper = new UserSitesToGroupsAndRolesMapper( + user, new URLEncodedContextMapper( + token.getResourceNameToAccessRolesMap(Arrays.asList(JWTToken.ACCOUNT_RESOURCE)))); + + mapper.map(); + } catch (Throwable t) { + // TODO: to be removed when tested in depth + log.error("Applying strategy", t); + } + log.debug("Returning logged in user's info"); + return new String[] { String.valueOf(user.getUserId()), UUID.randomUUID().toString(), "false" }; + } else { + log.warn("User is null"); + return null; + } + } + + public static User createOrUpdateUser(JWTToken token, long companyId, long groupId, String portalURL, + LiferayOpenIdConnectConfiguration configuration) throws Exception { + + String email = token.getEmail(); + String given = token.getGiven(); + String family = token.getFamily(); + String subject = token.getSub(); + User user = null; + try { + boolean updateUser = false; + // Search by email first + user = UserLocalServiceUtil.fetchUserByEmailAddress(companyId, email); + if (user == null) { + log.debug("No Liferay user found with email address=" + email + ", trying with openId"); + // Then search by openId, in case user has changed the email address + user = UserLocalServiceUtil.fetchUserByOpenId(companyId, subject); + if (user == null) { + log.debug("No Liferay user found with openid=" + subject + " and email address=" + email); + if (configuration.createUnexistingUser()) { + log.info("A new user will be created"); + user = addUser(companyId, groupId, portalURL, email, given, family, subject); + } else { + log.info("User will not be created according to configuration"); + return null; + } + } else { + log.info("User found by its openId, the email will be updated"); + updateUser = true; + } + } + if (user != null) { + log.debug("User found, updating name details with info from userinfo if changed"); + if (given != user.getFirstName()) { + user.setFirstName(given); + updateUser = true; + } + if (family != user.getLastName()) { + user.setLastName(family); + updateUser = true; + } + if (email != user.getEmailAddress()) { + user.setEmailAddress(email); + updateUser = true; + } + } + if (updateUser) { + UserLocalServiceUtil.updateUser(user); + } + } catch (SystemException | PortalException e) { + throw new RuntimeException(e); + } + return user; + } + + public static User addUser(long companyId, long groupId, String portalURL, String emailAddress, String firstName, + String lastName, String openid) throws SystemException, PortalException { + + Locale locale = LocaleUtil.getMostRelevantLocale(); + long creatorUserId = 0; + boolean autoPassword = false; + String password1 = PwdGenerator.getPassword(); + String password2 = password1; + boolean autoScreenName = true; + String screenName = StringPool.BLANK; + long facebookId = 0; + String openId = openid; + String middleName = StringPool.BLANK; + int prefixId = 0; + int suffixId = 0; + boolean male = true; + int birthdayMonth = Calendar.JANUARY; + int birthdayDay = 1; + int birthdayYear = 1970; + String jobTitle = StringPool.BLANK; + long[] groupIds = null; + long[] organizationIds = null; + long[] roleIds = null; + long[] userGroupIds = null; + boolean sendEmail = false; + ServiceContext serviceContext = new ServiceContext(); + serviceContext.setScopeGroupId(groupId); + serviceContext.setPortalURL(portalURL); + + User user = UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1, password2, + autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName, middleName, lastName, + prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds, organizationIds, + roleIds, userGroupIds, sendEmail, serviceContext); + + // No password + user.setPasswordReset(false); + // email is already verified by oidc connect provider + user.setEmailAddressVerified(true); + // No reminder query at first login. + user.setReminderQueryQuestion("x"); + user.setReminderQueryAnswer("y"); + UserLocalServiceUtil.updateUser(user); + return user; + } + +} diff --git a/src/main/java/com/nubisware/oidc/lr62/OpenIdConnectLoginFilter.java b/src/main/java/com/nubisware/oidc/lr62/OpenIdConnectLoginFilter.java new file mode 100644 index 0000000..af95c52 --- /dev/null +++ b/src/main/java/com/nubisware/oidc/lr62/OpenIdConnectLoginFilter.java @@ -0,0 +1,80 @@ +package com.nubisware.oidc.lr62; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.liferay.portal.kernel.exception.PortalException; +import com.liferay.portal.kernel.exception.SystemException; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; +import com.liferay.portal.kernel.servlet.BaseFilter; +import com.liferay.portal.model.User; +import com.liferay.portal.util.PortalUtil; +import com.nubisware.oidc.rest.JWTToken; +import com.nubisware.oidc.rest.OpenIdConnectConfiguration; +import com.nubisware.oidc.rest.OpenIdConnectRESTHelper; + +public class OpenIdConnectLoginFilter extends BaseFilter { + + protected static final Log log = LogFactoryUtil.getLog(OpenIdConnectLoginFilter.class); + + public OpenIdConnectLoginFilter() { + super(); + if (log.isDebugEnabled()) { + log.debug("Filter created"); + } + } + + @Override + protected void processFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws Exception { + + User user; + try { + user = PortalUtil.getUser(request); + } catch (PortalException | SystemException e) { + throw new ServletException("Getting user using utls", e); + } + HttpSession session = null; + JWTToken token = null; + if (user == null) { + session = request.getSession(false); + String uri = request.getRequestURI(); + if (log.isDebugEnabled()) { + log.debug("No user logged in " + uri); + } + String sessionId = session.getId(); + OpenIdConnectConfiguration configuration = LiferayOpenIdConnectConfiguration.getConfiguration(request); + if (request.getParameter("state") != null && request.getParameter("state").equals(sessionId)) { + try { + token = OpenIdConnectRESTHelper.queryToken(configuration.getClientId(), + configuration.getTokenUrl(), request.getParameter("code"), configuration.getScope(), + request.getRequestURL().toString()); + } catch (Exception e) { + throw new ServletException("Querying token from OIDC server", e); + } + request.setAttribute(JWTToken.OIDC_TOKEN_ATTRIBUTE, token.getRaw()); + // The Autologin class will perform the auto-login with the token + } else { + String redirectKeycloakURL = OpenIdConnectRESTHelper.buildLoginUrl(configuration.getAuthorizationUrl(), + configuration.getClientId(), sessionId, request.getRequestURL().toString()); + + if (log.isDebugEnabled()) { + log.debug("Redirecting to Keycloak login URL: " + redirectKeycloakURL); + } + response.sendRedirect(redirectKeycloakURL); + return; + } + } + processFilter(getClass(), request, response, filterChain); + } + + @Override + protected Log getLog() { + return log; + } + +} diff --git a/src/main/java/com/nubisware/oidc/lr62/PostLoginAction.java b/src/main/java/com/nubisware/oidc/lr62/PostLoginAction.java new file mode 100644 index 0000000..fac0afa --- /dev/null +++ b/src/main/java/com/nubisware/oidc/lr62/PostLoginAction.java @@ -0,0 +1,30 @@ +package com.nubisware.oidc.lr62; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.liferay.portal.kernel.events.Action; +import com.liferay.portal.kernel.events.ActionException; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; +import com.nubisware.oidc.rest.JWTToken; + +public class PostLoginAction extends Action { + + protected static final Log log = LogFactoryUtil.getLog(PostLoginAction.class); + + @Override + public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException { + if (log.isInfoEnabled()) { + log.info("PostLoginAction invoked"); + } + JWTToken token = JWTToken.fromString((String) request.getAttribute(JWTToken.OIDC_TOKEN_ATTRIBUTE)); + HttpSession session = request.getSession(false); + if (token != null && session != null) { + log.info("Setting OIDC token in session with id: " + session.getId()); + session.setAttribute(JWTToken.OIDC_TOKEN_ATTRIBUTE, token.getRaw()); + } + } + +} diff --git a/src/main/java/com/nubisware/oidc/lr62/PreLoginAction.java b/src/main/java/com/nubisware/oidc/lr62/PreLoginAction.java new file mode 100644 index 0000000..9d2be4b --- /dev/null +++ b/src/main/java/com/nubisware/oidc/lr62/PreLoginAction.java @@ -0,0 +1,22 @@ +package com.nubisware.oidc.lr62; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.liferay.portal.kernel.events.Action; +import com.liferay.portal.kernel.events.ActionException; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; + +public class PreLoginAction extends Action { + + protected static final Log log = LogFactoryUtil.getLog(PreLoginAction.class); + + @Override + public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException { + if (log.isDebugEnabled()) { + log.debug("PreLoginAction invoked"); + } + } + +} diff --git a/src/main/java/com/nubisware/oidc/lr62/SessionCreateAction.java b/src/main/java/com/nubisware/oidc/lr62/SessionCreateAction.java new file mode 100644 index 0000000..4699b9d --- /dev/null +++ b/src/main/java/com/nubisware/oidc/lr62/SessionCreateAction.java @@ -0,0 +1,22 @@ +package com.nubisware.oidc.lr62; + +import javax.servlet.http.HttpSession; + +import com.liferay.portal.kernel.events.ActionException; +import com.liferay.portal.kernel.events.SessionAction; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; + +public class SessionCreateAction extends SessionAction { + + protected static final Log log = LogFactoryUtil.getLog(SessionCreateAction.class); + + @Override + public void run(HttpSession session) throws ActionException { + if (log.isDebugEnabled()) { + log.debug("Session created"); + } + // Noting to do at the moment + } + +} diff --git a/src/main/java/com/nubisware/oidc/lr62/SessionDestroyAction.java b/src/main/java/com/nubisware/oidc/lr62/SessionDestroyAction.java new file mode 100644 index 0000000..b73f297 --- /dev/null +++ b/src/main/java/com/nubisware/oidc/lr62/SessionDestroyAction.java @@ -0,0 +1,41 @@ +package com.nubisware.oidc.lr62; + +import java.io.IOException; + +import javax.servlet.http.HttpSession; + +import com.liferay.portal.kernel.events.ActionException; +import com.liferay.portal.kernel.events.SessionAction; +import com.liferay.portal.kernel.log.Log; +import com.liferay.portal.kernel.log.LogFactoryUtil; +import com.nubisware.oidc.rest.JWTToken; +import com.nubisware.oidc.rest.OpenIdConnectRESTHelper; + +public class SessionDestroyAction extends SessionAction { + + protected static final Log log = LogFactoryUtil.getLog(SessionDestroyAction.class); + + @Override + public void run(HttpSession session) throws ActionException { + if (log.isTraceEnabled()) { + log.trace("Session id is: " + session.getId()); + } + LiferayOpenIdConnectConfiguration configuration = LiferayOpenIdConnectConfiguration.getConfiguration(); + if (configuration.logoutOnPortalLogout()) { + JWTToken token = JWTToken.fromString((String) session.getAttribute(JWTToken.OIDC_TOKEN_ATTRIBUTE)); + if (token != null) { + log.debug("Performing logout on OIDC server due to session destroy"); + try { + OpenIdConnectRESTHelper.logout(token, configuration.getLogoutUrl(), configuration.getClientId()); + } catch (IOException e) { + throw new ActionException("Performing logut on OIDC server", e); + } + } else { + log.error("Cannot find the OIDC token in session"); + } + } else { + log.debug("Don't performing OIDC logout according to configuration"); + } + } + +} diff --git a/src/main/resources/portal.properties b/src/main/resources/portal.properties new file mode 100644 index 0000000..f0d253b --- /dev/null +++ b/src/main/resources/portal.properties @@ -0,0 +1,17 @@ +servlet.session.create.events=com.nubisware.oidc.lr62.SessionCreateAction +login.events.pre=com.nubisware.oidc.lr62.PreLoginAction +auto.login.hooks=com.nubisware.oidc.lr62.OpenIdConnectAutoLogin +login.events.post=com.nubisware.oidc.lr62.PostLoginAction +servlet.session.destroy.events=com.nubisware.oidc.lr62.SessionDestroyAction + +session.shared.attributes=USER_ + +company.login.prepopulate.domain=false +d4science.oidc-authorization=https://nubis2.int.d4science.net/auth/realms/d4science/protocol/openid-connect/auth +d4science.oidc-token=https://nubis2.int.d4science.net/auth/realms/d4science/protocol/openid-connect/token +d4science.oidc-issuer=https://nubis2.int.d4science.net/auth/realms/d4science +d4science.oidc-client-id=portal +d4science.oidc-scope=openid profile email +d4science.oidc-logout=https://nubis2.int.d4science.net/auth/realms/d4science/protocol/openid-connect/logout +d4science.oidc-logout-on-portal-logout=true +d4science.oidc-create-unexisting-user=true \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-hook.xml b/src/main/webapp/WEB-INF/liferay-hook.xml new file mode 100644 index 0000000..bdf76f0 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-hook.xml @@ -0,0 +1,16 @@ + + + + + portal.properties + + OpenIdConnectLoginFilter + com.nubisware.oidc.lr62.OpenIdConnectLoginFilter + + + OpenIdConnectLoginFilter + /c/portal/login + REQUEST + FORWARD + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-plugin-package.properties b/src/main/webapp/WEB-INF/liferay-plugin-package.properties new file mode 100644 index 0000000..e5a622a --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-plugin-package.properties @@ -0,0 +1,11 @@ +name=OIDC Login Hook +module-group-id=liferay +module-incremental-version=1 +tags= +short-description= +long-description= +change-log= +page-url=http://www.liferay.com +author=Liferay, Inc. +licenses=LGPL +liferay-versions=6.2.0+ \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..387d66f --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/src/test/java/META-INF/module-log4j-ext.xml b/src/test/java/META-INF/module-log4j-ext.xml new file mode 100644 index 0000000..3ff4b54 --- /dev/null +++ b/src/test/java/META-INF/module-log4j-ext.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties new file mode 100644 index 0000000..573aa10 --- /dev/null +++ b/src/test/resources/log4j.properties @@ -0,0 +1,7 @@ +log4j.rootLogger=DEBUG, CONSOLE + +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n + +log4j.category.com.nubisware=DEBUG \ No newline at end of file diff --git a/src/test/resources/logging.properties b/src/test/resources/logging.properties new file mode 100644 index 0000000..cd742d1 --- /dev/null +++ b/src/test/resources/logging.properties @@ -0,0 +1,6 @@ +debug.com.sun.portal.level=WARNING + +org.apache.catalina.core.ContainerBase.[Catalina].handlers=java.util.logging.ConsoleHandler +org.apache.catalina.core.ContainerBase.[Catalina].level=INFO + +com.nubisware.level = DEBUG \ No newline at end of file