IAM对接调试

This commit is contained in:
2026-07-15 22:40:30 +08:00
parent 2ebe156540
commit 8452f1f8f4

View File

@@ -37,6 +37,7 @@ import org.springblade.core.oauth2.exception.UserInvalidException;
import org.springblade.core.oauth2.granter.AuthorizationCodeGranter; import org.springblade.core.oauth2.granter.AuthorizationCodeGranter;
import org.springblade.core.oauth2.handler.PasswordHandler; import org.springblade.core.oauth2.handler.PasswordHandler;
import org.springblade.core.oauth2.provider.OAuth2Request; import org.springblade.core.oauth2.provider.OAuth2Request;
import org.springblade.core.oauth2.service.OAuth2Client;
import org.springblade.core.oauth2.service.OAuth2ClientService; import org.springblade.core.oauth2.service.OAuth2ClientService;
import org.springblade.core.oauth2.service.OAuth2User; import org.springblade.core.oauth2.service.OAuth2User;
import org.springblade.core.oauth2.service.OAuth2UserService; import org.springblade.core.oauth2.service.OAuth2UserService;
@@ -78,10 +79,12 @@ import java.util.stream.Collectors;
@Order(Ordered.HIGHEST_PRECEDENCE) @Order(Ordered.HIGHEST_PRECEDENCE)
public class IamSsoTokenGranter extends AuthorizationCodeGranter { public class IamSsoTokenGranter extends AuthorizationCodeGranter {
private static final String GRANT_TYPE = "iam_sso";
private static final String IAM_GRANT_TYPE = "authorization_code"; private static final String IAM_GRANT_TYPE = "authorization_code";
private static final String BEARER_PREFIX = "Bearer "; private static final String BEARER_PREFIX = "Bearer ";
private static final String BASIC_PREFIX = "Basic "; private static final String BASIC_PREFIX = "Basic ";
private final OAuth2ClientService clientService;
private final IUserClient userClient; private final IUserClient userClient;
private final IamSsoProperties properties; private final IamSsoProperties properties;
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
@@ -95,16 +98,33 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter {
IamSsoProperties properties, IamSsoProperties properties,
ObjectMapper objectMapper) { ObjectMapper objectMapper) {
super(clientService, userService, passwordHandler, bladeRedis); super(clientService, userService, passwordHandler, bladeRedis);
this.clientService = clientService;
this.userClient = userClient; this.userClient = userClient;
this.properties = properties; this.properties = properties;
this.objectMapper = objectMapper; this.objectMapper = objectMapper;
this.httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build(); this.httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build();
} }
@Override
public String type() {
return GRANT_TYPE;
}
@Override
public OAuth2Client client(OAuth2Request request) {
String clientId = request.getClientId();
String clientSecret = request.getClientSecret();
OAuth2Client client = clientService.loadByClientId(clientId);
if (!clientService.validateClient(client, clientId, clientSecret)) {
throw new UserInvalidException(OAuth2TokenConstant.TOKEN_NOT_CORRECT);
}
return client;
}
@Override @Override
public OAuth2User user(OAuth2Request request) { public OAuth2User user(OAuth2Request request) {
if (!isIamRequest(request)) { if (!isIamRequest(request)) {
return super.user(request); throw new UserInvalidException(OAuth2TokenConstant.TOKEN_NOT_CORRECT);
} }
validateRequest(request); validateRequest(request);
// 先校验本系统客户端IAM的redirect_uri由后续远端接口校验。 // 先校验本系统客户端IAM的redirect_uri由后续远端接口校验。