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.handler.PasswordHandler;
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.OAuth2User;
import org.springblade.core.oauth2.service.OAuth2UserService;
@@ -78,10 +79,12 @@ import java.util.stream.Collectors;
@Order(Ordered.HIGHEST_PRECEDENCE)
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 BEARER_PREFIX = "Bearer ";
private static final String BASIC_PREFIX = "Basic ";
private final OAuth2ClientService clientService;
private final IUserClient userClient;
private final IamSsoProperties properties;
private final ObjectMapper objectMapper;
@@ -95,16 +98,33 @@ public class IamSsoTokenGranter extends AuthorizationCodeGranter {
IamSsoProperties properties,
ObjectMapper objectMapper) {
super(clientService, userService, passwordHandler, bladeRedis);
this.clientService = clientService;
this.userClient = userClient;
this.properties = properties;
this.objectMapper = objectMapper;
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
public OAuth2User user(OAuth2Request request) {
if (!isIamRequest(request)) {
return super.user(request);
throw new UserInvalidException(OAuth2TokenConstant.TOKEN_NOT_CORRECT);
}
validateRequest(request);
// 先校验本系统客户端IAM的redirect_uri由后续远端接口校验。