update:第三方待办添加用户名后缀并加密,第三方点击可跳转至审批处理页面22
This commit is contained in:
parent
922ac72513
commit
2b89841beb
|
@ -13,6 +13,7 @@ import kd.bos.login.thirdauth.UserProperType;
|
|||
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import shkd.sys.sys.utils.RSAUtil;
|
||||
import shkd.sys.sys.utils.RSAUtils;
|
||||
|
||||
import javax.servlet.http.*;
|
||||
|
@ -110,9 +111,8 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
|
|||
}
|
||||
}else if (StringUtils.isNotEmpty(userName)){
|
||||
try{
|
||||
PrivateKey privateKey1 = RSAUtils.getPrivateKey(Base64.decodeBase64(RSAUtils.privateKey));
|
||||
String sourceData = new String(RSAUtils.decryptByKey(privateKey1, Base64.decodeBase64(userName.getBytes())));
|
||||
result.setUser(sourceData);
|
||||
String user = RSAUtil.decrypt(userName,RSAUtil.getPrivateKeyFromString());
|
||||
result.setUser(user);
|
||||
result.setSucess(true);
|
||||
logger.info("SSO用户登录成功,进入苍穹系统");
|
||||
}catch (Exception e){
|
||||
|
|
|
@ -21,6 +21,7 @@ import shkd.sys.sys.midservice.handler.CreateToDoHandler;
|
|||
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||
import shkd.sys.sys.midservice.utils.GetUrlUtils;
|
||||
import shkd.sys.sys.utils.RSAUtil;
|
||||
import shkd.sys.sys.utils.RSAUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
@ -175,13 +176,11 @@ public class ToDoResendTack extends AbstractTask {
|
|||
"phone,username", new QFilter[]{new QFilter("id", "=", next.getString("freceiveuserid"))});
|
||||
String userName;
|
||||
try {
|
||||
userName = new String(org.apache.commons.codec.binary.Base64.encodeBase64(RSAUtils.encryptByKey(
|
||||
RSAUtils.getPublicKey(Base64.decodeBase64(RSAUtils.publicKey)),
|
||||
dynamicObject.getString("username").getBytes())));
|
||||
userName = RSAUtil.decrypt(dynamicObject.getString("username"),RSAUtil.getPrivateKeyFromString());
|
||||
}catch (Exception e){
|
||||
ErrorCode errorCode = new ErrorCode("error_code", "公钥加密出现异常,请联系运维人员排查!");
|
||||
throw new KDException(errorCode, e);
|
||||
}// String number = dynamicObject.getString("number");
|
||||
}
|
||||
switch (t_status) {
|
||||
case "0":
|
||||
//标题
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.apache.commons.codec.binary.Base64;
|
|||
import shkd.sys.sys.midservice.handler.CreateToDoHandler;
|
||||
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||
import shkd.sys.sys.utils.RSAUtil;
|
||||
import shkd.sys.sys.utils.RSAUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -45,9 +46,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
for (DynamicObject query_one : query) {
|
||||
String userName;
|
||||
try {
|
||||
userName = new String(Base64.encodeBase64(RSAUtils.encryptByKey(
|
||||
RSAUtils.getPublicKey(Base64.decodeBase64(RSAUtils.publicKey)),
|
||||
query_one.getString("username").getBytes())));
|
||||
userName = RSAUtil.decrypt(query_one.getString("username"),RSAUtil.getPrivateKeyFromString());
|
||||
}catch (Exception e){
|
||||
ErrorCode errorCode = new ErrorCode("error_code", "公钥加密出现异常,请联系运维人员排查!");
|
||||
throw new KDException(errorCode, e);
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
package shkd.sys.sys.utils;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import java.security.KeyFactory;
|
||||
import java.security.PublicKey;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.spec.X509EncodedKeySpec;
|
||||
import java.security.spec.PKCS8EncodedKeySpec;
|
||||
import java.util.Base64;
|
||||
|
||||
public class RSAUtil {
|
||||
|
||||
private static String key = "kingdee20241219";
|
||||
|
||||
/**
|
||||
* 加密
|
||||
*
|
||||
* @param data 需加密的数据
|
||||
* @param key 公钥
|
||||
* @return 加密后的数据
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public static String encrypt(String data, PublicKey key) throws Exception {
|
||||
Cipher cipher = Cipher.getInstance("RSA");
|
||||
cipher.init(Cipher.ENCRYPT_MODE, key);
|
||||
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
|
||||
return Base64.getEncoder().encodeToString(encryptedBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密
|
||||
*
|
||||
* @param data 需加密的数据
|
||||
* @param key 私密
|
||||
* @return 解密后的数据
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public static String decrypt(String data, PrivateKey key) throws Exception {
|
||||
Cipher cipher = Cipher.getInstance("RSA");
|
||||
cipher.init(Cipher.DECRYPT_MODE, key);
|
||||
byte[] original = cipher.doFinal(Base64.getDecoder().decode(data));
|
||||
return new String(original);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取公钥
|
||||
*
|
||||
* @return 公钥
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public static PublicKey getPublicKeyFromString() throws Exception {
|
||||
byte[] keyBytes = Base64.getDecoder().decode(key);
|
||||
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
|
||||
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
|
||||
return keyFactory.generatePublic(keySpec);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取秘钥
|
||||
*
|
||||
* @return 私钥
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public static PrivateKey getPrivateKeyFromString() throws Exception {
|
||||
byte[] keyBytes = Base64.getDecoder().decode(key);
|
||||
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
|
||||
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
|
||||
return keyFactory.generatePrivate(keySpec);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue