Fix decrypt errors in sdc-be logs 65/126665/5
authorJvD_Ericsson <jeff.van.dam@est.tech>
Thu, 20 Jan 2022 09:59:31 +0000 (09:59 +0000)
committerMichael Morris <michael.morris@est.tech>
Fri, 28 Jan 2022 14:38:40 +0000 (14:38 +0000)
Will check if userId is a base64 encoding before trying to decrypt

Issue-ID: SDC-3851
Signed-off-by: JvD_Ericsson <jeff.van.dam@est.tech>
Change-Id: I437bf9cc5952f4d21e5bda60875ada27dcc9cd66

catalog-be/src/main/java/org/openecomp/sdc/be/user/UserBusinessLogic.java
catalog-be/src/test/java/org/openecomp/sdc/be/user/UserBusinessLogicTest.java

index 62232be..89b0fe6 100644 (file)
@@ -30,6 +30,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -84,7 +85,7 @@ public class UserBusinessLogic {
     }
 
     private String decryptUserId(final String userId) {
-        if (StringUtils.isNotEmpty(userId)) {
+        if (StringUtils.isNotEmpty(userId) && isUserBase64Encoded(userId)) {
             try {
                 return CipherUtil.decryptPKC(userId);
             } catch (final Exception e) {
@@ -94,6 +95,16 @@ public class UserBusinessLogic {
         return userId;
     }
 
+    boolean isUserBase64Encoded(String userId){
+        try {
+            byte[] decodedUserId = Base64.decodeBase64(userId.getBytes());
+            byte[] reEncodedUserId = Base64.encodeBase64(decodedUserId);
+            return userId.equals(new String(reEncodedUserId));
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
     public User getUser(String userId) {
         userId = decryptUserId(userId);
         UserContext userContext = ThreadLocalsHolder.getUserContext();
index 3663076..3fe8e03 100644 (file)
@@ -750,4 +750,27 @@ public class UserBusinessLogicTest {
             ThreadLocalsHolder.setUserContext(originalUserContext);
         }
     }
+
+    @Test
+    public void testIsUserBase64EncodedTrueUserIdBase64Encoded() {
+        String userId = "bW9jaw==";
+        assertThat(testSubject.isUserBase64Encoded(userId)).isTrue();
+    }
+
+    @Test
+    public void testIsUserBase64EncodedFalseUserIdNotBase64Encoded() {
+        String userId = "mockId";
+        assertThat(testSubject.isUserBase64Encoded(userId)).isFalse();
+    }
+
+    @Test
+    public void testIsUserBase64EncodedFalseUserIdIsNull() {
+        assertThat(testSubject.isUserBase64Encoded(null)).isFalse();
+    }
+
+    @Test
+    public void testIsUserBase64EncodedFalseInvalidBase64Characters() {
+        String userId = "%not£valid*";
+        assertThat(testSubject.isUserBase64Encoded(userId)).isFalse();
+    }
 }