From 235e032f8039ff7b0e394dd546c43178bfbb911b Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Wed, 15 Jul 2026 21:24:21 +0800 Subject: [PATCH] =?UTF-8?q?IAM=E5=AF=B9=E6=8E=A5=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/granter/IamSsoTokenGranter.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/blade-auth/src/main/java/org/springblade/auth/granter/IamSsoTokenGranter.java b/blade-auth/src/main/java/org/springblade/auth/granter/IamSsoTokenGranter.java index 9dbccd4..1fbacba 100644 --- a/blade-auth/src/main/java/org/springblade/auth/granter/IamSsoTokenGranter.java +++ b/blade-auth/src/main/java/org/springblade/auth/granter/IamSsoTokenGranter.java @@ -75,6 +75,7 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter { private static final String IAM_GRANT_TYPE = "authorization_code"; private static final String BEARER_PREFIX = "Bearer "; + private static final String BASIC_PREFIX = "Basic "; private final IUserClient userClient; private final IamSsoProperties properties; @@ -214,6 +215,9 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter { params.put("client_id", properties.getClientId()); params.put("client_secret", properties.getClientSecret()); params.put("code", request.getCode()); + if (StringUtil.isNotBlank(request.getState())) { + params.put("state", request.getState()); + } params.put("redirect_uri", properties.getRedirectUri()); return params; } @@ -231,17 +235,24 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter { private String authorizationHeader() { if (StringUtil.isNotBlank(properties.getAuthorization())) { - return properties.getAuthorization(); + return withBasicPrefix(properties.getAuthorization()); } String token = Base64.getEncoder().encodeToString( (properties.getClientId() + ":" + properties.getClientSecret()).getBytes(StandardCharsets.UTF_8) ); - return "Basic " + token; + return BASIC_PREFIX + token; + } + + private String withBasicPrefix(String authorization) { + if (StringUtil.startsWithIgnoreCase(authorization, BASIC_PREFIX)) { + return authorization; + } + return BASIC_PREFIX + authorization; } private String profileAuthorizationHeader(String accessToken) { if (StringUtil.isNotBlank(properties.getProfileAuthorization())) { - return properties.getProfileAuthorization(); + return withBasicPrefix(properties.getProfileAuthorization()); } return BEARER_PREFIX + accessToken; }