summaryrefslogtreecommitdiffstats
path: root/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java')
-rw-r--r--catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java449
1 files changed, 224 insertions, 225 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java
index 31467b7edc..84e0226e7a 100644
--- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java
+++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/PortalServlet.java
@@ -7,9 +7,9 @@
* 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.
@@ -21,8 +21,6 @@
package org.openecomp.sdc.fe.servlets;
import org.onap.portalsdk.core.onboarding.util.CipherUtil;
-import org.onap.portalsdk.core.onboarding.util.PortalApiConstants;
-import org.onap.portalsdk.core.onboarding.util.PortalApiProperties;
import org.openecomp.sdc.common.impl.MutableHttpServletRequest;
import org.openecomp.sdc.fe.Constants;
import org.openecomp.sdc.fe.config.Configuration;
@@ -50,245 +48,246 @@ import java.util.List;
@Path("/")
public class PortalServlet extends HttpServlet {
- private static Logger log = LoggerFactory.getLogger(PortalServlet.class.getName());
- private static final long serialVersionUID = 1L;
- public static final String MISSING_HEADERS_MSG = "Missing Headers In Request";
- public static final String AUTHORIZATION_ERROR_MSG = "Autherization error";
- public static final String NEW_LINE = System.getProperty("line.separator");
+ private static Logger log = LoggerFactory.getLogger(PortalServlet.class.getName());
+ private static final long serialVersionUID = 1L;
+ public static final String MISSING_HEADERS_MSG = "Missing Headers In Request";
+ private static final String AUTHORIZATION_ERROR_MSG = "Autherization error";
+ private static final String NEW_LINE = System.getProperty("line.separator");
- /**
- * Entry point from ECOMP portal
- */
- @GET
- @Path("/portal")
- public void doGet(@Context final HttpServletRequest request, @Context final HttpServletResponse response) {
- try {
- addRequestHeadersUsingWebseal(request, response);
- } catch (Exception e) {
- FeEcompErrorManager.getInstance().logFePortalServletError("Portal Servlet");
- log.error("Error during getting portal page", e);
- }
- }
-
- /**
- * Building new HTTP request and setting headers for the request The request
- * will dispatch to index.html
- *
- * @param request
- * @param response
- * @throws ServletException
- * @throws IOException
- */
- private void addRequestHeadersUsingWebseal(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
-
- response.setContentType("text/html");
+ /**
+ * Entry point from ECOMP portal
+ */
+ @GET
+ @Path("/portal")
+ public void doGet(@Context final HttpServletRequest request, @Context final HttpServletResponse response) {
+ try {
+ addRequestHeadersUsingWebseal(request, response);
+ } catch (Exception e) {
+ FeEcompErrorManager.getInstance().logFePortalServletError("Portal Servlet");
+ log.error("Error during getting portal page", e);
+ }
+ }
- // Create new request object to dispatch
- MutableHttpServletRequest mutableRequest = new MutableHttpServletRequest(request);
+ /**
+ * Building new HTTP request and setting headers for the request The request
+ * will dispatch to index.html
+ *
+ * @param request
+ * @param response
+ * @throws ServletException
+ * @throws IOException
+ */
+ private void addRequestHeadersUsingWebseal(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
- // Get configuration object (reads data from configuration.yaml)
- Configuration configuration = getConfiguration(request);
+ response.setContentType("text/html");
- // Check if we got header from webseal
- String userId = request.getHeader(Constants.WEBSEAL_USER_ID_HEADER);
- if (null == userId) {
- // Authentication via ecomp portal
- try {
- String userIdFromCookie = getUserIdFromCookie(request);
- if (("").equals(userIdFromCookie)) {
- // This is probably a webseal request, so missing header in request should be printed.
- response.sendError(HttpServletResponse.SC_USE_PROXY, MISSING_HEADERS_MSG);
- }
- userId = userIdFromCookie;
- } catch (Exception e) {
- response.sendError(HttpServletResponse.SC_USE_PROXY, AUTHORIZATION_ERROR_MSG);
- }
- }
-
- // Replace webseal header with open source header
- mutableRequest.putHeader(Constants.USER_ID, userId);
-
- // Getting identification headers from configuration.yaml
- // (identificationHeaderFields) and setting them to new request
- // mutableRequest
- List<List<String>> identificationHeaderFields = configuration.getIdentificationHeaderFields();
- for (List<String> possibleHeadersToRecieve : identificationHeaderFields) {
- String allowedHeaderToPass = possibleHeadersToRecieve.get(0);
- setNewHeader(possibleHeadersToRecieve, allowedHeaderToPass, request, mutableRequest);
- }
+ // Create new request object to dispatch
+ MutableHttpServletRequest mutableRequest = new MutableHttpServletRequest(request);
- // Getting optional headers from configuration.yaml
- // (optionalHeaderFields) and setting them to new request mutableRequest
- List<List<String>> optionalHeaderFields = configuration.getOptionalHeaderFields();
- for (List<String> possibleHeadersToRecieve : optionalHeaderFields) {
- String allowedHeaderToPass = possibleHeadersToRecieve.get(0);
- setNewHeader(possibleHeadersToRecieve, allowedHeaderToPass, request, mutableRequest);
- }
+ // Get configuration object (reads data from configuration.yaml)
+ Configuration configuration = getConfiguration(request);
- // Print headers from original request for debug purposes
- printHeaders(request);
+ // Check if we got header from webseal
+ String userId = request.getHeader(Constants.WEBSEAL_USER_ID_HEADER);
+ if (null == userId) {
+ // Authentication via ecomp portal
+ try {
+ String userIdFromCookie = getUserIdFromCookie(request);
+ if (("").equals(userIdFromCookie)) {
+ // This is probably a webseal request, so missing header in request should be printed.
+ response.sendError(HttpServletResponse.SC_USE_PROXY, MISSING_HEADERS_MSG);
+ }
+ userId = userIdFromCookie;
+ } catch (Exception e) {
+ response.sendError(HttpServletResponse.SC_USE_PROXY, AUTHORIZATION_ERROR_MSG);
+ log.error("Error during adding request header", e);
+ }
+ }
- // In case using webseal, validate all mandatory headers (identificationHeaderFields) are included in the new request (mutableRequest).
- // Via ecomp portal do not need to check the headers.
- boolean allHeadersExist = true;
- if (null != request.getHeader(Constants.WEBSEAL_USER_ID_HEADER)) {
- allHeadersExist = checkHeaders(mutableRequest);
- }
-
- if (allHeadersExist) {
- addCookies(response, mutableRequest, getMandatoryHeaders(request));
- addCookies(response, mutableRequest, getOptionalHeaders(request));
- RequestDispatcher rd = request.getRequestDispatcher("index.html");
- rd.forward(mutableRequest, response);
- } else {
- response.sendError(HttpServletResponse.SC_USE_PROXY, MISSING_HEADERS_MSG);
- }
- }
+ // Replace webseal header with open source header
+ mutableRequest.putHeader(Constants.USER_ID, userId);
- /**
- * Print all request headers to the log
- *
- * @param request
- */
- private void printHeaders(HttpServletRequest request) {
+ // Getting identification headers from configuration.yaml
+ // (identificationHeaderFields) and setting them to new request
+ // mutableRequest
+ List<List<String>> identificationHeaderFields = configuration.getIdentificationHeaderFields();
+ for (List<String> possibleHeadersToRecieve : identificationHeaderFields) {
+ String allowedHeaderToPass = possibleHeadersToRecieve.get(0);
+ setNewHeader(possibleHeadersToRecieve, allowedHeaderToPass, request, mutableRequest);
+ }
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- String sessionId = "";
- if (request.getSession() != null) {
- String id = request.getSession().getId();
- if (id != null) {
- sessionId = id;
- }
- }
+ // Getting optional headers from configuration.yaml
+ // (optionalHeaderFields) and setting them to new request mutableRequest
+ List<List<String>> optionalHeaderFields = configuration.getOptionalHeaderFields();
+ for (List<String> possibleHeadersToRecieve : optionalHeaderFields) {
+ String allowedHeaderToPass = possibleHeadersToRecieve.get(0);
+ setNewHeader(possibleHeadersToRecieve, allowedHeaderToPass, request, mutableRequest);
+ }
- builder.append("Receiving request with headers:" + NEW_LINE);
- log.debug("{}", request.getHeaderNames());
- @SuppressWarnings("unchecked")
- Enumeration<String> headerNames = request.getHeaderNames();
- if (headerNames != null) {
- while (headerNames.hasMoreElements()) {
- String headerName = headerNames.nextElement();
- String headerValue = request.getHeader(headerName);
- builder.append("session " + sessionId + " header: name = " + headerName + ", value = " + headerValue + NEW_LINE);
- }
- }
+ // Print headers from original request for debug purposes
+ printHeaders(request);
- log.debug(builder.toString());
- }
+ // In case using webseal, validate all mandatory headers (identificationHeaderFields) are included in the new request (mutableRequest).
+ // Via ecomp portal do not need to check the headers.
+ boolean allHeadersExist = true;
+ if (null != request.getHeader(Constants.WEBSEAL_USER_ID_HEADER)) {
+ allHeadersExist = checkHeaders(mutableRequest);
+ }
- }
+ if (allHeadersExist) {
+ addCookies(response, mutableRequest, getMandatoryHeaders(request));
+ addCookies(response, mutableRequest, getOptionalHeaders(request));
+ RequestDispatcher rd = request.getRequestDispatcher("index.html");
+ rd.forward(mutableRequest, response);
+ } else {
+ response.sendError(HttpServletResponse.SC_USE_PROXY, MISSING_HEADERS_MSG);
+ }
+ }
- /**
- * Add cookies (that where set in the new request headers) in the response
- *
- * @param response
- * @param request
- * @param headers
- */
- private void addCookies(HttpServletResponse response, HttpServletRequest request, String[] headers) {
- for (int i = 0; i < headers.length; i++) {
- String currHeader = headers[i];
- String headerValue = request.getHeader(currHeader);
- if (headerValue != null) {
- response.addCookie(new Cookie(currHeader, headerValue));
- }
- }
- }
+ /**
+ * Print all request headers to the log
+ *
+ * @param request
+ */
+ private void printHeaders(HttpServletRequest request) {
- /**
- * Get mandatory headers (identificationHeaderFields) String array, and
- * checks that each header exists in the new request
- *
- * @param request
- * @return boolean
- */
- private boolean checkHeaders(HttpServletRequest request) {
- String[] mandatoryHeaders = getMandatoryHeaders(request);
+ if (log.isDebugEnabled()) {
+ StringBuilder builder = new StringBuilder();
+ String sessionId = "";
+ if (request.getSession() != null) {
+ String id = request.getSession().getId();
+ if (id != null) {
+ sessionId = id;
+ }
+ }
- boolean allHeadersExist = true;
- for (int i = 0; i < mandatoryHeaders.length; i++) {
- String headerValue = request.getHeader(mandatoryHeaders[i]);
- if (headerValue == null) {
- allHeadersExist = false;
- break;
- }
- }
- return allHeadersExist;
- }
+ builder.append("Receiving request with headers:" + NEW_LINE);
+ log.debug("{}", request.getHeaderNames());
+ @SuppressWarnings("unchecked")
+ Enumeration<String> headerNames = request.getHeaderNames();
+ if (headerNames != null) {
+ while (headerNames.hasMoreElements()) {
+ String headerName = headerNames.nextElement();
+ String headerValue = request.getHeader(headerName);
+ builder.append("session " + sessionId + " header: name = " + headerName + ", value = " + headerValue + NEW_LINE);
+ }
+ }
- /**
- * Get mandatory headers (identificationHeaderFields) from
- * configuration.yaml file and return String[]
- *
- * @param request
- * @return String[]
- */
- private String[] getMandatoryHeaders(HttpServletRequest request) {
- Configuration configuration = getConfiguration(request);
- List<List<String>> identificationHeaderFields = configuration.getIdentificationHeaderFields();
- String[] mandatoryHeaders = new String[identificationHeaderFields.size()];
- for (int i = 0; i < identificationHeaderFields.size(); i++) {
- mandatoryHeaders[i] = identificationHeaderFields.get(i).get(0);
- }
- return mandatoryHeaders;
- }
+ log.debug(builder.toString());
+ }
- /**
- * Get optional headers (optionalHeaderFields) from configuration.yaml file
- * and return String[]
- *
- * @param request
- * @return String[]
- */
- private String[] getOptionalHeaders(HttpServletRequest request) {
- Configuration configuration = getConfiguration(request);
- List<List<String>> optionalHeaderFields = configuration.getOptionalHeaderFields();
- String[] optionalHeaders = new String[optionalHeaderFields.size()];
- for (int i = 0; i < optionalHeaderFields.size(); i++) {
- optionalHeaders[i] = optionalHeaderFields.get(i).get(0);
- }
- return optionalHeaders;
- }
+ }
- /**
- * Return Configuration object to read from configuration.yaml
- *
- * @param request
- * @return Configuration
- */
- private Configuration getConfiguration(HttpServletRequest request) {
- ConfigurationManager configManager = (ConfigurationManager) request.getSession().getServletContext().getAttribute(org.openecomp.sdc.common.api.Constants.CONFIGURATION_MANAGER_ATTR);
- return configManager.getConfiguration();
- }
+ /**
+ * Add cookies (that where set in the new request headers) in the response
+ *
+ * @param response
+ * @param request
+ * @param headers
+ */
+ private void addCookies(HttpServletResponse response, HttpServletRequest request, String[] headers) {
+ for (int i = 0; i < headers.length; i++) {
+ String currHeader = headers[i];
+ String headerValue = request.getHeader(currHeader);
+ if (headerValue != null) {
+ response.addCookie(new Cookie(currHeader, headerValue));
+ }
+ }
+ }
- private boolean setNewHeader(List<String> possibleOldHeaders, String newHeaderToSet, HttpServletRequest oldRequest, MutableHttpServletRequest newRequest) {
- boolean newHeaderIsSet = false;
- for (int i = 0; i < possibleOldHeaders.size() && !newHeaderIsSet; i++) {
- String headerValue = oldRequest.getHeader(possibleOldHeaders.get(i));
- if (headerValue != null) {
- newRequest.putHeader(newHeaderToSet, headerValue);
- newHeaderIsSet = true;
- }
- }
- return newHeaderIsSet;
- }
-
- private static String getUserIdFromCookie(HttpServletRequest request) throws Exception {
- String userId = "";
- Cookie[] cookies = request.getCookies();
- Cookie userIdcookie = null;
- if (cookies != null)
- for (Cookie cookie : cookies)
- if (cookie.getName().equals(Constants.ECOMP_PORTAL_COOKIE))
- userIdcookie = cookie;
- if (userIdcookie != null) {
- userId = CipherUtil.decrypt(userIdcookie.getValue());
- //Todo Remove after smoke test & review
- /*userId = CipherUtil.decrypt(userIdcookie.getValue(),
- PortalApiProperties.getProperty(PortalApiConstants.CSP_GATE_KEEPER_PROD_KEY));*/
- }
- return userId;
+ /**
+ * Get mandatory headers (identificationHeaderFields) String array, and
+ * checks that each header exists in the new request
+ *
+ * @param request
+ * @return boolean
+ */
+ private boolean checkHeaders(HttpServletRequest request) {
+ String[] mandatoryHeaders = getMandatoryHeaders(request);
- }
+ boolean allHeadersExist = true;
+ for (int i = 0; i < mandatoryHeaders.length; i++) {
+ String headerValue = request.getHeader(mandatoryHeaders[i]);
+ if (headerValue == null) {
+ allHeadersExist = false;
+ break;
+ }
+ }
+ return allHeadersExist;
+ }
+
+ /**
+ * Get mandatory headers (identificationHeaderFields) from
+ * configuration.yaml file and return String[]
+ *
+ * @param request
+ * @return String[]
+ */
+ private String[] getMandatoryHeaders(HttpServletRequest request) {
+ Configuration configuration = getConfiguration(request);
+ List<List<String>> identificationHeaderFields = configuration.getIdentificationHeaderFields();
+ String[] mandatoryHeaders = new String[identificationHeaderFields.size()];
+ for (int i = 0; i < identificationHeaderFields.size(); i++) {
+ mandatoryHeaders[i] = identificationHeaderFields.get(i).get(0);
+ }
+ return mandatoryHeaders;
+ }
+
+ /**
+ * Get optional headers (optionalHeaderFields) from configuration.yaml file
+ * and return String[]
+ *
+ * @param request
+ * @return String[]
+ */
+ private String[] getOptionalHeaders(HttpServletRequest request) {
+ Configuration configuration = getConfiguration(request);
+ List<List<String>> optionalHeaderFields = configuration.getOptionalHeaderFields();
+ String[] optionalHeaders = new String[optionalHeaderFields.size()];
+ for (int i = 0; i < optionalHeaderFields.size(); i++) {
+ optionalHeaders[i] = optionalHeaderFields.get(i).get(0);
+ }
+ return optionalHeaders;
+ }
+
+ /**
+ * Return Configuration object to read from configuration.yaml
+ *
+ * @param request
+ * @return Configuration
+ */
+ private Configuration getConfiguration(HttpServletRequest request) {
+ ConfigurationManager configManager = (ConfigurationManager) request.getSession().getServletContext().getAttribute(org.openecomp.sdc.common.api.Constants.CONFIGURATION_MANAGER_ATTR);
+ return configManager.getConfiguration();
+ }
+
+ private boolean setNewHeader(List<String> possibleOldHeaders, String newHeaderToSet, HttpServletRequest oldRequest, MutableHttpServletRequest newRequest) {
+ boolean newHeaderIsSet = false;
+ for (int i = 0; i < possibleOldHeaders.size() && !newHeaderIsSet; i++) {
+ String headerValue = oldRequest.getHeader(possibleOldHeaders.get(i));
+ if (headerValue != null) {
+ newRequest.putHeader(newHeaderToSet, headerValue);
+ newHeaderIsSet = true;
+ }
+ }
+ return newHeaderIsSet;
+ }
+
+ private static String getUserIdFromCookie(HttpServletRequest request) throws Exception {
+ String userId = "";
+ Cookie[] cookies = request.getCookies();
+ Cookie userIdcookie = null;
+ if (cookies != null) {
+ for (Cookie cookie : cookies) {
+ if (cookie.getName().equals(Constants.ECOMP_PORTAL_COOKIE)) {
+ userIdcookie = cookie;
+ }
+ }
+ }
+ if (userIdcookie != null) {
+ userId = CipherUtil.decrypt(userIdcookie.getValue());
+ }
+ return userId;
+
+ }
}