From 46f3b609c6230d2681a1b7b4aedcf07061cf910b Mon Sep 17 00:00:00 2001
From: ayushaga14 <ayush@akto.io>
Date: Wed, 14 Aug 2024 17:03:21 +0530
Subject: [PATCH 1/2] add check for custom auth header

---
 .../akto/test_editor/auth/AuthValidator.java  | 22 +++++++++++--------
 .../testing/yaml_tests/YamlTestTemplate.java  |  4 ++--
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java b/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java
index 30a9b00586..9f121e03d1 100644
--- a/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java
+++ b/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java
@@ -20,13 +20,13 @@
 
 public class AuthValidator {
     
-    public static boolean validate(Auth auth, RawApi rawApi, AuthMechanism authMechanism) {
+    public static boolean validate(Auth auth, RawApi rawApi, AuthMechanism authMechanism, List<CustomAuthType> customAuthTypes) {
 
         if (auth == null) {
             return true;
         }
 
-        List<String> headerKeys = getHeaders(auth, authMechanism);
+        List<String> headerKeys = getHeaders(auth, authMechanism, customAuthTypes);
 
         auth.setHeaders(headerKeys);
 
@@ -48,7 +48,7 @@ public static boolean validate(Auth auth, RawApi rawApi, AuthMechanism authMecha
         return true;
     }
 
-    public static List<String> getHeaders(Auth auth, AuthMechanism authMechanism) {
+    public static List<String> getHeaders(Auth auth, AuthMechanism authMechanism, List<CustomAuthType> customAuthTypes) {
 
         if (auth != null && auth.getHeaders() != null && auth.getHeaders().size() > 0) {
             return auth.getHeaders();
@@ -56,14 +56,18 @@ public static List<String> getHeaders(Auth auth, AuthMechanism authMechanism) {
 
         List<String> headerKeys = new ArrayList<>();
 
-        if (authMechanism == null || authMechanism.getAuthParams() == null || authMechanism.getAuthParams().size() == 0) {
-            return null;
+        if (authMechanism != null && authMechanism.getAuthParams() != null && authMechanism.getAuthParams().size() > 0) {
+            for (AuthParam authParam: authMechanism.getAuthParams()) {
+                String key = authParam.getKey();
+                if (key == null) continue;
+                headerKeys.add(key.toLowerCase());
+            }
         }
 
-        for (AuthParam authParam: authMechanism.getAuthParams()) {
-            String key = authParam.getKey();
-            if (key == null) continue;
-            headerKeys.add(key.toLowerCase());
+        if (customAuthTypes != null) {
+            for(CustomAuthType customAuthType: customAuthTypes) {
+                headerKeys.addAll(customAuthType.getHeaderKeys());
+            }
         }
 
         return headerKeys;
diff --git a/apps/testing/src/main/java/com/akto/testing/yaml_tests/YamlTestTemplate.java b/apps/testing/src/main/java/com/akto/testing/yaml_tests/YamlTestTemplate.java
index 62f34c1efc..a27d60fd2c 100644
--- a/apps/testing/src/main/java/com/akto/testing/yaml_tests/YamlTestTemplate.java
+++ b/apps/testing/src/main/java/com/akto/testing/yaml_tests/YamlTestTemplate.java
@@ -92,14 +92,14 @@ public Set<String> requireConfig(){
     @Override
     public ValidationResult filter() {
         // loggerMaker.infoAndAddToDb("filter started" + logId, LogDb.TESTING);
-        List<String> authHeaders = AuthValidator.getHeaders(this.auth, this.authMechanism);
+        List<String> authHeaders = AuthValidator.getHeaders(this.auth, this.authMechanism, this.customAuthTypes);
         // loggerMaker.infoAndAddToDb("found authHeaders " + authHeaders + " " + logId, LogDb.TESTING);
         if (authHeaders != null && authHeaders.size() > 0) {
             this.varMap.put("auth_headers", authHeaders);
         }
         if (this.auth != null && this.auth.getAuthenticated() != null) {
             // loggerMaker.infoAndAddToDb("validating auth, authenticated value is " + this.auth.getAuthenticated() + " " + logId, LogDb.TESTING);
-            boolean validAuthHeaders = AuthValidator.validate(this.auth, this.rawApi, this.authMechanism);
+            boolean validAuthHeaders = AuthValidator.validate(this.auth, this.rawApi, this.authMechanism, this.customAuthTypes);
             if (!validAuthHeaders) {
                 ValidationResult validationResult = new ValidationResult(false, "No valid auth headers");
                 // loggerMaker.infoAndAddToDb("invalid auth, skipping filter " + logId, LogDb.TESTING);

From 60e5de0d558a79b0852e2ac3ecb6445d92a0da1c Mon Sep 17 00:00:00 2001
From: ayushaga14 <ayush@akto.io>
Date: Wed, 14 Aug 2024 17:21:25 +0530
Subject: [PATCH 2/2] fix

---
 .../main/java/com/akto/test_editor/auth/AuthValidator.java  | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java b/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java
index 9f121e03d1..dd9f260565 100644
--- a/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java
+++ b/apps/testing/src/main/java/com/akto/test_editor/auth/AuthValidator.java
@@ -41,11 +41,11 @@ public static boolean validate(Auth auth, RawApi rawApi, AuthMechanism authMecha
         for (String header: headerKeys) {
             contains = headers.containsKey(header) || CookieTransformer.isKeyPresentInCookie(cookieList, header);
             res = auth.getAuthenticated() && contains;
-            if (!res) {
-                return res;
+            if (res) {
+                return true;
             }
         }
-        return true;
+        return false;
     }
 
     public static List<String> getHeaders(Auth auth, AuthMechanism authMechanism, List<CustomAuthType> customAuthTypes) {