KNOX-3038 - The expires_in field in OAuthResource response returns the configured token TTL. (#907)
Additionally, removed the override of the getExpiry() method because in the database the meaning of expiration time must remain the same as in the parent class.
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);
}
/**