fix(security): accept overseas token subject identity

This commit is contained in:
2026-09-08 21:05:15 +08:00
parent 1fb139bc71
commit 4a403aaa30
2 changed files with 4 additions and 1 deletions
@@ -35,6 +35,9 @@ public final class GatewayAccessTokenSessionValidator implements AccessTokenSess
throw new IllegalArgumentException("Untrusted overseas gateway authorization context");
}
Long userId = number(jwt.getClaims().getOrDefault("userId", jwt.getClaims().get("user_id")));
if (userId == null) {
userId = number(jwt.getSubject());
}
return new AccessTokenSession(1, userId, values(request.getHeader(ROLES_HEADER)),
values(request.getHeader(AUTHORITIES_HEADER)));
}
@@ -40,7 +40,7 @@ class GatewayAccessTokenSessionValidatorTest {
private Jwt jwt() {
return Jwt.withTokenValue("small-overseas-token").header("alg", "RS256").subject("42")
.issuedAt(Instant.now()).expiresAt(Instant.now().plusSeconds(300))
.claim("user_id", 42L).claim("tenant_id", 0L).claim("app_code", "PLATFORM")
.claim("tenant_id", 0L).claim("app_code", "PLATFORM")
.claim("permission_version", 7L).claim("token_version", 1).build();
}
}