|
@@ -3,6 +3,7 @@ package com.dragoninfo.dcuc.auth.auth.business.impl.zerotrust;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.dragoninfo.dcuc.auth.api.enums.securitypolicy.AuthTypeEnum;
|
|
import com.dragoninfo.dcuc.auth.api.vo.zerotrust.AppAuthReqVO;
|
|
import com.dragoninfo.dcuc.auth.api.vo.zerotrust.AppAuthReqVO;
|
|
import com.dragoninfo.dcuc.auth.api.enums.zerotrust.ZeroTrustBusinessRespEnum;
|
|
import com.dragoninfo.dcuc.auth.api.enums.zerotrust.ZeroTrustBusinessRespEnum;
|
|
import com.dragoninfo.dcuc.auth.api.vo.zerotrust.ZeroTrustDataRespVO;
|
|
import com.dragoninfo.dcuc.auth.api.vo.zerotrust.ZeroTrustDataRespVO;
|
|
@@ -16,11 +17,13 @@ import com.dragoninfo.dcuc.auth.auth.securitypolicy.SecurityPolicyAuthentication
|
|
import com.dragoninfo.dcuc.auth.auth.service.IStaffAssignAuthInfoService;
|
|
import com.dragoninfo.dcuc.auth.auth.service.IStaffAssignAuthInfoService;
|
|
import com.dragoninfo.dcuc.auth.auth.vo.ApiAppAuthVo;
|
|
import com.dragoninfo.dcuc.auth.auth.vo.ApiAppAuthVo;
|
|
import com.dragoninfo.dcuc.auth.business.IAuthTokenBusiness;
|
|
import com.dragoninfo.dcuc.auth.business.IAuthTokenBusiness;
|
|
|
|
+import com.dragoninfo.dcuc.auth.business.IRiskOrderBusiness;
|
|
import com.dragoninfo.dcuc.auth.sub.entity.AuthUserInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.entity.AuthUserInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.service.IAuthUserInfoService;
|
|
import com.dragoninfo.dcuc.auth.sub.service.IAuthUserInfoService;
|
|
import com.dragoninfo.dcuc.auth.sub.vo.AuthUserVo;
|
|
import com.dragoninfo.dcuc.auth.sub.vo.AuthUserVo;
|
|
import com.dragoninfo.dcuc.auth.token.vo.UserTokenInfoRespVO;
|
|
import com.dragoninfo.dcuc.auth.token.vo.UserTokenInfoRespVO;
|
|
import com.dragonsoft.duceap.commons.util.ip.IpUtils;
|
|
import com.dragonsoft.duceap.commons.util.ip.IpUtils;
|
|
|
|
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
import com.dragonsoft.duceap.web.utils.RequestUtils;
|
|
import com.dragonsoft.duceap.web.utils.RequestUtils;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -29,6 +32,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -49,6 +53,13 @@ public class ZeroTrustAppAuthBusiness implements IZeroTrustAppAuthBusiness {
|
|
|
|
|
|
private BusiEventPublisher busiEventPublisher;
|
|
private BusiEventPublisher busiEventPublisher;
|
|
|
|
|
|
|
|
+ private IRiskOrderBusiness riskOrderBusiness;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ public void setRiskOrderBusiness(IRiskOrderBusiness riskOrderBusiness) {
|
|
|
|
+ this.riskOrderBusiness = riskOrderBusiness;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
public void setBusiEventPublisher(BusiEventPublisher busiEventPublisher) {
|
|
public void setBusiEventPublisher(BusiEventPublisher busiEventPublisher) {
|
|
this.busiEventPublisher = busiEventPublisher;
|
|
this.busiEventPublisher = busiEventPublisher;
|
|
@@ -83,7 +94,7 @@ public class ZeroTrustAppAuthBusiness implements IZeroTrustAppAuthBusiness {
|
|
// 构建sysLogVo
|
|
// 构建sysLogVo
|
|
SecurityPolicyAuthenticationLogReqVO logReqVO = getSysLogVo(appAuthReqVO);
|
|
SecurityPolicyAuthenticationLogReqVO logReqVO = getSysLogVo(appAuthReqVO);
|
|
|
|
|
|
- // todo 校验签名
|
|
|
|
|
|
+ // todo 校验令牌签名
|
|
AuthUserInfo userInfo = authUserInfoService.findByIdcard(pId);
|
|
AuthUserInfo userInfo = authUserInfoService.findByIdcard(pId);
|
|
if (userInfo == null) {
|
|
if (userInfo == null) {
|
|
log.error("查询不到用户信息");
|
|
log.error("查询不到用户信息");
|
|
@@ -104,6 +115,10 @@ public class ZeroTrustAppAuthBusiness implements IZeroTrustAppAuthBusiness {
|
|
.terminalIp(IpUtils.getIp())
|
|
.terminalIp(IpUtils.getIp())
|
|
.build();
|
|
.build();
|
|
List<AppDataSensitiveLevelDTO> appList = staffAssignAuthInfoService.apiAppAuth(authVo);
|
|
List<AppDataSensitiveLevelDTO> appList = staffAssignAuthInfoService.apiAppAuth(authVo);
|
|
|
|
+
|
|
|
|
+ // 过滤冻结的权限
|
|
|
|
+ appList = filterFrozenAuth(appList, userVo);
|
|
|
|
+
|
|
String appAuth = appList.stream()
|
|
String appAuth = appList.stream()
|
|
.map(AppDataSensitiveLevelDTO::getCode)
|
|
.map(AppDataSensitiveLevelDTO::getCode)
|
|
.filter(StringUtils::isNotBlank)
|
|
.filter(StringUtils::isNotBlank)
|
|
@@ -116,6 +131,25 @@ public class ZeroTrustAppAuthBusiness implements IZeroTrustAppAuthBusiness {
|
|
return ZeroTrustDataRespVO.success(appAuth);
|
|
return ZeroTrustDataRespVO.success(appAuth);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 过滤安全策略冻结的应用级权限
|
|
|
|
+ * @param appList
|
|
|
|
+ * @param userVo
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private List<AppDataSensitiveLevelDTO> filterFrozenAuth(List<AppDataSensitiveLevelDTO> appList, AuthUserVo userVo) {
|
|
|
|
+ List<String> currentAppCodeList = appList.stream().map(AppDataSensitiveLevelDTO::getCode).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ String idcard = userVo.getIdcard();
|
|
|
|
+ log.info("过滤安全策略冻结前的用户:{}应用级权限信息:{}", idcard, JsonUtils.toJSONString(currentAppCodeList));
|
|
|
|
+ Set<String> noFrozenAuthAppCodeList = riskOrderBusiness.removeFrozenAuth(idcard, currentAppCodeList, AuthTypeEnum.APP);
|
|
|
|
+ log.info("过滤安全策略冻结后的用户:{}应用级权限信息:{}", idcard, JsonUtils.toJSONString(noFrozenAuthAppCodeList));
|
|
|
|
+
|
|
|
|
+ appList = appList.stream().filter(item -> noFrozenAuthAppCodeList.contains(item.getCode()))
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ return appList;
|
|
|
|
+ }
|
|
|
|
+
|
|
private SecurityPolicyAuthenticationLogReqVO getSysLogVo(AppAuthReqVO appAuthReqVO) {
|
|
private SecurityPolicyAuthenticationLogReqVO getSysLogVo(AppAuthReqVO appAuthReqVO) {
|
|
SecurityPolicyAuthenticationLogReqVO logReqVO = SecurityPolicyAuthenticationLogReqVO
|
|
SecurityPolicyAuthenticationLogReqVO logReqVO = SecurityPolicyAuthenticationLogReqVO
|
|
.setLog(SecurityPolicyAuthTypeEnum.APP, appAuthReqVO.getUserTokenId());
|
|
.setLog(SecurityPolicyAuthTypeEnum.APP, appAuthReqVO.getUserTokenId());
|