|
@@ -21,6 +21,9 @@ import com.dragoninfo.dcuc.auth.token.enums.TokenActionEnum;
|
|
|
import com.dragoninfo.dcuc.auth.token.vo.*;
|
|
|
import com.dragonsoft.auditlog.collection.qmtj.enums.TokenTypeEnum;
|
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
|
+import com.dragonsoft.smtools.loader.SMFactory;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -57,6 +60,13 @@ public class AuthTokenBusinessImpl implements IAuthTokenBusiness {
|
|
|
|
|
|
private ICacheBusiness cacheBusiness;
|
|
|
|
|
|
+ private SMFactory smFactory;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setSmFactory(SMFactory smFactory) {
|
|
|
+ this.smFactory = smFactory;
|
|
|
+ }
|
|
|
+
|
|
|
@Autowired
|
|
|
public void setCacheBusiness(ICacheBusiness cacheBusiness) {
|
|
|
this.cacheBusiness = cacheBusiness;
|
|
@@ -154,30 +164,60 @@ public class AuthTokenBusinessImpl implements IAuthTokenBusiness {
|
|
|
return builder.build();
|
|
|
}
|
|
|
|
|
|
+ @SneakyThrows
|
|
|
@Override
|
|
|
- public ZeroTustMessageRespVO tokenReceive(TokenReceiveVO receiveVO) {
|
|
|
- // 暂时发送令牌接收日志即可
|
|
|
- String type = receiveVO.getType();
|
|
|
- UserTokenInfoRespVO userTokenInfo;
|
|
|
+ public ZeroTustMessageRespVO tokenReceive(TokenReceiveVO receiveVo) {
|
|
|
+ String action = receiveVo.getAction();
|
|
|
+ String type = receiveVo.getType();
|
|
|
+ String token = receiveVo.getToken();
|
|
|
+ String generalNoticeSign = generalNoticeSign(receiveVo);
|
|
|
+ String requestSign = receiveVo.getSign();
|
|
|
+ if (!generalNoticeSign.equalsIgnoreCase(requestSign)) {
|
|
|
+ log.info("request Sign:{}, generalSign:{}", requestSign, generalNoticeSign);
|
|
|
+ return ZeroTustMessageRespVO.messageEnumMessage(ZeroTrustBusinessRespEnum.OPERATE_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ String pid;
|
|
|
+ ObjectMapper objectMapper = new ObjectMapper();
|
|
|
if (TokenTypeEnum.USER.getValue().equals(type)) {
|
|
|
- userTokenInfo = getUserTokenInfo(receiveVO.getToken());
|
|
|
+ UserTokenInfoRespVO tokenInfo = objectMapper.readValue(token, UserTokenInfoRespVO.class);
|
|
|
+ pid = tokenInfo.getPid();
|
|
|
+ cacheBusiness.userTokenActionHandle(tokenInfo, action);
|
|
|
} else {
|
|
|
- TokenDetailRespVo appTokenInfo = getByAppTokenId(receiveVO.getToken(), false, false);
|
|
|
- userTokenInfo = appTokenInfo.getUserToken();
|
|
|
- }
|
|
|
- if (null == userTokenInfo) {
|
|
|
- return ZeroTustMessageRespVO.messageEnumMessage(ZeroTrustBusinessRespEnum.TOKEN_FAIL);
|
|
|
+ AppTokenInfoRespVO tokenInfo = objectMapper.readValue(token, AppTokenInfoRespVO.class);
|
|
|
+ pid = tokenInfo.getUserToken().getPid();
|
|
|
+ cacheBusiness.appTokenActionHandle(tokenInfo, action);
|
|
|
}
|
|
|
TokenOperationDto dto = TokenOperationDto.builder()
|
|
|
- .action(receiveVO.getAction())
|
|
|
+ .action(receiveVo.getAction())
|
|
|
.operateTime(new Date())
|
|
|
- .pid(userTokenInfo.getPid())
|
|
|
- .tokenType(receiveVO.getType())
|
|
|
+ .pid(pid)
|
|
|
+ .tokenType(receiveVo.getType())
|
|
|
.build();
|
|
|
qmAuditPushService.pushTokenReceiveLog(dto);
|
|
|
return ZeroTustMessageRespVO.messageEnumMessage(ZeroTrustBusinessRespEnum.SUCCESS);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成令牌通知签名
|
|
|
+ *
|
|
|
+ * @param tokenReceiveReqVo 应用通知信息
|
|
|
+ * @return 签名
|
|
|
+ */
|
|
|
+ public String generalNoticeSign(TokenReceiveVO tokenReceiveReqVo) {
|
|
|
+ String action = tokenReceiveReqVo.getAction();
|
|
|
+ String type = tokenReceiveReqVo.getType();
|
|
|
+ String token = tokenReceiveReqVo.getToken();
|
|
|
+ String nonce = tokenReceiveReqVo.getNonce();
|
|
|
+
|
|
|
+ String origin = "action=" + action + "&type=" + type + "&token=" + token + "&nonce=" + nonce;
|
|
|
+ log.info("noticeOrigin :{}", origin);
|
|
|
+ return smFactory.getSM3().summary(origin).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
private AuthUserVo getAuthUserVo(String pid) {
|
|
|
// pid为人员身份证号
|
|
|
// 查询权限中心用户信息, 填充id字段
|