This commit is contained in:
2026-07-16 11:35:28 +08:00
parent 8452f1f8f4
commit e58ad75d95
30 changed files with 1067 additions and 60 deletions

View File

@@ -25,6 +25,7 @@
*/
package org.springblade.auth.config;
import org.springblade.auth.granter.IamAwareTokenGranterFactory;
import org.springblade.auth.handler.BladeAuthorizationHandler;
import org.springblade.auth.handler.BladeLockHandler;
import org.springblade.auth.handler.BladeLogHandler;
@@ -37,6 +38,9 @@ import org.springblade.core.jwt.props.JwtProperties;
import org.springblade.core.launch.props.BladeProperties;
import org.springblade.core.launch.server.ServerInfo;
import org.springblade.core.oauth2.config.OAuth2AutoConfiguration;
import org.springblade.core.oauth2.granter.TokenGranter;
import org.springblade.core.oauth2.granter.TokenGranterEnhancer;
import org.springblade.core.oauth2.granter.TokenGranterFactory;
import org.springblade.core.oauth2.handler.AuthorizationHandler;
import org.springblade.core.oauth2.handler.PasswordHandler;
import org.springblade.core.oauth2.handler.TokenHandler;
@@ -51,8 +55,11 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* BladeAuthConfiguration
*
@@ -101,4 +108,12 @@ public class BladeAuthConfiguration {
return new BladeUserDetailService(userClient);
}
@Primary
@Bean("iamAwareTokenGranterFactory")
public TokenGranterFactory tokenGranterFactory(List<TokenGranter> tokenGranters,
List<TokenGranterEnhancer> tokenGranterEnhancers,
OAuth2Properties properties) {
return new IamAwareTokenGranterFactory(tokenGranters, tokenGranterEnhancers, properties);
}
}

View File

@@ -123,7 +123,7 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter {
@Override
public OAuth2User user(OAuth2Request request) {
if (!isIamRequest(request)) {
if (!isIamRequest(request, true)) {
throw new UserInvalidException(OAuth2TokenConstant.TOKEN_NOT_CORRECT);
}
validateRequest(request);
@@ -192,12 +192,16 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter {
return user;
}
private boolean isIamRequest(OAuth2Request request) {
public boolean supports(OAuth2Request request) {
return isIamRequest(request, false);
}
private boolean isIamRequest(OAuth2Request request, boolean logMiss) {
String redirectUri = normalizeRedirectUri(request.getRedirectUri());
boolean iamRequest = StringUtil.isNotBlank(properties.getRedirectUri())
&& StringUtil.isNotBlank(request.getCode())
&& StringUtil.equals(properties.getRedirectUri(), redirectUri);
if (!iamRequest) {
if (!iamRequest && logMiss) {
log.info("IAM统一身份认证请求未命中configRedirectUri={}, requestRedirectUri={}, normalizedRedirectUri={}, code={}",
properties.getRedirectUri(), request.getRedirectUri(), redirectUri, request.getCode());
}