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 kd.bos.servicehelper.user.UserServiceHelper;
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import shkd.sys.sys.utils.RSAUtil;
|
||||||
import shkd.sys.sys.utils.RSAUtils;
|
import shkd.sys.sys.utils.RSAUtils;
|
||||||
|
|
||||||
import javax.servlet.http.*;
|
import javax.servlet.http.*;
|
||||||
|
@ -110,9 +111,8 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
|
||||||
}
|
}
|
||||||
}else if (StringUtils.isNotEmpty(userName)){
|
}else if (StringUtils.isNotEmpty(userName)){
|
||||||
try{
|
try{
|
||||||
PrivateKey privateKey1 = RSAUtils.getPrivateKey(Base64.decodeBase64(RSAUtils.privateKey));
|
String user = RSAUtil.decrypt(userName,RSAUtil.getPrivateKeyFromString());
|
||||||
String sourceData = new String(RSAUtils.decryptByKey(privateKey1, Base64.decodeBase64(userName.getBytes())));
|
result.setUser(user);
|
||||||
result.setUser(sourceData);
|
|
||||||
result.setSucess(true);
|
result.setSucess(true);
|
||||||
logger.info("SSO用户登录成功,进入苍穹系统");
|
logger.info("SSO用户登录成功,进入苍穹系统");
|
||||||
}catch (Exception e){
|
}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.DealToDoHandler;
|
||||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||||
import shkd.sys.sys.midservice.utils.GetUrlUtils;
|
import shkd.sys.sys.midservice.utils.GetUrlUtils;
|
||||||
|
import shkd.sys.sys.utils.RSAUtil;
|
||||||
import shkd.sys.sys.utils.RSAUtils;
|
import shkd.sys.sys.utils.RSAUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -175,13 +176,11 @@ public class ToDoResendTack extends AbstractTask {
|
||||||
"phone,username", new QFilter[]{new QFilter("id", "=", next.getString("freceiveuserid"))});
|
"phone,username", new QFilter[]{new QFilter("id", "=", next.getString("freceiveuserid"))});
|
||||||
String userName;
|
String userName;
|
||||||
try {
|
try {
|
||||||
userName = new String(org.apache.commons.codec.binary.Base64.encodeBase64(RSAUtils.encryptByKey(
|
userName = RSAUtil.decrypt(dynamicObject.getString("username"),RSAUtil.getPrivateKeyFromString());
|
||||||
RSAUtils.getPublicKey(Base64.decodeBase64(RSAUtils.publicKey)),
|
|
||||||
dynamicObject.getString("username").getBytes())));
|
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
ErrorCode errorCode = new ErrorCode("error_code", "公钥加密出现异常,请联系运维人员排查!");
|
ErrorCode errorCode = new ErrorCode("error_code", "公钥加密出现异常,请联系运维人员排查!");
|
||||||
throw new KDException(errorCode, e);
|
throw new KDException(errorCode, e);
|
||||||
}// String number = dynamicObject.getString("number");
|
}
|
||||||
switch (t_status) {
|
switch (t_status) {
|
||||||
case "0":
|
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.CreateToDoHandler;
|
||||||
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
||||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||||
|
import shkd.sys.sys.utils.RSAUtil;
|
||||||
import shkd.sys.sys.utils.RSAUtils;
|
import shkd.sys.sys.utils.RSAUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -45,9 +46,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
for (DynamicObject query_one : query) {
|
for (DynamicObject query_one : query) {
|
||||||
String userName;
|
String userName;
|
||||||
try {
|
try {
|
||||||
userName = new String(Base64.encodeBase64(RSAUtils.encryptByKey(
|
userName = RSAUtil.decrypt(query_one.getString("username"),RSAUtil.getPrivateKeyFromString());
|
||||||
RSAUtils.getPublicKey(Base64.decodeBase64(RSAUtils.publicKey)),
|
|
||||||
query_one.getString("username").getBytes())));
|
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
ErrorCode errorCode = new ErrorCode("error_code", "公钥加密出现异常,请联系运维人员排查!");
|
ErrorCode errorCode = new ErrorCode("error_code", "公钥加密出现异常,请联系运维人员排查!");
|
||||||
throw new KDException(errorCode, e);
|
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