2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the "License");
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
38 package org.onap.portalapp.util;
40 import javax.servlet.http.Cookie;
41 import javax.servlet.http.HttpServletRequest;
42 import javax.servlet.http.HttpServletResponse;
43 import javax.servlet.http.HttpSession;
45 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
46 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
47 import org.onap.portalsdk.core.onboarding.listener.PortalTimeoutHandler;
48 import org.onap.portalsdk.core.onboarding.util.CipherUtil;
49 import org.onap.portalsdk.core.onboarding.util.PortalApiConstants;
50 import org.onap.portalsdk.core.util.SystemProperties;
51 import org.onap.portalsdk.core.web.support.AppUtils;
53 public class SessionCookieUtil {
55 //private static final String JSESSIONID = "JSESSIONID";
56 private static final String EP_SERVICE = "EPService";
57 private static final String USER_ID = "UserId";
58 private static Integer cookieMaxAge = -1;
59 private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionCookieUtil.class);
61 public static void preSetUp(HttpServletRequest request,
62 HttpServletResponse response) {
63 initateSessionMgtHandler(request);
64 //set up EPService cookie
65 setUpEPServiceCookie(request, response);
68 public static void setUpEPServiceCookie(HttpServletRequest request,
69 HttpServletResponse response) {
70 String jSessionId = getJessionId(request);
71 Cookie cookie1 = new Cookie(EP_SERVICE, jSessionId);
72 cookie1.setMaxAge(cookieMaxAge);
73 cookie1.setDomain(EPCommonSystemProperties.getProperty(EPCommonSystemProperties.COOKIE_DOMAIN));
75 response.addCookie(cookie1);
78 public static void setUpUserIdCookie(HttpServletRequest request,
79 HttpServletResponse response,String userId) throws Exception {
80 logger.info("************** session cookie util set up UserId cookie begins");
81 userId = CipherUtil.encrypt(userId,
82 SystemProperties.getProperty(SystemProperties.Decryption_Key));
83 Cookie cookie1 = new Cookie(USER_ID, userId);
84 cookie1.setMaxAge(cookieMaxAge);
85 cookie1.setDomain(EPCommonSystemProperties.getProperty(EPCommonSystemProperties.COOKIE_DOMAIN));
87 response.addCookie(cookie1);
88 logger.info("************** session cookie util set up EP cookie completed");
91 public static String getUserIdFromCookie(HttpServletRequest request,
92 HttpServletResponse response) throws Exception {
94 Cookie[] cookies = request.getCookies();
95 Cookie userIdcookie = null;
97 for (Cookie cookie : cookies)
98 if (cookie.getName().equals(USER_ID))
99 userIdcookie = cookie;
100 if(userIdcookie!=null){
101 userId = CipherUtil.decrypt(userIdcookie.getValue(),
102 SystemProperties.getProperty(SystemProperties.Decryption_Key));
105 logger.info("************** session cookie util set up EP cookie completed");
109 public static String getJessionId(HttpServletRequest request){
111 return request.getSession().getId();
113 Cookie ep = WebUtils.getCookie(request, JSESSIONID);
115 return request.getSession().getId();
117 return ep.getValue();
121 protected static void initateSessionMgtHandler(HttpServletRequest request) {
122 String jSessionId = getJessionId(request);
123 storeMaxInactiveTime(request);
124 PortalTimeoutHandler.sessionCreated(jSessionId, jSessionId, AppUtils.getSession(request));
127 protected static void storeMaxInactiveTime(HttpServletRequest request) {
128 HttpSession session = AppUtils.getSession(request);
129 if(session.getAttribute(PortalApiConstants.GLOBAL_SESSION_MAX_IDLE_TIME) == null)
130 session.setAttribute(PortalApiConstants.GLOBAL_SESSION_MAX_IDLE_TIME,session.getMaxInactiveInterval());
133 public static void resetSessionMaxIdleTimeOut(HttpServletRequest request) {
135 HttpSession session = AppUtils.getSession(request);
136 final Object maxIdleAttribute = session.getAttribute(PortalApiConstants.GLOBAL_SESSION_MAX_IDLE_TIME);
137 if(session != null && maxIdleAttribute != null) {
138 session.setMaxInactiveInterval(Integer.parseInt(maxIdleAttribute.toString()));
140 } catch (Exception e) {
141 logger.error(EELFLoggerDelegate.errorLogger, "resetSessionMaxIdleTimeOut failed", e);