You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by ha...@apache.org on 2026/04/09 13:59:34 UTC
(knox) branch master updated: KNOX-3295: Set default type to JWT in issued knox token headers (#1195)
This is an automated email from the ASF dual-hosted git repository.
hanicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git
The following commit(s) were added to refs/heads/master by this push:
new fa75d218d KNOX-3295: Set default type to JWT in issued knox token headers (#1195)
fa75d218d is described below
commit fa75d218dc706b3f7f96c2567fa0c8a2a2a692ba
Author: hanicz <ha...@users.noreply.github.com>
AuthorDate: Thu Apr 9 15:59:28 2026 +0200
KNOX-3295: Set default type to JWT in issued knox token headers (#1195)
* KNOX-3295: Set default type to JWT in issued knox token headers
* KNOX-3295: Simplify new unit tests
---
.../gateway/service/knoxtoken/TokenResource.java | 6 +++--
.../knoxtoken/TokenServiceResourceTest.java | 27 ++++++++++++++++++++++
.../services/security/token/JWTokenAttributes.java | 1 +
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java b/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java
index 082ad1ff8..8e6119b9c 100644
--- a/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java
+++ b/gateway-service-knoxtoken/src/main/java/org/apache/knox/gateway/service/knoxtoken/TokenResource.java
@@ -121,7 +121,7 @@ public class TokenResource {
protected static final String BEARER = "Bearer";
private static final String TOKEN_PARAM_PREFIX = "knox.token.";
protected static final String TOKEN_TTL_PARAM = TOKEN_PARAM_PREFIX + "ttl";
- private static final String TOKEN_TYPE_PARAM = TOKEN_PARAM_PREFIX + "type";
+ public static final String TOKEN_TYPE_PARAM = TOKEN_PARAM_PREFIX + "type";
private static final String TOKEN_AUDIENCES_PARAM = TOKEN_PARAM_PREFIX + "audiences";
public static final String TOKEN_INCLUDE_GROUPS_IN_JWT_ALLOWED = TOKEN_PARAM_PREFIX + "include.groups.allowed";
private static final String TOKEN_TARGET_URL = TOKEN_PARAM_PREFIX + "target.url";
@@ -272,7 +272,9 @@ public class TokenResource {
this.tokenIssuer = StringUtils.isBlank(context.getInitParameter(KNOX_TOKEN_ISSUER))
? JWTokenAttributes.DEFAULT_ISSUER
: context.getInitParameter(KNOX_TOKEN_ISSUER);
- this.tokenType = context.getInitParameter(TOKEN_TYPE_PARAM);
+ this.tokenType = StringUtils.isBlank(context.getInitParameter(TOKEN_TYPE_PARAM))
+ ? JWTokenAttributes.DEFAULT_TYPE
+ : context.getInitParameter(TOKEN_TYPE_PARAM);
tokenTTLAsText = getTokenTTLAsText();
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 9687eed06..92f3a1323 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
@@ -307,6 +307,7 @@ public class TokenServiceResourceTest {
// Verify the token
JWT parsedToken = new JWTToken(accessToken);
assertEquals("alice", parsedToken.getSubject());
+ assertTrue(parsedToken.getHeader().contains("\"typ\":\"JWT\""));
assertTrue(authority.verifyToken(parsedToken));
}
@@ -514,6 +515,32 @@ public class TokenServiceResourceTest {
assertTrue(parsedToken.getHeader().contains("RS512"));
}
+ @Test
+ public void testCustomTokenType() throws Exception {
+ final Map<String, String> contextExpectations = new HashMap<>();
+ contextExpectations.put(TokenResource.TOKEN_TYPE_PARAM, "custom-type");
+ configureCommonExpectations(contextExpectations);
+
+ TokenResource tr = new TokenResource();
+ tr.request = request;
+ tr.context = context;
+ tr.init();
+
+ // Issue a token
+ Response retResponse = tr.doGet();
+
+ assertEquals(200, retResponse.getStatus());
+
+ // Parse the response
+ String retString = retResponse.getEntity().toString();
+ String accessToken = getTagValue(retString, "access_token");
+ assertNotNull(accessToken);
+
+ // Verify the token
+ JWT parsedToken = new JWTToken(accessToken);
+ assertTrue(parsedToken.getHeader().contains("\"typ\":\"custom-type\""));
+ }
+
@Test
public void testDefaultTTL() throws Exception {
final Map<String, String> contextExpectations = new HashMap<>();
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/token/JWTokenAttributes.java b/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/token/JWTokenAttributes.java
index 8d3e4f067..25c61f9a9 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/token/JWTokenAttributes.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/token/JWTokenAttributes.java
@@ -25,6 +25,7 @@ import java.util.Set;
public class JWTokenAttributes {
public static final String DEFAULT_ISSUER = "KNOXSSO";
+ public static final String DEFAULT_TYPE = "JWT";
private final String userName;
private final List<String> audiences;
private final String algorithm;