1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/*-
* ================================================================================
* ECOMP Portal
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ================================================================================
*/
package org.openecomp.portalapp.util;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.openecomp.portalapp.portal.utils.EPCommonSystemProperties;
import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants;
import org.openecomp.portalsdk.core.onboarding.listener.PortalTimeoutHandler;
import org.openecomp.portalsdk.core.onboarding.util.CipherUtil;
import org.openecomp.portalsdk.core.util.SystemProperties;
import org.openecomp.portalsdk.core.web.support.AppUtils;
public class SessionCookieUtil {
//private static final String JSESSIONID = "JSESSIONID";
private static final String EP_SERVICE = "EPService";
private static final String USER_ID = "UserId";
private static Integer cookieMaxAge = -1;
private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionCookieUtil.class);
public static void preSetUp(HttpServletRequest request,
HttpServletResponse response) {
initateSessionMgtHandler(request);
//set up EPService cookie
setUpEPServiceCookie(request, response);
}
public static void setUpEPServiceCookie(HttpServletRequest request,
HttpServletResponse response) {
String jSessionId = getJessionId(request);
Cookie cookie1 = new Cookie(EP_SERVICE, jSessionId);
cookie1.setMaxAge(cookieMaxAge);
cookie1.setDomain(EPCommonSystemProperties.getProperty(EPCommonSystemProperties.COOKIE_DOMAIN));
cookie1.setPath("/");
response.addCookie(cookie1);
}
public static void setUpUserIdCookie(HttpServletRequest request,
HttpServletResponse response,String userId) throws Exception {
logger.info("************** session cookie util set up UserId cookie begins");
userId = CipherUtil.encrypt(userId,
SystemProperties.getProperty(SystemProperties.Decryption_Key));
Cookie cookie1 = new Cookie(USER_ID, userId);
cookie1.setMaxAge(cookieMaxAge);
cookie1.setDomain(EPCommonSystemProperties.getProperty(EPCommonSystemProperties.COOKIE_DOMAIN));
cookie1.setPath("/");
response.addCookie(cookie1);
logger.info("************** session cookie util set up EP cookie completed");
}
public static String getUserIdFromCookie(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String userId = "";
Cookie[] cookies = request.getCookies();
Cookie userIdcookie = null;
if (cookies != null)
for (Cookie cookie : cookies)
if (cookie.getName().equals(USER_ID))
userIdcookie = cookie;
if(userIdcookie!=null){
userId = CipherUtil.decrypt(userIdcookie.getValue(),
SystemProperties.getProperty(SystemProperties.Decryption_Key));
}
logger.info("************** session cookie util set up EP cookie completed");
return userId;
}
public static String getJessionId(HttpServletRequest request){
return request.getSession().getId();
/*
Cookie ep = WebUtils.getCookie(request, JSESSIONID);
if(ep==null){
return request.getSession().getId();
}
return ep.getValue();
*/
}
protected static void initateSessionMgtHandler(HttpServletRequest request) {
String jSessionId = getJessionId(request);
storeMaxInactiveTime(request);
PortalTimeoutHandler.sessionCreated(jSessionId, jSessionId, AppUtils.getSession(request));
}
protected static void storeMaxInactiveTime(HttpServletRequest request) {
HttpSession session = AppUtils.getSession(request);
if(session.getAttribute(PortalApiConstants.GLOBAL_SESSION_MAX_IDLE_TIME) == null)
session.setAttribute(PortalApiConstants.GLOBAL_SESSION_MAX_IDLE_TIME,session.getMaxInactiveInterval());
}
public static void resetSessionMaxIdleTimeOut(HttpServletRequest request) {
try {
HttpSession session = AppUtils.getSession(request);
final Object maxIdleAttribute = session.getAttribute(PortalApiConstants.GLOBAL_SESSION_MAX_IDLE_TIME);
if(session != null && maxIdleAttribute != null) {
session.setMaxInactiveInterval(Integer.parseInt(maxIdleAttribute.toString()));
}
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "Could not reset the session timeout. Details: " + EcompPortalUtils.getStackTrace(e));
}
}
}
|