diff --git a/backend/src/main/java/io/dataease/auth/config/RsaProperties.java b/backend/src/main/java/io/dataease/auth/config/RsaProperties.java index fc60282687..f44742d311 100644 --- a/backend/src/main/java/io/dataease/auth/config/RsaProperties.java +++ b/backend/src/main/java/io/dataease/auth/config/RsaProperties.java @@ -10,8 +10,15 @@ public class RsaProperties { public static String privateKey; + public static String publicKey; + @Value("${rsa.private_key}") public void setPrivateKey(String privateKey) { RsaProperties.privateKey = privateKey; } + + @Value("${rsa.public_key}") + public void setPublicKey(String publicKey) { + RsaProperties.publicKey = publicKey; + } } diff --git a/backend/src/main/java/io/dataease/auth/util/JWTUtils.java b/backend/src/main/java/io/dataease/auth/util/JWTUtils.java index 7219376e10..1b4026dede 100644 --- a/backend/src/main/java/io/dataease/auth/util/JWTUtils.java +++ b/backend/src/main/java/io/dataease/auth/util/JWTUtils.java @@ -118,6 +118,24 @@ public class JWTUtils { } } + public static String signLink(String resourceId, String secret) { + Algorithm algorithm = Algorithm.HMAC256(secret); + return JWT.create().withClaim("resourceId", resourceId).sign(algorithm); + } + + public static boolean verifyLink(String token,String resourceId, String secret) { + Algorithm algorithm = Algorithm.HMAC256(secret); + JWTVerifier verifier = JWT.require(algorithm) + .withClaim("resourceId", resourceId) + .build(); + try { + verifier.verify(token); + return true; + }catch (Exception e){ + return false; + } + } + /** * 获取当前token上次操作时间 * @param token diff --git a/backend/src/main/java/io/dataease/auth/util/RsaUtil.java b/backend/src/main/java/io/dataease/auth/util/RsaUtil.java index 577693cc48..46c5ed282a 100644 --- a/backend/src/main/java/io/dataease/auth/util/RsaUtil.java +++ b/backend/src/main/java/io/dataease/auth/util/RsaUtil.java @@ -1,11 +1,14 @@ package io.dataease.auth.util; import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang.ArrayUtils; import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.PrivateKey; +import java.security.PublicKey; import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; public class RsaUtil { @@ -23,7 +26,39 @@ public class RsaUtil { PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec5); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); - byte[] result = cipher.doFinal(Base64.decodeBase64(text)); +// byte[] result = cipher.doFinal(Base64.decodeBase64(text)); + // 下面该用分段加密 + byte[] result = null; + byte[] b = Base64.decodeBase64(text); + for (int i = 0; i < b.length; i += 64) { + byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(b, i,i + 64)); + result = ArrayUtils.addAll(result, doFinal); + } return new String(result); } + + /** + * 公钥加密 + * + * @param publicKeyText 公钥 + * @param text 待加密的文本 + * @return / + */ + public static String encryptByPublicKey(String publicKeyText, String text) throws Exception { + X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyText)); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2); + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + /*byte[] result = cipher.doFinal(text.getBytes());*/ + // 下面该用分段加密 + byte[] result = null; + byte[] b = text.getBytes("utf-8"); + for (int i = 0; i < b.length; i += 50) { + byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(b, i,i + 50)); + result = ArrayUtils.addAll(result, doFinal); + } + return Base64.encodeBase64String(result); + } + } diff --git a/backend/src/main/java/io/dataease/base/domain/PanelLink.java b/backend/src/main/java/io/dataease/base/domain/PanelLink.java index b64e46299f..efe0e389fb 100644 --- a/backend/src/main/java/io/dataease/base/domain/PanelLink.java +++ b/backend/src/main/java/io/dataease/base/domain/PanelLink.java @@ -7,6 +7,8 @@ import lombok.Data; public class PanelLink implements Serializable { private String resourceId; + private Boolean valid; + private Boolean enablePwd; private String pwd; diff --git a/backend/src/main/java/io/dataease/base/domain/PanelLinkExample.java b/backend/src/main/java/io/dataease/base/domain/PanelLinkExample.java index f1303717f9..0dccb6d0b7 100644 --- a/backend/src/main/java/io/dataease/base/domain/PanelLinkExample.java +++ b/backend/src/main/java/io/dataease/base/domain/PanelLinkExample.java @@ -174,6 +174,66 @@ public class PanelLinkExample { return (Criteria) this; } + public Criteria andValidIsNull() { + addCriterion("`valid` is null"); + return (Criteria) this; + } + + public Criteria andValidIsNotNull() { + addCriterion("`valid` is not null"); + return (Criteria) this; + } + + public Criteria andValidEqualTo(Boolean value) { + addCriterion("`valid` =", value, "valid"); + return (Criteria) this; + } + + public Criteria andValidNotEqualTo(Boolean value) { + addCriterion("`valid` <>", value, "valid"); + return (Criteria) this; + } + + public Criteria andValidGreaterThan(Boolean value) { + addCriterion("`valid` >", value, "valid"); + return (Criteria) this; + } + + public Criteria andValidGreaterThanOrEqualTo(Boolean value) { + addCriterion("`valid` >=", value, "valid"); + return (Criteria) this; + } + + public Criteria andValidLessThan(Boolean value) { + addCriterion("`valid` <", value, "valid"); + return (Criteria) this; + } + + public Criteria andValidLessThanOrEqualTo(Boolean value) { + addCriterion("`valid` <=", value, "valid"); + return (Criteria) this; + } + + public Criteria andValidIn(List values) { + addCriterion("`valid` in", values, "valid"); + return (Criteria) this; + } + + public Criteria andValidNotIn(List values) { + addCriterion("`valid` not in", values, "valid"); + return (Criteria) this; + } + + public Criteria andValidBetween(Boolean value1, Boolean value2) { + addCriterion("`valid` between", value1, value2, "valid"); + return (Criteria) this; + } + + public Criteria andValidNotBetween(Boolean value1, Boolean value2) { + addCriterion("`valid` not between", value1, value2, "valid"); + return (Criteria) this; + } + public Criteria andEnablePwdIsNull() { addCriterion("enable_pwd is null"); return (Criteria) this; diff --git a/backend/src/main/java/io/dataease/base/mapper/PanelLinkMapper.xml b/backend/src/main/java/io/dataease/base/mapper/PanelLinkMapper.xml index fb76f65c1d..130aeb61df 100644 --- a/backend/src/main/java/io/dataease/base/mapper/PanelLinkMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/PanelLinkMapper.xml @@ -3,6 +3,7 @@ + @@ -65,7 +66,7 @@ - resource_id, enable_pwd, pwd + resource_id, `valid`, enable_pwd, pwd