diff --git a/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/OAuthResource.java b/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/OAuthResource.java
index 71cf28b..4064092 100644
--- a/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/OAuthResource.java
+++ b/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/OAuthResource.java
@@ -79,14 +79,13 @@
             // let's get the subset of the KnoxToken Response needed for OAuth
             String accessToken = resp.responseMap.accessToken;
             String passcode = resp.responseMap.passcode;
-            long expires = (long) resp.responseMap.map.get(EXPIRES_IN);
             String tokenType = (String) resp.responseMap.map.get(TOKEN_TYPE);
 
             // build and return the expected OAuth response
             final HashMap<String, Object> map = new HashMap<>();
             map.put(ACCESS_TOKEN, accessToken);
             map.put(TOKEN_TYPE, tokenType);
-            map.put(EXPIRES_IN, expires);
+            map.put(EXPIRES_IN, getTokenLifetimeInSeconds());
             map.put(ISSUED_TOKEN_TYPE, ISSUED_TOKEN_TYPE_ACCESS_TOKEN_VALUE);
             // let's use the passcode as the refresh token
             map.put(REFRESH_TOKEN, passcode);
@@ -103,8 +102,7 @@
         }
     }
 
-    @Override
-    protected long getExpiry() {
+    private long getTokenLifetimeInSeconds() {
         long secs = tokenTTL/1000;
 
         String lifetimeStr = request.getParameter(LIFESPAN);
diff --git a/gateway-service-knoxtoken/src/test/java/org/apache/knox/gateway/service/knoxtoken/TokenServiceResourceTest.java b/gateway-service-knoxtoken/src/test/java/org/apache/knox/gateway/service/knoxtoken/TokenServiceResourceTest.java
index b072b8d..9ef8523 100644
--- a/gateway-service-knoxtoken/src/test/java/org/apache/knox/gateway/service/knoxtoken/TokenServiceResourceTest.java
+++ b/gateway-service-knoxtoken/src/test/java/org/apache/knox/gateway/service/knoxtoken/TokenServiceResourceTest.java
@@ -1657,21 +1657,8 @@
 
 
   private String getTagValue(String token, String tagName) {
-    if (!token.contains(tagName)) {
-      return null;
-    }
-    String searchString = "\"" + tagName + "\":";
-    String value = token.substring(token.indexOf(searchString) + searchString.length());
-    if (value.startsWith("\"")) {
-      value = value.substring(1);
-    }
-    if (value.contains("\"")) {
-      return value.substring(0, value.indexOf('\"'));
-    } else if (value.contains(",")) {
-      return value.substring(0, value.indexOf(','));
-    } else {
-      return value.substring(0, value.length() - 1);
-    }
+    final Map<String, String> tokenMap = JsonUtils.getMapFromJsonString(token);
+    return tokenMap == null ? null : tokenMap.get(tagName);
   }
 
   /**
