diff --git a/pom.xml b/pom.xml
index f30f2f6..b71ae30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -75,11 +75,16 @@
${spring.authorization.server.version}
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+
+
- com.nimbusds
- nimbus-jose-jwt
- 9.24.4
+ org.springframework.security
+ spring-security-oauth2-jose
+ 5.7.11
diff --git a/xservice-common/pom.xml b/xservice-common/pom.xml
index b4676bd..6f9d661 100644
--- a/xservice-common/pom.xml
+++ b/xservice-common/pom.xml
@@ -6,9 +6,9 @@
com.xiang
xservice-basic
- 1.1
+ 2.0-SNAPSHOT
- 1.3
+ 2.0-SNAPSHOT
xservice-common
diff --git a/xservice-common/src/main/java/com/xiang/xservice/basic/utils/JwkUtils.java b/xservice-common/src/main/java/com/xiang/xservice/basic/utils/JwkUtils.java
new file mode 100644
index 0000000..d2e78c2
--- /dev/null
+++ b/xservice-common/src/main/java/com/xiang/xservice/basic/utils/JwkUtils.java
@@ -0,0 +1,35 @@
+package com.xiang.xservice.basic.utils;
+
+import com.nimbusds.jose.jwk.RSAKey;
+
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.UUID;
+
+public class JwkUtils {
+
+
+ public static RSAKey generateRsa() {
+ KeyPair keyPair = generateRsaKey();
+ RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
+ RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
+ return new RSAKey.Builder(publicKey)
+ .privateKey(privateKey)
+ .keyID(UUID.randomUUID().toString())
+ .build();
+ }
+
+ static KeyPair generateRsaKey() {
+ KeyPair keyPair;
+ try {
+ KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
+ keyPairGenerator.initialize(2048);
+ keyPair = keyPairGenerator.generateKeyPair();
+ } catch (Exception ex) {
+ throw new IllegalStateException(ex);
+ }
+ return keyPair;
+ }
+}
diff --git a/xservice-mysql-starter/src/main/java/com/xiang/xservice/mysql/service/DynamicRoutingDataSource.java b/xservice-mysql-starter/src/main/java/com/xiang/xservice/mysql/service/DynamicRoutingDataSource.java
index ddff2ae..4d5ef61 100644
--- a/xservice-mysql-starter/src/main/java/com/xiang/xservice/mysql/service/DynamicRoutingDataSource.java
+++ b/xservice-mysql-starter/src/main/java/com/xiang/xservice/mysql/service/DynamicRoutingDataSource.java
@@ -4,9 +4,12 @@ import com.xiang.xservice.basic.utils.SSHManager;
import com.xiang.xservice.mysql.config.DynamicDataSourceContext;
import com.xiang.xservice.mysql.entity.DataSourceProperty;
import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import com.xiang.xservice.mysql.entity.DynamicDataSourceProperties;
+import java.util.Objects;
+
@RequiredArgsConstructor
public class DynamicRoutingDataSource extends AbstractRoutingDataSource {
@@ -15,7 +18,13 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
String key = DynamicDataSourceContext.get();
+ if (StringUtils.isEmpty(key)) {
+ key = dynamicDataSourceProperties.getPrimary();
+ }
DataSourceProperty dataSourceProperty = dynamicDataSourceProperties.getDatasource().get(key);
+ if (Objects.isNull(dataSourceProperty.getSshConnect())) {
+ return key;
+ }
if (Boolean.TRUE.equals(dataSourceProperty.getSshConnect())) {
try {
SSHManager.createTunnel(