修改对接iam
This commit is contained in:
+288
-88
@@ -1,12 +1,16 @@
|
||||
package com.jero.modules.docking.iam.client;
|
||||
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.bamboocloud.codec.BamboocloudFacade;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.banboocloud.Codec.BamboocloudFacade;
|
||||
import com.banboocloud.Codec.Sm3Signature;
|
||||
import com.banboocloud.Codec.Sm4Cipher;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jero.common.util.DateUtils;
|
||||
import com.jero.common.util.UUIDGenerator;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.modules.docking.utils.BamboocloudCheryUtils;
|
||||
import com.jero.modules.docking.iam.dto.IamCommonAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamOrgAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamUserAcceptDto;
|
||||
@@ -15,45 +19,54 @@ import com.jero.modules.docking.iam.po.MessageHeader;
|
||||
import com.jero.modules.docking.iam.po.encrypt.MessageEncryptTabels;
|
||||
import com.jero.modules.docking.iam.po.encrypt.MessageEncryptTabelsHeader;
|
||||
import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo;
|
||||
import com.jero.modules.docking.utils.BamboocloudUtils;
|
||||
import com.jero.modules.docking.utils.DockingConstant;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* 测试接口是否正确的客户端,mock IAM发送请求
|
||||
*/
|
||||
public class TestClient {
|
||||
|
||||
//SM4
|
||||
private String key = "JLB6L6MJVIT5Z7IL";
|
||||
private String type = "SM4";
|
||||
|
||||
public static void main(String[] args) throws JsonProcessingException {
|
||||
TestClient testClient = new TestClient();
|
||||
// testClient.sendSchemaService(); // 字段映射接口测试
|
||||
// for (int i = 0; i < 1; i++) {
|
||||
// for (int i = 1; i < 2; i++) {
|
||||
// System.out.println(i);
|
||||
// testClient.sendUserCreate(i);
|
||||
// }
|
||||
// 创建用户接口测试
|
||||
// testClient.sendUserUpdate(); // 更新用户接口测试
|
||||
// testClient.sendUserDel(); // 更新用户接口测试
|
||||
// testClient.sendOrgCreate(); // 组织创建接口测试
|
||||
// testClient.sendOrgUpdate(); // 组织修改接口测试
|
||||
// testClient.sendOrgDel(); // 组织删除接口测试
|
||||
// testClient.sendQueryAllUserIdsService(); // 查询所有用户ID接口测试
|
||||
// testClient.sendQueryAllOrgIdsService(); // 查询所有组织ID接口测试
|
||||
// testClient.sendQueryOrgByIdService(); // 查询指定id的组织数据测试
|
||||
// testClient.sendQueryUserByIdService(); // 查询指定id的用户数据测试
|
||||
testClient.decryptSting("8rAKWPUwkEZ3yYLy/1TuGGkIGCYtc+MD56pShLi97OmMttoFooo5GXZ/lY4NrQ5DiWmVUX23zqDwyQqufXLZNDU+KuJO/9UonpqUlZxM91w=");
|
||||
testClient.sendQueryUserByIdService(); // 查询指定id的用户数据测试
|
||||
// testClient.decryptSting("8rAKWPUwkEZ3yYLy/1TuGGkIGCYtc+MD56pShLi97OmMttoFooo5GXZ/lY4NrQ5DiWmVUX23zqDwyQqufXLZNDU+KuJO/9UonpqUlZxM91w=");
|
||||
}
|
||||
|
||||
private void decryptSting(String encryptString) {
|
||||
String decrypt = BamboocloudUtils.getPlaintext(encryptString, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
String decrypt = BamboocloudCheryUtils.getPlaintext(encryptString, key, type);
|
||||
System.out.println("解密后数据:" + decrypt);
|
||||
}
|
||||
|
||||
// 对数据解密
|
||||
private void decryptData(String encryptData) throws JsonProcessingException {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
SendPoEncryptPo sendPoEncryptPo = objectMapper.readValue(encryptData, SendPoEncryptPo.class);
|
||||
String decrypt = BamboocloudUtils.getPlaintext(sendPoEncryptPo.getReturns().getData(), DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
System.out.println("解密后数据:" + decrypt);
|
||||
String res = BamboocloudFacade.decrypt(encryptData, key, type);
|
||||
System.out.println("解密后数据:" + res);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -89,24 +102,54 @@ public class TestClient {
|
||||
/**
|
||||
* Schema映射获取
|
||||
*/
|
||||
private void sendSchemaService() throws JsonProcessingException {
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserCreateService";
|
||||
private void sendSchemaService() {
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/SchemaService";
|
||||
|
||||
IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto();
|
||||
iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamCommonAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamCommonAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamCommonAcceptDto);
|
||||
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamCommonAcceptDto.setSignature(signatureStr);
|
||||
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamCommonAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
//输出密文
|
||||
System.out.println("加密:" + target);
|
||||
//输出解密
|
||||
System.out.println("解密:" + sm4Cipher.decrypt(target,key));
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("映射接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("映射接口响应解密:" + res);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private StringBuilder getStringBuilder(IamCommonAcceptDto iamCommonAcceptDto) {
|
||||
Map<String,Object> reqMap = (Map<String,Object>) JSON.parse(JSON.toJSONString(iamCommonAcceptDto));
|
||||
|
||||
Map<String, Object> verifymap = new TreeMap<>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String key : reqMap.keySet()) {
|
||||
verifymap.put(key, reqMap.get(key));
|
||||
}
|
||||
for (String key : verifymap.keySet()) {
|
||||
if (!"signature".equals(key)) {
|
||||
sb.append(key).append("=").append(verifymap.get(key)).append("&");
|
||||
}
|
||||
}
|
||||
sb.deleteCharAt(sb.length() - 1);
|
||||
System.out.println(reqMap.get("signature") + " now " + sb.toString());
|
||||
return sb;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -122,25 +165,36 @@ public class TestClient {
|
||||
iamUserAcceptDto.setSrmsSex("1"); // 男
|
||||
iamUserAcceptDto.setSrmsPhone("13811112232");
|
||||
iamUserAcceptDto.setSrmsEmail("test@sinotruk.com");
|
||||
|
||||
iamUserAcceptDto.setEmployeeNo("1111");
|
||||
iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamUserAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamUserAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
iamUserAcceptDto.setBirthday("2024-05-01");
|
||||
iamUserAcceptDto.setEntryTime("2024-06-01");
|
||||
iamUserAcceptDto.setResignationTime("2024-07-01");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamUserAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamUserAcceptDto);
|
||||
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamUserAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamUserAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 封装 AcceptPoSystemPo 为PO层套壳
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserCreateService";
|
||||
// String url = "laws-test.sinotruk.com/laws-sinotruk/sync/iam/UserCreateService";
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/UserCreateService";
|
||||
// String url = "laws-test.sinotruk.com/laws-chery/sync/iam/chery/UserCreateService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("用户创建接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("用户创建接口响应解密:" + res);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,25 +203,70 @@ public class TestClient {
|
||||
private void sendUserUpdate() throws JsonProcessingException {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
|
||||
iamUserAcceptDto.setBimUid("1709786346053017601"); // 数据库中取到的ID
|
||||
iamUserAcceptDto.setBimUid("1803973103451799554"); // 数据库中取到的ID
|
||||
iamUserAcceptDto.setBirthday("2018-12-05 00:00:00");
|
||||
iamUserAcceptDto.setBirthday("2024-05-01");
|
||||
iamUserAcceptDto.setEntryTime("2024-06-01");
|
||||
iamUserAcceptDto.setResignationTime("2024-07-01");
|
||||
iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamUserAcceptDto.setEmployeeNo("feishuid");
|
||||
iamUserAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamUserAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
StringBuilder sb = getStringBuilder(iamUserAcceptDto);
|
||||
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamUserAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamUserAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/UserUpdateService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("用户更新接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("用户更新接口响应解密:" + res);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户删除测试
|
||||
*/
|
||||
private void sendUserDel() throws JsonProcessingException {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
|
||||
iamUserAcceptDto.setBimUid("1819982931501633537"); // 数据库中取到的ID
|
||||
iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamUserAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamUserAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamUserAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamUserAcceptDto);
|
||||
|
||||
// 封装 AcceptPoSystemPo 为PO层套壳
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamUserAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamUserAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserUpdateService";
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
System.out.println("用户更新接口响应:" + response);
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/UserDeleteService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("用户删除接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("用户删除接口响应解密:" + res);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -177,7 +276,7 @@ public class TestClient {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto();
|
||||
|
||||
iamOrgAcceptDto.setSrmsOrgCode("IA00102");
|
||||
iamOrgAcceptDto.setSrmsOrgCode("IA00104");
|
||||
iamOrgAcceptDto.setSrmsDepartName("测试IAM部门");
|
||||
iamOrgAcceptDto.setSrmsParentCode("");
|
||||
|
||||
@@ -185,42 +284,127 @@ public class TestClient {
|
||||
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamOrgAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamOrgAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamOrgAcceptDto);
|
||||
|
||||
// 封装 AcceptPoSystemPo 为PO层套壳
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamOrgAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamOrgAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/OrgCreateService";
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/OrgCreateService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("组织创建接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("组织创建接口响应解密:" + res);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户修改测试
|
||||
*/
|
||||
private void sendOrgUpdate() throws JsonProcessingException {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto();
|
||||
iamOrgAcceptDto.setBimOrgId("IA00104");
|
||||
iamOrgAcceptDto.setSrmsOrgCode("IA00104");
|
||||
iamOrgAcceptDto.setSrmsDepartName("测试IAM部门1");
|
||||
iamOrgAcceptDto.setSrmsParentCode("");
|
||||
|
||||
iamOrgAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamOrgAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
StringBuilder sb = getStringBuilder(iamOrgAcceptDto);
|
||||
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamOrgAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamOrgAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/OrgUpdateService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("组织修改接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("组织修改接口响应解密:" + res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户删除测试
|
||||
*/
|
||||
private void sendOrgDel() throws JsonProcessingException {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto();
|
||||
iamOrgAcceptDto.setBimOrgId("IA00104");
|
||||
|
||||
iamOrgAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamOrgAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
StringBuilder sb = getStringBuilder(iamOrgAcceptDto);
|
||||
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamOrgAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamOrgAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/OrgDeleteService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("组织删除接口响应:" + response);
|
||||
String res = BamboocloudFacade.decrypt(response, key, type);
|
||||
System.out.println("组织删除接口响应解密:" + res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取全部用户id
|
||||
*/
|
||||
private void sendQueryAllUserIdsService() throws JsonProcessingException {
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryAllUserIdsService";
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/QueryAllUserIdsService";
|
||||
|
||||
IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto();
|
||||
iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamCommonAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamCommonAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamCommonAcceptDto);
|
||||
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamCommonAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamCommonAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("查询全部用户id接口响应:" + response);
|
||||
|
||||
this.decryptData(response);
|
||||
}
|
||||
|
||||
@@ -228,22 +412,28 @@ public class TestClient {
|
||||
* 获取全部组织id
|
||||
*/
|
||||
private void sendQueryAllOrgIdsService() throws JsonProcessingException {
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryAllOrgIdsService";
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/QueryAllOrgIdsService";
|
||||
|
||||
IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto();
|
||||
iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamCommonAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamCommonAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamCommonAcceptDto);
|
||||
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamCommonAcceptDto.setSignature(signatureStr);
|
||||
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamCommonAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("查询全部组织id接口响应:" + response);
|
||||
|
||||
this.decryptData(response);
|
||||
@@ -255,22 +445,27 @@ public class TestClient {
|
||||
private void sendQueryUserByIdService() throws JsonProcessingException {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
|
||||
iamUserAcceptDto.setBimUid("1709786346053017601"); // 数据库中取到的ID
|
||||
iamUserAcceptDto.setBimUid("1819982931501633537"); // 数据库中取到的ID
|
||||
iamUserAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamUserAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamUserAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamUserAcceptDto);
|
||||
|
||||
// 封装 AcceptPoSystemPo 为PO层套壳
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamUserAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamUserAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryUserByIdService";
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/QueryUserByIdService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("用户查询接口响应:" + response);
|
||||
|
||||
this.decryptData(response);
|
||||
@@ -286,18 +481,23 @@ public class TestClient {
|
||||
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamOrgAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamOrgAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
StringBuilder sb = getStringBuilder(iamOrgAcceptDto);
|
||||
|
||||
// 封装 AcceptPoSystemPo 为PO层套壳
|
||||
AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
System.out.println("签名前:" + sb.toString());
|
||||
//sm3签名
|
||||
Sm3Signature signature = new Sm3Signature();
|
||||
String signatureStr = signature.signature(sb.toString());
|
||||
System.out.println("签名后:" + signatureStr);
|
||||
iamOrgAcceptDto.setSignature(signatureStr);
|
||||
|
||||
//sm4加解密
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = JSON.toJSONString(iamOrgAcceptDto);
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryOrgByIdService";
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
String url = "http://localhost:8188/laws-chery/sync/iam/chery/QueryOrgByIdService";
|
||||
String response = HttpUtil.post(url, target);
|
||||
System.out.println("组织查询接口响应:" + response);
|
||||
|
||||
this.decryptData(response);
|
||||
|
||||
+2
-4
@@ -1,7 +1,8 @@
|
||||
package com.jero.modules.docking.iam.chery;
|
||||
package com.jero.modules.docking.iam.controller;
|
||||
|
||||
import com.banboocloud.Codec.Sm3Signature;
|
||||
import com.banboocloud.Codec.Sm4Cipher;
|
||||
|
||||
public class EncryptTest {
|
||||
public static void main(String[] args) {
|
||||
//sm3签名
|
||||
@@ -14,11 +15,8 @@ public class EncryptTest {
|
||||
Sm4Cipher sm4Cipher = new Sm4Cipher();
|
||||
String source = "{\"userId\":1,\"signature\":\"" + signatureStr + "\"}";
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
String sourceNew = sm4Cipher.decrypt(target,key);
|
||||
|
||||
//输出密文
|
||||
System.out.println("target:" + target);
|
||||
//输出明文
|
||||
System.out.println("sourceNew:" + sourceNew);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.jero.modules.docking.iam.chery.entity;
|
||||
package com.jero.modules.docking.iam.entity;
|
||||
|
||||
public class AttributeEntity {
|
||||
private String name;
|
||||
+73
-13
@@ -28,7 +28,7 @@ import com.jero.modules.docking.iam.exception.IamGlobalException;
|
||||
import com.jero.modules.docking.iam.po.MessageHeader;
|
||||
import com.jero.modules.docking.iam.po.encrypt.SendEncryptReturnsPo;
|
||||
import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo;
|
||||
import com.jero.modules.docking.iam.chery.service.BamboocloudUtils;
|
||||
import com.jero.modules.docking.utils.BamboocloudCheryUtils;
|
||||
import com.jero.modules.docking.utils.DockingConstant;
|
||||
import com.jero.modules.system.entity.*;
|
||||
import com.jero.modules.system.service.*;
|
||||
@@ -43,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.lang.reflect.Field;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -104,17 +106,21 @@ public class SyncIamService {
|
||||
* @return
|
||||
*/
|
||||
public String getStringObjectMap(HttpServletRequest req) {
|
||||
String bodyparam = BamboocloudUtils.getRequestBody(req);
|
||||
System.out.println("first--param-->" + bodyparam);
|
||||
//报文解密
|
||||
bodyparam = BamboocloudUtils.getPlaintext(bodyparam, key, type);
|
||||
System.out.println("json--param-->" + bodyparam);
|
||||
Map<String,Object> reqMap = (Map<String,Object>) JSON.parse(bodyparam);
|
||||
//验证签名
|
||||
if (!BamboocloudUtils.verify(reqMap, signType)) {
|
||||
throw new IamGlobalException(reqMap.getOrDefault("bimRequestId","").toString(), PARAM_NOT_GET_ERROR);
|
||||
try {
|
||||
String bodyparam = BamboocloudCheryUtils.getRequestBody(req);
|
||||
System.out.println("first--param-->" + bodyparam);
|
||||
//报文解密
|
||||
bodyparam = BamboocloudCheryUtils.getPlaintext(bodyparam, key, type);
|
||||
System.out.println("json--param-->" + bodyparam);
|
||||
Map<String,Object> reqMap = (Map<String,Object>) JSON.parse(bodyparam);
|
||||
//验证签名
|
||||
if (!BamboocloudCheryUtils.verify(reqMap, signType)) {
|
||||
throw new IamGlobalException(reqMap.getOrDefault("bimRequestId","").toString(), PARAM_NOT_GET_ERROR);
|
||||
}
|
||||
return JSON.toJSONString(reqMap);
|
||||
}catch (Exception e){
|
||||
throw new IamGlobalException("", PARAM_NOT_GET_ERROR);
|
||||
}
|
||||
return JSON.toJSONString(reqMap);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -206,6 +212,33 @@ public class SyncIamService {
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUsername(userAcceptDto.getSrmsUsername());
|
||||
sysUser.setRealname(userAcceptDto.getSrmsRealname());
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getBirthday())){
|
||||
sysUser.setBirthday(null);
|
||||
}else{
|
||||
sysUser.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getBirthday()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"生日格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getEntryTime())){
|
||||
sysUser.setEntryTime(null);
|
||||
}else{
|
||||
sysUser.setEntryTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getEntryTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"入职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getResignationTime())){
|
||||
sysUser.setResignationTime(null);
|
||||
}else{
|
||||
sysUser.setResignationTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getResignationTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"离职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
|
||||
sysUser.setPassword(CommonConstant.DEFAULT_PASSWORD);
|
||||
String salt = UUIDUtils.randomUUID(8);
|
||||
@@ -229,6 +262,7 @@ public class SyncIamService {
|
||||
// 设置飞书id, IAM村的id就是飞书id
|
||||
sysUser.setFeishuId(userAcceptDto.getEmployeeNo());
|
||||
sysUser.setTypeId(userAcceptDto.getSrmsTypeId());
|
||||
sysUser.setStatus(1);
|
||||
|
||||
// 获取组织机构(多个逗号分隔)
|
||||
String orgCode = userAcceptDto.getSrmsOrgCode();
|
||||
@@ -280,7 +314,33 @@ public class SyncIamService {
|
||||
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsTypeId())){
|
||||
sysUser.setTypeId(userAcceptDto.getSrmsTypeId());
|
||||
}
|
||||
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getBirthday())){
|
||||
sysUser.setBirthday(null);
|
||||
}else{
|
||||
sysUser.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getBirthday()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"生日格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getEntryTime())){
|
||||
sysUser.setEntryTime(null);
|
||||
}else{
|
||||
sysUser.setEntryTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getEntryTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"入职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getResignationTime())){
|
||||
sysUser.setResignationTime(null);
|
||||
}else{
|
||||
sysUser.setResignationTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getResignationTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"离职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
|
||||
// 设置飞书id, IAM村的id就是飞书id
|
||||
sysUser.setFeishuId(userAcceptDto.getEmployeeNo());
|
||||
@@ -375,7 +435,7 @@ public class SyncIamService {
|
||||
|
||||
// 存储到组织机构表中
|
||||
this.sysDepartService.save(sysDepart);
|
||||
|
||||
iamOrgCreateResponse.setUid(sysDepart.getId());
|
||||
return iamOrgCreateResponse;
|
||||
}
|
||||
|
||||
|
||||
+9
-33
@@ -1,51 +1,26 @@
|
||||
package com.jero.modules.docking.iam.chery.service;
|
||||
package com.jero.modules.docking.utils;
|
||||
|
||||
import com.banboocloud.Codec.BamboocloudFacade;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public abstract class BamboocloudUtils {
|
||||
private static Properties properties = new Properties();
|
||||
private static InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
|
||||
|
||||
static {
|
||||
try {
|
||||
properties.load(in);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static String getProperty(String property) {
|
||||
return properties.getProperty(property);
|
||||
}
|
||||
|
||||
public static void checkUsernamePassword(String username, String password) {
|
||||
System.out.println("username --->" + username + " password --- >" + password + " ----ok");
|
||||
}
|
||||
public class BamboocloudCheryUtils {
|
||||
|
||||
public static String getPlaintext(String ciphertext, String key, String type) {
|
||||
return BamboocloudFacade.decrypt(ciphertext, key, type);
|
||||
}
|
||||
|
||||
public static Boolean verify(Map<String, Object> reqmap, String type) {
|
||||
Map<String, Object> verifymap = new TreeMap<String, Object>();
|
||||
StringBuffer sb = new StringBuffer();
|
||||
Iterator<String> it = reqmap.keySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
String key = (String) it.next();
|
||||
Map<String, Object> verifymap = new TreeMap<>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String key : reqmap.keySet()) {
|
||||
verifymap.put(key, reqmap.get(key));
|
||||
}
|
||||
Iterator<String> ittree = verifymap.keySet().iterator();
|
||||
while (ittree.hasNext()) {
|
||||
String key = (String) ittree.next();
|
||||
for (String key : verifymap.keySet()) {
|
||||
if (!"signature".equals(key)) {
|
||||
sb.append(key).append("=").append(verifymap.get(key)).append("&");
|
||||
}
|
||||
@@ -58,7 +33,7 @@ public abstract class BamboocloudUtils {
|
||||
public static String getRequestBody(HttpServletRequest request) {
|
||||
BufferedReader br = null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String str = "";
|
||||
String str;
|
||||
try {
|
||||
br = request.getReader();
|
||||
while ((str = br.readLine()) != null) {
|
||||
@@ -67,12 +42,13 @@ public abstract class BamboocloudUtils {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
if (br != null)
|
||||
if (br != null) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException eo) {
|
||||
eo.printStackTrace();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (br != null) {
|
||||
try {
|
||||
Reference in New Issue
Block a user