From 3159458ff8563771a5460839fd75bdc25159ea87 Mon Sep 17 00:00:00 2001 From: "Christopher Lott (cl778h)" Date: Tue, 8 Aug 2017 16:52:35 -0400 Subject: Revise open-source login strategy impl - Get required decryption key from system.properties, not portal.properties - Add icon mapping for ION icons - Add license header on a few fiels Issue: PORTAL-64 Change-Id: I0da14178a331c3926bc4c51425f8d9a6877685bc Signed-off-by: Christopher Lott (cl778h) --- ecomp-sdk/epsdk-app-os/README.md | 17 ++-- .../portalapp/lm/FusionLicenseManagerImpl.java | 19 +++++ .../portalapp/lm/LicenseableClassImpl.java | 2 +- .../portalapp/login/LoginStrategyImpl.java | 99 +++++++++++++++------- .../ds2/css/digital-ng-library/ecomp-ionicons.css | 2 + ecomp-sdk/epsdk-fw/README.md | 7 +- .../core/onboarding/util/PortalApiConstants.java | 3 - 7 files changed, 105 insertions(+), 44 deletions(-) diff --git a/ecomp-sdk/epsdk-app-os/README.md b/ecomp-sdk/epsdk-app-os/README.md index 143a489f..9e314239 100644 --- a/ecomp-sdk/epsdk-app-os/README.md +++ b/ecomp-sdk/epsdk-app-os/README.md @@ -14,16 +14,17 @@ https://www.eclipse.org/m2e-wtp/ ## Release Notes Version 1.3.0 -- [Portal-19] Renaming the Group Id in the POM file to org.onap.portal.sdk -- [Portal-34] Restore required properties in fusion.properties file -- [PORTAL-17] removing eye.js and utils.js +- PORTAL-17 removing eye.js and utils.js +- PORTAL-19 Renaming the Group Id in the POM file to org.onap.portal.sdk +- PORTAL-34 Restore required properties in fusion.properties file +- PORTAL-64 Single sign-on from Portal fails for some applications Version 1.1.0 -- [Portal-7] Improvements added as part of the rebasing process -- [Portal-6] Updates to License and Trademark in the PORTAL Source Code -- [Portal 13] ecompsdk db connection intermittent issue seen for VID app -- [Portal 15] Fix Charting and Search Capabilities of EcompSDK Analytics -- [Portal 23] Updating the SDK version from Snapshot to Release 1.1.0 +- PORTAL-6 Updates to License and Trademark in the PORTAL Source Code +- PORTAL-7 Improvements added as part of the rebasing process +- PORTAL 13 ecompsdk db connection intermittent issue seen for VID app +- PORTAL 15 Fix Charting and Search Capabilities of EcompSDK Analytics +- PORTAL 23 Updating the SDK version from Snapshot to Release 1.1.0 Version 1.0.0 - Initial release diff --git a/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java b/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java index 4993a005..4f7033e9 100644 --- a/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java +++ b/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/FusionLicenseManagerImpl.java @@ -1,3 +1,22 @@ +/*- + * ================================================================================ + * ECOMP Portal SDK + * ================================================================================ + * 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.lm; import java.util.Date; diff --git a/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java b/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java index 91fe7870..14f21a81 100644 --- a/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java +++ b/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/lm/LicenseableClassImpl.java @@ -1,6 +1,6 @@ /*- * ================================================================================ - * eCOMP Portal SDK + * ECOMP Portal SDK * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property * ================================================================================ diff --git a/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java b/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java index 9f742ce9..270e69ff 100644 --- a/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java +++ b/ecomp-sdk/epsdk-app-os/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java @@ -1,3 +1,23 @@ +/*- + * ================================================================================ + * ECOMP Portal SDK + * ================================================================================ + * 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.login; import javax.servlet.http.Cookie; @@ -5,66 +25,87 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openecomp.portalsdk.core.auth.LoginStrategy; +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.openecomp.portalsdk.core.onboarding.exception.PortalAPIException; import org.openecomp.portalsdk.core.onboarding.util.CipherUtil; -import org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants; -import org.openecomp.portalsdk.core.onboarding.util.PortalApiProperties; +import org.openecomp.portalsdk.core.util.SystemProperties; import org.springframework.web.servlet.ModelAndView; +/** + * Implements basic single-signon login strategy for open-source applications + * when users start at Portal. Extracts an encrypted user ID sent by Portal. + */ public class LoginStrategyImpl extends LoginStrategy { - + + private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoginStrategyImpl.class); + + /** + * login for open source is same as external login in the non-open-source + * version. + */ @Override public ModelAndView doLogin(HttpServletRequest request, HttpServletResponse response) throws Exception { - //'login' for opensource is same as 'external' login. return doExternalLogin(request, response); } - + @Override public String getUserId(HttpServletRequest request) throws PortalAPIException { // Check ECOMP Portal cookie - if (!isLoginCookieExist(request)) + Cookie ep = getCookie(request, EP_SERVICE); + if (ep == null) { + logger.debug(EELFLoggerDelegate.debugLogger, "getUserId: no EP_SERVICE cookie, returning null"); return null; + } String userid = null; try { userid = getUserIdFromCookie(request); } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.error(EELFLoggerDelegate.errorLogger, "getUserId failed", e); } - return userid; + return userid; } - private static String getUserIdFromCookie(HttpServletRequest request) throws Exception { + /** + * Searches the request for the user-ID cookie and decrypts the value using a + * key configured in properties + * + * @param request + * HttpServletRequest + * @return User ID + * @throws Exception + * On any failure + */ + private 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(USER_ID)) - userIdcookie = cookie; - if(userIdcookie!=null){ - userId = CipherUtil.decrypt(userIdcookie.getValue(), - PortalApiProperties.getProperty(PortalApiConstants.Decryption_Key)); + Cookie userIdCookie = getCookie(request, USER_ID); + if (userIdCookie != null) { + final String cookieValue = userIdCookie.getValue(); + if (!SystemProperties.containsProperty(SystemProperties.Decryption_Key)) + throw new Exception("Failed to find property " + SystemProperties.Decryption_Key); + final String decryptionKey = SystemProperties.getProperty(SystemProperties.Decryption_Key); + userId = CipherUtil.decrypt(cookieValue, decryptionKey); + logger.debug(EELFLoggerDelegate.debugLogger, "getUserIdFromCookie: decrypted as {}", userId); } return userId; - - } - - private static boolean isLoginCookieExist(HttpServletRequest request) { - Cookie ep = getCookie(request, EP_SERVICE); - return (ep != null); } - - private static Cookie getCookie(HttpServletRequest request, String cookieName) { + + /** + * Searches the request for the named cookie. + * + * @param request + * HttpServletRequest + * @param cookieName + * Name of desired cookie + * @return Cookie if found; otherwise null. + */ + private Cookie getCookie(HttpServletRequest request, String cookieName) { Cookie[] cookies = request.getCookies(); if (cookies != null) for (Cookie cookie : cookies) if (cookie.getName().equals(cookieName)) return cookie; - return null; } - } diff --git a/ecomp-sdk/epsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css b/ecomp-sdk/epsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css index 987a68dd..597b466d 100644 --- a/ecomp-sdk/epsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css +++ b/ecomp-sdk/epsdk-app-os/src/main/webapp/app/fusion/external/ds2/css/digital-ng-library/ecomp-ionicons.css @@ -59,6 +59,7 @@ .icon-primary-close:before, .close:before, .reset-field:before, .icon-datanetwork-softwareasaservice:before, .icon-datanetwork-messaging2:before, +.icon-controls-settingsconnectedactivity:before, .icon-arrows-upload:before { display: inline-block; font-family: "Ionicons"; @@ -189,3 +190,4 @@ .icon-datanetwork-messaging2:before { content: "\f132"; } +.icon-controls-settingsconnectedactivity:before { content: "\f411"; } \ No newline at end of file diff --git a/ecomp-sdk/epsdk-fw/README.md b/ecomp-sdk/epsdk-fw/README.md index 56cf2009..59f4e0fb 100644 --- a/ecomp-sdk/epsdk-fw/README.md +++ b/ecomp-sdk/epsdk-fw/README.md @@ -30,10 +30,11 @@ nor does it require Spring. ### ONAP Distributions Version 1.3.0 -- [Portal-19] Renaming the Group Id in the POM file to org.onap.portal.sdk +- PORTAL-19 Renaming the Group Id in the POM file to org.onap.portal.sdk +- PORTAL-64 Single sign-on from Portal fails for some applications Version 1.1.0 -- [Portal-7] Improvements added as part of the rebasing process +- PORTAL-7 Improvements added as part of the rebasing process Version 1.0.0 -- Initial release \ No newline at end of file +- Initial release diff --git a/ecomp-sdk/epsdk-fw/src/main/java/org/openecomp/portalsdk/core/onboarding/util/PortalApiConstants.java b/ecomp-sdk/epsdk-fw/src/main/java/org/openecomp/portalsdk/core/onboarding/util/PortalApiConstants.java index 7f42a1d5..087d03d5 100644 --- a/ecomp-sdk/epsdk-fw/src/main/java/org/openecomp/portalsdk/core/onboarding/util/PortalApiConstants.java +++ b/ecomp-sdk/epsdk-fw/src/main/java/org/openecomp/portalsdk/core/onboarding/util/PortalApiConstants.java @@ -60,9 +60,6 @@ public interface PortalApiConstants { public static final String ECOMP_UEB_UNKNOWN_CONSUME_ERROR = "103: Unknown error during consume"; public static final String USE_REST_FOR_FUNCTIONAL_MENU = "use_rest_for_functional_menu"; - //encrpt key - public static final String Decryption_Key = "decryption_key"; - public static final String EXT_REQUEST_CONNECTION_TIMEOUT = "ext_req_connection_timeout"; public static final String EXT_REQUEST_READ_TIMEOUT = "ext_req_read_timeout"; } -- cgit 1.2.3-korg