|
|
|
|
@@ -1,5 +1,9 @@
|
|
|
|
|
package com.sdm.project.controller;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
|
|
import com.auth0.jwt.JWT;
|
|
|
|
|
import com.auth0.jwt.algorithms.Algorithm;
|
|
|
|
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
|
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
|
|
import com.sdm.common.common.SdmResponse;
|
|
|
|
|
@@ -7,10 +11,13 @@ import com.sdm.common.entity.bo.JwtToken;
|
|
|
|
|
import com.sdm.common.entity.enums.NodeTypeEnum;
|
|
|
|
|
import com.sdm.common.entity.req.data.GetSimulationTaskFileReq;
|
|
|
|
|
import com.sdm.common.entity.req.data.UploadFilesReq;
|
|
|
|
|
|
|
|
|
|
import com.sdm.common.entity.resp.PageDataResp;
|
|
|
|
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
|
|
|
|
import com.sdm.common.feign.impl.data.DataAnalysisFeignClientImpl;
|
|
|
|
|
|
|
|
|
|
import com.sdm.common.feign.inter.data.IDataFeignClient;
|
|
|
|
|
import com.sdm.common.utils.HttpUtil;
|
|
|
|
|
import com.sdm.common.utils.SystemOperate;
|
|
|
|
|
import com.sdm.project.common.KeyResultTypeEnum;
|
|
|
|
|
import com.sdm.project.model.entity.SimulationRunKeyResult;
|
|
|
|
|
@@ -21,23 +28,24 @@ import com.sdm.project.model.resp.YA.BosimSaveNodeInfoRsp;
|
|
|
|
|
import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp;
|
|
|
|
|
import com.sdm.project.model.resp.YA.KeyResultNodeInfo;
|
|
|
|
|
import com.sdm.project.service.INodeService;
|
|
|
|
|
import com.sdm.project.service.ISimulationRunService;
|
|
|
|
|
import com.sdm.project.service.ITaskService;
|
|
|
|
|
import com.sdm.project.service.ISimulationRunService;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.media.Content;
|
|
|
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.http.MediaType;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.security.PrivateKey;
|
|
|
|
|
import java.security.interfaces.RSAPrivateKey;
|
|
|
|
|
import java.security.interfaces.RSAPublicKey;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/dataManager/tree/node")
|
|
|
|
|
@@ -58,13 +66,14 @@ public class YAModelController {
|
|
|
|
|
@Resource
|
|
|
|
|
ISimulationRunService runService;
|
|
|
|
|
|
|
|
|
|
private final String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo4hmt4m5CpMIE5DL8G60" +
|
|
|
|
|
"cg63X6nEiNPt1yWB+kXDXQA0RaiqXhT4O78HT9BldrQVpyj6g4Z2mwPMfLBP6LjR" +
|
|
|
|
|
"8QyLlwfMBJ2uUV5B4PlEWiF9pUK9tU0lPlByS+p0oIxX8XlvzbbGbkyWQaOQ6Sfl" +
|
|
|
|
|
"FxB7eHu3r/hDOYtsMDcNe4hsuz1BnrAuRY6Yj+Hq2d4zPDetDgXeXs066z3qO6bL" +
|
|
|
|
|
"N9r/2UkHZc4tdkpMJgxucwTuvAvmgRgdDfnd6sAVDHYPaIVuJHqWnEnEcQzq6zWb" +
|
|
|
|
|
"1YPItc2FgDbXWpi8noz7wSjXDfBiTHU11nU5vv//xLVF83h5mbhk8dWHKq7bLUGp" +
|
|
|
|
|
"9QIDAQAB";
|
|
|
|
|
@Value("${YA.frontend.frontendPrivateKey}")
|
|
|
|
|
private String frontendPrivateKey;
|
|
|
|
|
|
|
|
|
|
@Value("${YA.frontend.publicKeyUrl}")
|
|
|
|
|
private String frontendPublicKeyUrl;
|
|
|
|
|
|
|
|
|
|
@Value("${YA.backend.backendPublicKey}")
|
|
|
|
|
private String backendPublicKey;
|
|
|
|
|
/**
|
|
|
|
|
* 保存仿真模型数据
|
|
|
|
|
*
|
|
|
|
|
@@ -84,8 +93,14 @@ public class YAModelController {
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
public BosimSaveNodeInfoRsp saveModelNodeInfo(SaveModelNodeInfoReq req)
|
|
|
|
|
public BosimSaveNodeInfoRsp saveModelNodeInfo(@RequestHeader("Authorization") String authorization,SaveModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
if(!verifyBackEndJwt(authorization)) {
|
|
|
|
|
BosimSaveNodeInfoRsp rsp = new BosimSaveNodeInfoRsp();
|
|
|
|
|
rsp.setCode("-200");
|
|
|
|
|
rsp.setMessage("鉴权失败");
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
UploadFilesReq fileReq = new UploadFilesReq();
|
|
|
|
|
fileReq.setFileName(req.getName());
|
|
|
|
|
fileReq.setProjectId(req.getProject());
|
|
|
|
|
@@ -130,8 +145,14 @@ public class YAModelController {
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
public BosimSaveNodeInfoRsp saveReportNodeInfo(SaveReportNodeInfoReq req)
|
|
|
|
|
public BosimSaveNodeInfoRsp saveReportNodeInfo(@RequestHeader("Authorization") String authorization,SaveReportNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
if(!verifyBackEndJwt(authorization)) {
|
|
|
|
|
BosimSaveNodeInfoRsp rsp = new BosimSaveNodeInfoRsp();
|
|
|
|
|
rsp.setCode("-200");
|
|
|
|
|
rsp.setMessage("鉴权失败");
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
UploadFilesReq fileReq = new UploadFilesReq();
|
|
|
|
|
fileReq.setFileName(req.getName());
|
|
|
|
|
fileReq.setProjectId(req.getProject());
|
|
|
|
|
@@ -175,8 +196,14 @@ public class YAModelController {
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
public BosimSaveNodeInfoRsp saveKeyResultNodeInfo(SaveKeyResultNodeInfoReq req)
|
|
|
|
|
public BosimSaveNodeInfoRsp saveKeyResultNodeInfo(@RequestHeader("Authorization") String authorization,SaveKeyResultNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
if(!verifyBackEndJwt(authorization)) {
|
|
|
|
|
BosimSaveNodeInfoRsp rsp = new BosimSaveNodeInfoRsp();
|
|
|
|
|
rsp.setCode("-200");
|
|
|
|
|
rsp.setMessage("鉴权失败");
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
KeyResultReq addTaskRunReq = new KeyResultReq();
|
|
|
|
|
addTaskRunReq.setFile(req.getFile());
|
|
|
|
|
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(req.getScenario(), NodeTypeEnum.TASK.getValue(), 0L);
|
|
|
|
|
@@ -203,8 +230,19 @@ public class YAModelController {
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取仿真关键结果
|
|
|
|
|
* @param req
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(value = "/listKeyResultNodeInfo")
|
|
|
|
|
public BosimKeyResultInfoRsp listKeyResultNodeInfo(@RequestBody SaveKeyResultNodeInfoReq req) {
|
|
|
|
|
public BosimKeyResultInfoRsp listKeyResultNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody SaveKeyResultNodeInfoReq req) {
|
|
|
|
|
if(!verifyBackEndJwt(authorization)) {
|
|
|
|
|
BosimKeyResultInfoRsp rsp = new BosimKeyResultInfoRsp();
|
|
|
|
|
rsp.setCode("-200");
|
|
|
|
|
rsp.setMessage("鉴权失败");
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
KeyResultReq keyResultReq = new KeyResultReq();
|
|
|
|
|
keyResultReq.setRunId(req.getScenario());
|
|
|
|
|
keyResultReq.setKeyResultType(req.getCode());
|
|
|
|
|
@@ -243,49 +281,44 @@ public class YAModelController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("")
|
|
|
|
|
public BosimSaveNodeInfoRsp deleteModelNodeInfo(DeleteModelNodeInfoReq req)
|
|
|
|
|
public BosimSaveNodeInfoRsp deleteModelNodeInfo(@RequestHeader("Authorization") String authorization,DeleteModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("GetModelNodeInfoByIdAndType")
|
|
|
|
|
public void getModelNodeInfo(@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
public void getModelNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("DeleteModelNodeByObjectIds")
|
|
|
|
|
public void DeleteModelNodeInfo(@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
public void DeleteModelNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("GetReportNodeInfoByIdAndType")
|
|
|
|
|
public void getReportNodeInfo(@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
public void getReportNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("DeleteReportNodeByObjectIds")
|
|
|
|
|
public void DeleteReportNodeInfo(@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
public void DeleteReportNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("GetKeyResultNodeInfoByIdAndType")
|
|
|
|
|
public void getKeyResultNodeInfo(@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
public void getKeyResultNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("DeleteKeyResultNodeByObjectIds")
|
|
|
|
|
public void DeleteKeyResultNodeInfo(@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
public void DeleteKeyResultNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetModelNodeInfoReq req)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@@ -297,8 +330,10 @@ public class YAModelController {
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("GetTaskModels")
|
|
|
|
|
public SdmResponse getTaskModels(@RequestBody @Validated GetTaskSimulatinFileReq outsideReq)
|
|
|
|
|
public SdmResponse getTaskModels(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetTaskSimulatinFileReq outsideReq)
|
|
|
|
|
{
|
|
|
|
|
if(!verifyBackEndJwt(authorization))
|
|
|
|
|
return SdmResponse.failed("鉴权失败");
|
|
|
|
|
GetSimulationTaskFileReq req = new GetSimulationTaskFileReq();
|
|
|
|
|
req.setUuid(outsideReq.getTaskId());
|
|
|
|
|
req.setFileBizType(1);
|
|
|
|
|
@@ -313,8 +348,10 @@ public class YAModelController {
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("GetTaskReports")
|
|
|
|
|
public SdmResponse getTaskReports(@RequestBody @Validated GetTaskSimulatinFileReq outsideReq)
|
|
|
|
|
public SdmResponse getTaskReports(@RequestHeader("Authorization") String authorization,@RequestBody @Validated GetTaskSimulatinFileReq outsideReq)
|
|
|
|
|
{
|
|
|
|
|
if(!verifyBackEndJwt(authorization))
|
|
|
|
|
return SdmResponse.failed("鉴权失败");
|
|
|
|
|
GetSimulationTaskFileReq req = new GetSimulationTaskFileReq();
|
|
|
|
|
req.setUuid(outsideReq.getTaskId());
|
|
|
|
|
req.setFileBizType(2);
|
|
|
|
|
@@ -331,51 +368,143 @@ public class YAModelController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("syncCidProject")
|
|
|
|
|
public BosimSaveProjectTaskRsp syncCidProject(@RequestBody @Validated SyncCidProjectReq req)
|
|
|
|
|
public BosimSaveProjectTaskRsp syncCidProject(@RequestHeader("Authorization") String authorization,@RequestBody @Validated SyncCidProjectReq req)
|
|
|
|
|
{
|
|
|
|
|
BosimSaveProjectTaskRsp rsp = new BosimSaveProjectTaskRsp();
|
|
|
|
|
if(!verifyBackEndJwt(authorization)) {
|
|
|
|
|
rsp.setCode("-200");
|
|
|
|
|
rsp.setMessage("鉴权失败");
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
return nodeService.syncProject(req);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@PostMapping("syncCidTask")
|
|
|
|
|
public BosimSaveProjectTaskRsp syncCidTask(@RequestBody @Validated SyncCidTaskReq req)
|
|
|
|
|
public BosimSaveProjectTaskRsp syncCidTask(@RequestHeader("Authorization") String authorization,@RequestBody @Validated SyncCidTaskReq req)
|
|
|
|
|
{
|
|
|
|
|
BosimSaveProjectTaskRsp rsp = new BosimSaveProjectTaskRsp();
|
|
|
|
|
if(!verifyBackEndJwt(authorization)) {
|
|
|
|
|
rsp.setCode("-200");
|
|
|
|
|
rsp.setMessage("鉴权失败");
|
|
|
|
|
return rsp;
|
|
|
|
|
}
|
|
|
|
|
return taskService.syncCidTask(req);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 与CID集成前端token验证
|
|
|
|
|
* @param token
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("verityCidWebToken")
|
|
|
|
|
public SdmResponse verityCidWebToken(@RequestParam("token") String token)
|
|
|
|
|
{
|
|
|
|
|
//SystemOperate.decodeJwt(token);
|
|
|
|
|
SdmResponse response = SdmResponse.success();
|
|
|
|
|
JwtToken jwtToken = new JwtToken("keyId","","qinwei","spdm");
|
|
|
|
|
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjz2pItCtM2Itf3knLhA1ZWzTVtKKY692Eptk3ZUy4qjlv+2e6u78/cBYZsVa/1nOyHPtb2j9xZAsHYGKZGoh64UWSewUhRdUO15xBRr5DyGEdTWHjwc1GHf7c99rKCjKDO2Xdp7cpqYABOAxgkSA2vP5zqhSCq0FCqwleEPLG1aAa/kh/oUzCZLUoSjZIdqQOgHJTZojqNeQCOC6U8Q+kUcHdKbptewu1A6XK8DHV0WqiJJEG3kyaoAZ1kGtr6ETtGy++aRvJT9gZN4M4bIgucKtAu2dcqQHj9jZ1i2xwhY3nmLjqaz3y313/IEYpMTG8pnPb8eP5usHDaDmH8RqJAgMBAAECggEAAzz05WYGWxkGvEjpHYhJOUR3yWeuNSaodNhVf+ZVO2tGAmQuWz8d2zOshCqAw/8Jv3IaN+kbCvNG0okBufQP0ZoFZY1f/xXhzc7OTG4JEc7yuIEQl897btDl+lk97nOAJx7z9ws7MCwlFyEUAY6s29glkYTBrgmTmy1FXKIqImsLfVV3LgfL2Mkixn0YSSsbUh2b+dki1zxjct3hTGZVh29bKOpbflOaG0LqEO0UwSX92Y/ir+fKmC8zEFbi5HZANYODivm8DiwF7khpraayf78kG3liccOTMMLVxIHwNiS9wcLG8WPuVEphlXMT4Ev4lq5VFM3mVxtd9g21ESbuvwKBgQDmsgE8u66qKVBsndp2K9FV9VWYDA4fYfRswDAWnZDCzIdanT0NFPp8s3nZCVU4FfX4m958yOrJ/MVp6d58z6fgkYQh2qL2Wy6zRPaIxCc6JG3FheFSxfWyULU/mBBK02ntUZCXEs8XKjAfDvmxaVVeonv0nCSgVwxJ4ypB5BZ+owKBgQC1x0GDnWtMbNGUMx6tYtFGWQIgop4hVQe6ZNgkKaQX7gtMa5egEda6ga6wCTV3+ZvQ9tBa1DxUFb5N/TrtQdFm39gOSXyhWSrntUKqaSFo03GvXXvvze2D3+uXpk7S8yzWuuD3OYyYj9S3nFVZffymabfukuY7oY3AN0E0PALw4wKBgQDQiyGrMU6X7HkTdy9BnCLEvd7+cAdkPzyiAqp2B0IRlqrVM0c5SDmX+PaxSEqNROzyLJVX4Ji+t44OTKgf0+hCjckQgYDHi24QCMuEny2G1d+Vq40hMmsFIwh10JUJz0v2iMFYkFw86JpPuU3nHv1ZazD60xwZBhfJw10z62iaWQKBgH+EVgsUJS8pryO9cKnFBnXI/tsR+Mf9NDynfZBwvbIjxT1IxMb/fJi9XGQVMbMGIS5H1gXBmMiLsEJZgDrrzw/Ru2jaWFl/ib+dwjR1J4C3w6p3c/fXh+TY8hYiDm2hNTU1R5dmgaCMVXawbpcm8FN1Ghh8aJIwVJYgrNcNuiptAoGAO14DHGqUXZZ//erIYWVfL0CAMXqy38dqNmfbzSAXYyLDl6cn49CCHF0GXOfCOesQN9ToQbqpLrntFgcFe0hil5dIWYafk9fHjjR8N8g74ijErQmCEAQy22b06V0q7rLzEsU/HDVL+RZg2aY4hDN+ODHRdpdFkOxsCYV73gevVeo=";
|
|
|
|
|
String pubKeyToken = SystemOperate.generateToken(jwtToken,privateKey,false);
|
|
|
|
|
String pubKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo89qSLQrTNiLX95Jy4QNWVs01bSimOvdhKbZN2VMuKo5b/tnuru/P3AWGbFWv9Zzshz7W9o/cWQLB2BimRqIeuFFknsFIUXVDtecQUa+Q8hhHU1h48HNRh3+3Pfaygoygztl3ae3KamAATgMYJEgNrz+c6oUgqtBQqsJXhDyxtWgGv5If6FMwmS1KEo2SHakDoByU2aI6jXkAjgulPEPpFHB3Sm6bXsLtQOlyvAx1dFqoiSRBt5MmqAGdZBra+hE7RsvvmkbyU/YGTeDOGyILnCrQLtnXKkB4/Y2dYtscIWN55i46ms98t9d/yBGKTExvKZz2/Hj+brBw2g5h/EaiQIDAQAB";
|
|
|
|
|
if(!SystemOperate.verify(pubKey,token))
|
|
|
|
|
DecodedJWT decodedJWT = SystemOperate.decodeJwt(token);
|
|
|
|
|
String userName = decodedJWT.getIssuer();
|
|
|
|
|
String clientName = decodedJWT.getKeyId();
|
|
|
|
|
List<String> pubKeys = decodedJWT.getAudience();
|
|
|
|
|
String pubKey = "";
|
|
|
|
|
if(pubKeys != null && !pubKeys.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
pubKey = pubKeys.get(0);
|
|
|
|
|
}
|
|
|
|
|
//String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjz2pItCtM2Itf3knLhA1ZWzTVtKKY692Eptk3ZUy4qjlv+2e6u78/cBYZsVa/1nOyHPtb2j9xZAsHYGKZGoh64UWSewUhRdUO15xBRr5DyGEdTWHjwc1GHf7c99rKCjKDO2Xdp7cpqYABOAxgkSA2vP5zqhSCq0FCqwleEPLG1aAa/kh/oUzCZLUoSjZIdqQOgHJTZojqNeQCOC6U8Q+kUcHdKbptewu1A6XK8DHV0WqiJJEG3kyaoAZ1kGtr6ETtGy++aRvJT9gZN4M4bIgucKtAu2dcqQHj9jZ1i2xwhY3nmLjqaz3y313/IEYpMTG8pnPb8eP5usHDaDmH8RqJAgMBAAECggEAAzz05WYGWxkGvEjpHYhJOUR3yWeuNSaodNhVf+ZVO2tGAmQuWz8d2zOshCqAw/8Jv3IaN+kbCvNG0okBufQP0ZoFZY1f/xXhzc7OTG4JEc7yuIEQl897btDl+lk97nOAJx7z9ws7MCwlFyEUAY6s29glkYTBrgmTmy1FXKIqImsLfVV3LgfL2Mkixn0YSSsbUh2b+dki1zxjct3hTGZVh29bKOpbflOaG0LqEO0UwSX92Y/ir+fKmC8zEFbi5HZANYODivm8DiwF7khpraayf78kG3liccOTMMLVxIHwNiS9wcLG8WPuVEphlXMT4Ev4lq5VFM3mVxtd9g21ESbuvwKBgQDmsgE8u66qKVBsndp2K9FV9VWYDA4fYfRswDAWnZDCzIdanT0NFPp8s3nZCVU4FfX4m958yOrJ/MVp6d58z6fgkYQh2qL2Wy6zRPaIxCc6JG3FheFSxfWyULU/mBBK02ntUZCXEs8XKjAfDvmxaVVeonv0nCSgVwxJ4ypB5BZ+owKBgQC1x0GDnWtMbNGUMx6tYtFGWQIgop4hVQe6ZNgkKaQX7gtMa5egEda6ga6wCTV3+ZvQ9tBa1DxUFb5N/TrtQdFm39gOSXyhWSrntUKqaSFo03GvXXvvze2D3+uXpk7S8yzWuuD3OYyYj9S3nFVZffymabfukuY7oY3AN0E0PALw4wKBgQDQiyGrMU6X7HkTdy9BnCLEvd7+cAdkPzyiAqp2B0IRlqrVM0c5SDmX+PaxSEqNROzyLJVX4Ji+t44OTKgf0+hCjckQgYDHi24QCMuEny2G1d+Vq40hMmsFIwh10JUJz0v2iMFYkFw86JpPuU3nHv1ZazD60xwZBhfJw10z62iaWQKBgH+EVgsUJS8pryO9cKnFBnXI/tsR+Mf9NDynfZBwvbIjxT1IxMb/fJi9XGQVMbMGIS5H1gXBmMiLsEJZgDrrzw/Ru2jaWFl/ib+dwjR1J4C3w6p3c/fXh+TY8hYiDm2hNTU1R5dmgaCMVXawbpcm8FN1Ghh8aJIwVJYgrNcNuiptAoGAO14DHGqUXZZ//erIYWVfL0CAMXqy38dqNmfbzSAXYyLDl6cn49CCHF0GXOfCOesQN9ToQbqpLrntFgcFe0hil5dIWYafk9fHjjR8N8g74ijErQmCEAQy22b06V0q7rLzEsU/HDVL+RZg2aY4hDN+ODHRdpdFkOxsCYV73gevVeo=";
|
|
|
|
|
//String pubKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo89qSLQrTNiLX95Jy4QNWVs01bSimOvdhKbZN2VMuKo5b/tnuru/P3AWGbFWv9Zzshz7W9o/cWQLB2BimRqIeuFFknsFIUXVDtecQUa+Q8hhHU1h48HNRh3+3Pfaygoygztl3ae3KamAATgMYJEgNrz+c6oUgqtBQqsJXhDyxtWgGv5If6FMwmS1KEo2SHakDoByU2aI6jXkAjgulPEPpFHB3Sm6bXsLtQOlyvAx1dFqoiSRBt5MmqAGdZBra+hE7RsvvmkbyU/YGTeDOGyILnCrQLtnXKkB4/Y2dYtscIWN55i46ms98t9d/yBGKTExvKZz2/Hj+brBw2g5h/EaiQIDAQAB";
|
|
|
|
|
String verityPublicKey = getCidTokenPubKey(userName,clientName,frontendPrivateKey,pubKey);
|
|
|
|
|
if(!SystemOperate.verify(verityPublicKey,token))
|
|
|
|
|
{
|
|
|
|
|
response = SdmResponse.failed("登录验证失败");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DecodedJWT decodedJWT = SystemOperate.decodeJwt(token);
|
|
|
|
|
String issure = decodedJWT.getIssuer();
|
|
|
|
|
if(issure != null)
|
|
|
|
|
if(userName != null)
|
|
|
|
|
{
|
|
|
|
|
response.setData(issure);
|
|
|
|
|
response.setData(userName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生成获取CID前端token验证公钥token
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private String getCidTokenPubKey(String userName,String clientName,String priKey,String pubKey)
|
|
|
|
|
{
|
|
|
|
|
String publicKey = "";
|
|
|
|
|
try {
|
|
|
|
|
PrivateKey privateKey = SystemOperate.getPrivateKey(priKey);
|
|
|
|
|
Algorithm algorithm = Algorithm.RSA256(null, (RSAPrivateKey) privateKey);
|
|
|
|
|
Date issuedAt = new Date();
|
|
|
|
|
Date expiresAt = new Date(issuedAt.getTime() + 120 * 3600 * 1000);
|
|
|
|
|
Map<String,String> claimMap = new HashMap<>();
|
|
|
|
|
claimMap.put("userName",userName);
|
|
|
|
|
claimMap.put("userId","");
|
|
|
|
|
String token = JWT.create()
|
|
|
|
|
.withKeyId(clientName)
|
|
|
|
|
.withIssuer(userName)
|
|
|
|
|
.withSubject("spdm")
|
|
|
|
|
.withAudience(pubKey)
|
|
|
|
|
.withExpiresAt(expiresAt)
|
|
|
|
|
.withIssuedAt(issuedAt)
|
|
|
|
|
.withJWTId(UUID.randomUUID().toString())
|
|
|
|
|
.withClaim("cidUserInfo", claimMap)
|
|
|
|
|
.sign(algorithm);
|
|
|
|
|
Map<String,String> headerMap = new HashMap<>();
|
|
|
|
|
headerMap.put("Authorization","Bearer "+token);
|
|
|
|
|
String pulbicKeyResult = HttpUtil.doGet(frontendPublicKeyUrl,headerMap,"idme");
|
|
|
|
|
if(pulbicKeyResult != null && !pulbicKeyResult.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
JSONObject resultObject = JSONObject.parseObject(pulbicKeyResult);
|
|
|
|
|
JSONArray resultArray = resultObject.getJSONArray("datas");
|
|
|
|
|
if(resultArray!=null)
|
|
|
|
|
{
|
|
|
|
|
for(int i=0;i<resultArray.size();i++)
|
|
|
|
|
{
|
|
|
|
|
JSONObject keyObj = resultArray.getJSONObject(i);
|
|
|
|
|
if(keyObj.getString("clientName").equals(clientName))
|
|
|
|
|
{
|
|
|
|
|
publicKey = keyObj.getString("clientId");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
return publicKey;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 接口调用token验证
|
|
|
|
|
* @param token
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private boolean verifyCidJwt(String token)
|
|
|
|
|
private boolean verifyBackEndJwt(String token)
|
|
|
|
|
{
|
|
|
|
|
return SystemOperate.verify(PUBLIC_KEY, token);
|
|
|
|
|
//return SystemOperate.verify(backendPublicKey, token);
|
|
|
|
|
if(token==null || token.isEmpty())
|
|
|
|
|
return false;
|
|
|
|
|
DecodedJWT decodedJWT;
|
|
|
|
|
try {
|
|
|
|
|
decodedJWT = SystemOperate.decodeJwt(token);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
Date expiresAt = decodedJWT.getExpiresAt();
|
|
|
|
|
if(expiresAt == null)
|
|
|
|
|
return false;
|
|
|
|
|
// 验证token是否过期
|
|
|
|
|
if (expiresAt.before(new Date())) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|