diff --git a/src/main/java/com/kms/handler/AuthHandler.java b/src/main/java/com/kms/handler/AuthHandler.java
index dab838d1e53b4f97d86c5cf585eb8a52499754bd..5cc3e4179b6fa6f96cde14b306ff8e331ef3c9b5 100644
--- a/src/main/java/com/kms/handler/AuthHandler.java
+++ b/src/main/java/com/kms/handler/AuthHandler.java
@@ -23,6 +23,13 @@ public class AuthHandler implements SOAPHandler<SOAPMessageContext> {
 
     @Override
     public boolean handleMessage(SOAPMessageContext soapMessageContext) {
+        final boolean messageHandled =
+                (boolean) soapMessageContext.getOrDefault("messageHandled-Auth", false);
+
+        if (messageHandled)
+            return true;
+
+        soapMessageContext.put("messageHandled-Auth", true);
         try {
             final SOAPHeader header = soapMessageContext.getMessage().getSOAPHeader();
             final QName apiKeyQName = new QName(NAMESPACE, "apiKey");
diff --git a/src/main/java/com/kms/handler/CacheHandler.java b/src/main/java/com/kms/handler/CacheHandler.java
index 5eb589acf1b0fdd9d84c3413b64da02c2b2f685a..babb5511365ba0c654abf4758f8833f3d550755d 100644
--- a/src/main/java/com/kms/handler/CacheHandler.java
+++ b/src/main/java/com/kms/handler/CacheHandler.java
@@ -32,10 +32,12 @@ public class CacheHandler implements SOAPHandler<SOAPMessageContext> {
     @Override
     public boolean handleMessage(SOAPMessageContext context) {
         final boolean messageHandled =
-                (boolean) context.getOrDefault("messageHandled", false);
+                (boolean) context.getOrDefault("messageHandled-Cache", false);
 
-        if (!messageHandled)
+        if (!messageHandled) {
+            context.put("messageHandled-Cache", true);
             return true;
+        }
 
         final boolean cacheResponse =
                 (boolean) context.getOrDefault("cacheResponse", false);