IAM对接调试
This commit is contained in:
@@ -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由后续远端接口校验。
|
||||||
|
|||||||
Reference in New Issue
Block a user