Merge remote-tracking branch 'shucheng/mk'

# Conflicts:
#	blade-service-api/blade-open-api/src/main/java/org/springblade/openapi/mk/api/IApi4MK.java
#	blade-service-api/pom.xml
#	blade-service/blade-file/src/main/java/org/springblade/file/FileApplication.java
#	blade-service/blade-file/src/main/resources/bootstrap.yml
#	blade-service/blade-openapi/src/main/java/org/springblade/openapi/OpenApiApplication.java
#	blade-service/blade-openapi/src/main/resources/bootstrap.yml
#	pom.xml
This commit is contained in:
2026-08-15 12:16:05 +08:00
77 changed files with 5134 additions and 207 deletions
@@ -43,6 +43,8 @@ import org.springframework.session.data.redis.config.annotation.web.http.EnableR
public class AuthApplication {
public static void main(String[] args) {
// 禁用框架注入的nacos import配置、config、discovery 配置
BladeApplication.disableNacosLaunchConfig();
BladeApplication.run(AppConstant.APPLICATION_AUTH_NAME, AuthApplication.class, args);
}
@@ -0,0 +1,68 @@
package org.springblade.auth.endpoint;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.oauth2.endpoint.AbstractOAuth2MKEndpoint;
import org.springblade.core.oauth2.granter.TokenGranterFactory;
import org.springblade.core.oauth2.handler.TokenHandler;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.core.tool.utils.UrlUtil;
import org.springblade.thirdparty.mk.config.MKProperties;
import org.springblade.thirdparty.mk.service.IMKService;
import org.springframework.web.bind.annotation.RestController;
import java.util.stream.Stream;
/**
* @author bfhuange
* @date 2024/9/17
*/
@RestController
@Slf4j
@Tag(name = "跳转mk认证", description = "跳转mk认证端点")
public class OAuth2MKEndpoint extends AbstractOAuth2MKEndpoint {
/**
* 登录链接
*/
private static final String LOGIN_URL_FORMAT = "%s%s?appId=%s&redirection_url=%s";
private final MKProperties mkProperties;
private final IMKService mkService;
public OAuth2MKEndpoint(TokenGranterFactory granterFactory, TokenHandler tokenHandler, MKProperties mkProperties, IMKService mkService) {
super(granterFactory, tokenHandler);
this.mkProperties = mkProperties;
this.mkService = mkService;
}
@Override
protected String generateLoginUrl(String refererUrl) {
// 重定向到来源
return String.format(LOGIN_URL_FORMAT, mkProperties.getLoginUrl(), mkProperties.getMkSsoLoginUrl(), mkProperties.getOauthAppId(), UrlUtil.encode(refererUrl));
}
@Override
protected String getAccountByMkCode(String mkCode) {
return mkService.getMKAccount(mkCode);
}
@Override
protected boolean checkRefererUrl(String refererUrl) {
if (!mkProperties.isCheckReferer()) {
// 未开启校验来源,校验通过
return true;
}
if (StringUtil.isBlank(mkProperties.getErpBaseUrls())) {
log.error("未配置erp地址,无法校验来源");
return false;
}
if (StringUtil.isBlank(refererUrl)) {
// 来源地址为空,通过,以便用于调试
return true;
}
// 匹配到一个erp基础地址就行了
return Stream.of(mkProperties.getErpBaseUrls().split(","))
.map(String::trim)
.anyMatch(refererUrl::startsWith);
}
}
@@ -0,0 +1,13 @@
package org.springblade.auth.exception;
import org.springblade.auth.endpoint.OAuth2MKEndpoint;
import org.springblade.core.oauth2.exception.OAuth2ExceptionHandler;
import org.springframework.web.bind.annotation.ControllerAdvice;
/**
* @author bfhuange
* @date 2024/10/16
*/
@ControllerAdvice(basePackageClasses = OAuth2MKEndpoint.class)
public class OAuth2MKExceptionHandler extends OAuth2ExceptionHandler {
}
@@ -1,15 +0,0 @@
#服务器端口
server:
port: 8100
#数据源配置
spring:
datasource:
url: ${blade.datasource.dev.url}
username: ${blade.datasource.dev.username}
password: ${blade.datasource.dev.password}
#第三方登陆
social:
enabled: true
domain: http://127.0.0.1:2888
@@ -1,15 +0,0 @@
#服务器端口
server:
port: 8100
#数据源配置
spring:
datasource:
url: ${blade.datasource.prod.url}
username: ${blade.datasource.prod.username}
password: ${blade.datasource.prod.password}
#第三方登陆
social:
enabled: true
domain: http://127.0.0.1:2888
@@ -1,15 +0,0 @@
#服务器端口
server:
port: 8100
#数据源配置
spring:
datasource:
url: ${blade.datasource.test.url}
username: ${blade.datasource.test.username}
password: ${blade.datasource.test.password}
#第三方登陆
social:
enabled: true
domain: http://127.0.0.1:2888
+28 -1
View File
@@ -1,6 +1,31 @@
# 在使用Spring默认数据源Hikari的情况下配置以下配置项
#服务器端口
server:
port: 8100
spring:
application:
name: blade-auth
config:
import:
- nacos:blade.yaml?group=DEFAULT_GROUP&refreshEnabled=true
- nacos:blade-${spring.profiles.active}.yaml?group=DEFAULT_GROUP&refreshEnabled=true
- nacos:third-party-api.yaml?group=DEFAULT_GROUP&refreshEnabled=true
- optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml?group=DEFAULT_GROUP&refreshEnabled=true
cloud:
nacos:
username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos}
server-addr: ${NACOS_HOST:127.0.0.1:8848}
discovery:
namespace: ${NACOS_NAMESPACE:${spring.profiles.active}}
config:
# 文件后缀名
file-extension: yaml
namespace: ${NACOS_NAMESPACE:${spring.profiles.active}}
datasource:
url: ${blade.datasource.${spring.profiles.active}.url}
username: ${blade.datasource.${spring.profiles.active}.username}
password: ${blade.datasource.${spring.profiles.active}.password}
# 在使用Spring默认数据源Hikari的情况下配置以下配置项
hikari:
# 自动提交从池中返回的连接
auto-commit: true
@@ -42,6 +67,8 @@ swagger:
#第三方登陆
social:
enabled: true
domain: http://127.0.0.1:2888
oauth:
GITHUB:
client-id: 233************