From 4a403aaa3097b3d5636701a2911c300b86ccfed7 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Tue, 8 Sep 2026 21:05:15 +0800 Subject: [PATCH] fix(security): accept overseas token subject identity --- .../common/security/GatewayAccessTokenSessionValidator.java | 3 +++ .../security/GatewayAccessTokenSessionValidatorTest.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/common-security/src/main/java/com/baiyue/common/security/GatewayAccessTokenSessionValidator.java b/common-security/src/main/java/com/baiyue/common/security/GatewayAccessTokenSessionValidator.java index 2c749dd9b..cd706341d 100644 --- a/common-security/src/main/java/com/baiyue/common/security/GatewayAccessTokenSessionValidator.java +++ b/common-security/src/main/java/com/baiyue/common/security/GatewayAccessTokenSessionValidator.java @@ -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))); } diff --git a/common-security/src/test/java/com/baiyue/common/security/GatewayAccessTokenSessionValidatorTest.java b/common-security/src/test/java/com/baiyue/common/security/GatewayAccessTokenSessionValidatorTest.java index 192e7ff97..f0a7b3430 100644 --- a/common-security/src/test/java/com/baiyue/common/security/GatewayAccessTokenSessionValidatorTest.java +++ b/common-security/src/test/java/com/baiyue/common/security/GatewayAccessTokenSessionValidatorTest.java @@ -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(); } }