ソースを参照

feature: 鉴权接口改为361标准

mazq 1 年間 前
コミット
6a682a710a

+ 39 - 142
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/controller/AuthV4Controller.java

@@ -3,11 +3,10 @@ package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.controller
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
-import com.dragoninfo.dcuc.auth.api.vo.BusinessRespEnum;
-import com.dragoninfo.dcuc.auth.api.vo.DataRespVO;
-import com.dragoninfo.dcuc.auth.api.vo.MessageRespVO;
-import com.dragoninfo.dcuc.auth.api.vo.ResultRespVO;
+import com.dragoninfo.dcuc.auth.api.vo.*;
+import com.dragoninfo.dcuc.auth.api.vo.zerotrust.*;
 import com.dragoninfo.dcuc.auth.auth.api.IApiDataAuthFacade;
+import com.dragoninfo.dcuc.auth.auth.api.IZeroTrustAuthFacade;
 import com.dragoninfo.dcuc.auth.auth.dto.AppDataSensitiveLevelDTO;
 import com.dragoninfo.dcuc.auth.auth.dto.AppFunInfoDTO;
 import com.dragoninfo.dcuc.auth.auth.dto.DataItemsDto;
@@ -26,11 +25,10 @@ import com.dragoninfo.dcuc.auth.token.facade.IAuthTokenFacade;
 import com.dragoninfo.dcuc.auth.token.vo.TokenDetailRespVo;
 import com.dragoninfo.dcuc.auth.token.vo.TokenReceiveVO;
 import com.dragoninfo.dcuc.auth.token.vo.UserTokenInfoRespVO;
-import com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo.*;
-import com.dragoninfo.dcuc.common.utils.LangUtil;
 import com.dragoninfo.dcuc.common.utils.ResponseUtil;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import com.dragonsoft.duceap.commons.util.ip.IpUtils;
+import com.dragonsoft.duceap.commons.util.string.StringUtils;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -60,15 +58,6 @@ import java.util.stream.Collectors;
 @RequestMapping(value = "/api/auth-service/v4/")
 public class AuthV4Controller {
 
-    @Autowired
-    private IStaffAssignAuthInfoFacade staffAssignAuthInfoFacade;
-
-    @Autowired
-    private IServiceAuthFlowFacade serviceAuthFlowFacade;
-
-    @Autowired
-    private IRoleFacade roleFacade;
-
     @Autowired
     private IApiDataAuthFacade apiDataAuthFacade;
 
@@ -76,7 +65,7 @@ public class AuthV4Controller {
     private IAuthTokenFacade authTokenFacade;
 
     @Autowired
-    private IAuthUserInfoFacade userInfoFacade;
+    private IZeroTrustAuthFacade zeroTrustAuthFacade;
 
     /**
      * 应用级鉴权
@@ -85,51 +74,16 @@ public class AuthV4Controller {
      * @return 应用级权限
      */
     @PostMapping("appAuth")
-    public DataRespVO<String> appAuth(@RequestBody AppAuthReqVO appAuthReqVO) {
+    public ZeroTrustDataRespVO<String> appAuth(@RequestBody AppAuthReqVO appAuthReqVO) {
         String userTokenId = appAuthReqVO.getUserTokenId();
-
-        log.info("传入的用户令牌为:{}", userTokenId);
-
+        log.info("=============应用级鉴权开始, 请求参数:{}===============", userTokenId);
         if (StrUtil.isBlank(userTokenId)) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.TOKEN_FAIL);
+            log.error("鉴权参数为空");
+            return ZeroTrustDataRespVO.resultEnumMessage(ZeroTrustBusinessRespEnum.OPERATE_FAIL);
         }
-
-        UserTokenInfoRespVO userToken = authTokenFacade.getUserTokenInfo(userTokenId);
-        log.info("应用鉴权查寻到的令牌结果:{}", JSON.toJSONString(userToken));
-
-        String pId = userToken.getPid();
-        log.info("pid:{}", pId);
-
-        AuthUserDTO userInfo = userInfoFacade.findByIdcard(pId);
-        if (userInfo == null) {
-            log.info("查询不到用户信息");
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.AUTH_FAIL);
-        }
-
-        // 缓存应用令牌
-        int expiredTime = (int) ((userToken.getExpireAt().getTime() - System.currentTimeMillis()) / 1000);
-
-        authTokenFacade.cacheStandardUserToken(userInfo.getIdcard(), userToken.getUserTokenId(), expiredTime);
-
-        AuthUserVo userVo = new AuthUserVo();
-        BeanUtil.copyProperties(userInfo, userVo);
-        ApiAppAuthVo authVo = ApiAppAuthVo.builder()
-                .userInfo(userVo)
-                .userToken(userTokenId)
-                .terminalIp(IpUtils.getIp())
-                .build();
-        List<AppDataSensitiveLevelDTO> appList = staffAssignAuthInfoFacade.apiAppAuth(authVo);
-
-        StringBuilder appAuthBuilder = new StringBuilder();
-
-        for (AppDataSensitiveLevelDTO appDataSensitiveLevelDTO : appList) {
-            String code = appDataSensitiveLevelDTO.getCode();
-
-            appAuthBuilder.append(code).append(StrUtil.COMMA);
-        }
-
-        String appAuth = LangUtil.subLastSymbol(appAuthBuilder.toString(), StrUtil.COMMA);
-        return DataRespVO.success(appAuth);
+        ZeroTrustDataRespVO<String> respVo = zeroTrustAuthFacade.appAuth(appAuthReqVO);
+        log.info("应用鉴权结果:{}", JSON.toJSONString(respVo));
+        return respVo;
     }
 
     /**
@@ -139,35 +93,17 @@ public class AuthV4Controller {
      * @return 功能级鉴权
      */
     @PostMapping("functionAuth")
-    public DataRespVO<String> functionAuth(@RequestBody FunctionAuthReqVO functionAuthReqVO) {
+    public ZeroTrustDataRespVO<String> functionAuth(@RequestBody FunctionAuthReqVO functionAuthReqVO) {
         String appTokenId = functionAuthReqVO.getAppTokenId();
         String taskId = functionAuthReqVO.getTaskId();
-
-        if (StrUtil.isBlank(appTokenId)) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.PARAM_ERROR);
+        log.info("==============功能级鉴权开始, 请求参数appTokenId:{}, taskId:{}================", appTokenId, taskId);
+        if (StrUtil.isBlank(appTokenId) || StrUtil.isBlank(taskId)) {
+            log.error("鉴权参数为空");
+            return ZeroTrustDataRespVO.resultEnumMessage(ZeroTrustBusinessRespEnum.OPERATE_FAIL);
         }
-        TokenDetailRespVo tokenInfo = authTokenFacade.getByAppTokenId(appTokenId, true, false);
-        AuthUserVo userInfo = tokenInfo.getUserInfo();
-        if (userInfo == null) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.AUTH_FAIL);
-        }
-        String appCode = tokenInfo.getAppToken().getAppId();
-
-        RoleApiDto roleApiDto = new RoleApiDto();
-        roleApiDto.setAppCode(appCode);
-        roleApiDto.setUserId(userInfo.getId());
-        roleApiDto.setIdcard(userInfo.getIdcard());
-        List<AppFunInfoDTO> menus = roleFacade.getMenus(roleApiDto);
-
-        StringBuilder functionAuthBuilder = new StringBuilder();
-
-        for (AppFunInfoDTO menu : menus) {
-            String code = menu.getCode();
-            functionAuthBuilder.append(code).append(StrUtil.COMMA);
-        }
-
-        String appAuth = LangUtil.subLastSymbol(functionAuthBuilder.toString(), StrUtil.COMMA);
-        return DataRespVO.success(appAuth);
+        ZeroTrustDataRespVO<String> respVO = zeroTrustAuthFacade.functionAuth(functionAuthReqVO);
+        log.info("功能鉴权结果:{}", JSON.toJSONString(respVO));
+        return respVO;
     }
 
     /**
@@ -177,31 +113,19 @@ public class AuthV4Controller {
      * @return 服务级鉴权
      */
     @PostMapping("serviceAuth")
-    public DataRespVO<String> serviceAuth(@RequestBody ServiceAuthReqVO serviceAuthReqVO) {
+    public ZeroTrustDataRespVO<String> serviceAuth(@RequestBody ServiceAuthReqVO serviceAuthReqVO) {
         String appTokenId = serviceAuthReqVO.getAppTokenId();
         String taskId = serviceAuthReqVO.getTaskId();
-        if (StrUtil.isBlank(appTokenId)) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.PARAM_ERROR);
-        }
-
-        TokenDetailRespVo tokenInfo = authTokenFacade.getByAppTokenId(appTokenId, true, false);
-        AuthUserVo userInfo = tokenInfo.getUserInfo();
-        if (userInfo == null) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.AUTH_FAIL);
-        }
-        String appCode = tokenInfo.getAppToken().getAppId();
-
-        List<ServiceAuthenticationResVO> serviceAuthenticationResVOList = serviceAuthFlowFacade.serviceAuthentication(userInfo.getIdcard(), appCode, "", "");
-
-        StringBuilder serviceAuthBuilder = new StringBuilder();
+        log.info("===========服务级鉴权开始,appTokenId:{}, taskId:{}===========", appTokenId, taskId);
 
-        for (ServiceAuthenticationResVO serviceAuthenticationResVO : serviceAuthenticationResVOList) {
-            String serviceCode = serviceAuthenticationResVO.getServiceCode();
-            serviceAuthBuilder.append(serviceCode).append(StrUtil.COMMA);
+        if (StrUtil.isBlank(taskId) || StrUtil.isBlank(appTokenId)) {
+            log.error("鉴权参数为空");
+            return ZeroTrustDataRespVO.resultEnumMessage(ZeroTrustBusinessRespEnum.OPERATE_FAIL);
         }
 
-        String serviceAuth = LangUtil.subLastSymbol(serviceAuthBuilder.toString(), StrUtil.COMMA);
-        return DataRespVO.success(serviceAuth);
+        ZeroTrustDataRespVO<String> respVO = zeroTrustAuthFacade.serviceAuth(serviceAuthReqVO);
+        log.info("服务级鉴权结果:{}", JSON.toJSONString(respVO));
+        return respVO;
     }
 
     /**
@@ -211,49 +135,22 @@ public class AuthV4Controller {
      * @return 数据级鉴权
      */
     @PostMapping("dataAuth")
-    public DataRespVO<List<DataAuthRespVO>> dataAuth(@RequestBody DataAuthReqVO dataAuthReqVO) {
-        String appTokenId = dataAuthReqVO.getAppTokenId();
-
-        if (StrUtil.isBlank(appTokenId)) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.PARAM_ERROR);
-        }
-
+    public ZeroTrustDataRespVO<DataAuthRespVO> dataAuth(@RequestBody DataAuthReqVO dataAuthReqVO) {
         String resourceId = dataAuthReqVO.getResourceId();
-        if (StrUtil.isBlank(resourceId)) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.PARAM_ERROR);
-        }
-
-        TokenDetailRespVo tokenInfo = authTokenFacade.getByAppTokenId(appTokenId, true, false);
-        AuthUserVo userInfo = tokenInfo.getUserInfo();
-        if (null == userInfo) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.AUTH_FAIL);
-        }
-
-        DataAuthV2ReqDTO v2ReqDTO = new DataAuthV2ReqDTO();
-        v2ReqDTO.setIdcard(userInfo.getIdcard());
-        v2ReqDTO.setResourceId(resourceId);
-        v2ReqDTO.setAppToken(appTokenId);
-        v2ReqDTO.setUserToken(tokenInfo.getUserToken().getUserTokenId());
-        v2ReqDTO.setRequestAppCode(tokenInfo.getAppToken().getAppId());
-
-        ResponseDTO<DataAuthV2RespDTO> dto = apiDataAuthFacade.dataItemsCheckV2(v2ReqDTO);
-        if (!ResponseUtil.isSuccess(dto)) {
-            return DataRespVO.resultEnumMessage(BusinessRespEnum.AUTH_FAIL);
-        } else {
-            DataAuthV2RespDTO respDTO = (DataAuthV2RespDTO) dto.getResult();
-            Set<String> resultSet = respDTO.getItemIdentifier();
-            List<DataAuthRespVO> collect = Optional.ofNullable(resultSet).orElse(Collections.emptySet()).stream().map(e -> {
-                DataAuthRespVO vo = new DataAuthRespVO();
-                vo.setResourceId(resourceId);
-                vo.setItemIdentifier(e);
-                return vo;
-            }).collect(Collectors.toList());
-            return DataRespVO.success(collect);
+        String taskId = dataAuthReqVO.getTaskId();
+        String appTokenId = dataAuthReqVO.getAppTokenId();
+        log.info("======数据级鉴权开始, 请求参数resourceId:{}, taskId:{}, appTokenId:{}=====", resourceId, taskId, appTokenId);
+        if (StrUtil.isBlank(resourceId) || StrUtil.isBlank(taskId) || StrUtil.isBlank(appTokenId)) {
+            log.error("鉴权参数为空");
+            return ZeroTrustDataRespVO.resultEnumMessage(ZeroTrustBusinessRespEnum.OPERATE_FAIL, DataAuthRespVO.empty());
         }
+        ZeroTrustDataRespVO<DataAuthRespVO> respVO = zeroTrustAuthFacade.dataAuth(dataAuthReqVO);
+        log.info("数据鉴权结果:{}", JSON.toJSONString(respVO));
+        return respVO;
     }
 
     @PostMapping("token-receive")
-    public MessageRespVO tokenReceive(@Valid @RequestBody TokenReceiveVO receiveVO) {
+    public ZeroTustMessageRespVO tokenReceive(@Valid @RequestBody TokenReceiveVO receiveVO) {
         return authTokenFacade.tokenReceive(receiveVO);
     }
 

+ 0 - 24
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/vo/AppAuthReqVO.java

@@ -1,24 +0,0 @@
-
-package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * <p>
- * 应用级鉴权请求
- * </p>
- *
- * @author huangzqa
- * @date 2022/8/1
- */
-@Data
-public class AppAuthReqVO {
-    /**
-     * 用户令牌标识
-     */
-    @ApiModelProperty(value = "用户令牌标识")
-    private String userTokenId;
-
-
-}

+ 0 - 33
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/vo/DataAuthReqVO.java

@@ -1,33 +0,0 @@
-
-package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo;
-
-import lombok.Data;
-
-/**
- * <p>
- * 数据鉴权请求
- * </p>
- *
- * @author huangzqa
- * @date 2022/8/1
- */
-@Data
-public class DataAuthReqVO {
-
-    /**
-     * 应用令牌标识
-     */
-    private String appTokenId;
-
-    /**
-     * 任务编码
-     */
-    private String taskId;
-
-    /**
-     * 资源标识符
-     */
-    private String resourceId;
-
-
-}

+ 0 - 27
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/vo/DataAuthRespVO.java

@@ -1,27 +0,0 @@
-
-package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo;
-
-import lombok.Data;
-
-/**
- * <p>
- * 数据鉴权返回值
- * </p>
- *
- * @author huangzqa
- * @date 2022/8/1
- */
-@Data
-public class DataAuthRespVO {
-
-    /**
-     * 资源标识符
-     */
-    private String resourceId;
-
-    /**
-     * 数据项标识符
-     */
-    private String itemIdentifier;
-
-}

+ 0 - 28
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/vo/FunctionAuthReqVO.java

@@ -1,28 +0,0 @@
-
-package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo;
-
-import lombok.Data;
-
-/**
- * <p>
- * 功能鉴权请求
- * </p>
- *
- * @author huangzqa
- * @date 2022/8/1
- */
-@Data
-public class FunctionAuthReqVO {
-
-    /**
-     * 应用令牌标识
-     */
-    private String appTokenId;
-
-    /**
-     * 任务编码
-     */
-    private String taskId;
-
-
-}

+ 0 - 28
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/vo/ServiceAuthReqVO.java

@@ -1,28 +0,0 @@
-
-package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo;
-
-import lombok.Data;
-
-/**
- * <p>
- * 服务鉴权请求
- * </p>
- *
- * @author huangzqa
- * @date 2022/8/1
- */
-@Data
-public class ServiceAuthReqVO {
-
-    /**
-     * 应用令牌标识
-     */
-    private String appTokenId;
-
-    /**
-     * 任务编码
-     */
-    private String taskId;
-
-
-}

+ 0 - 33
src/main/java/com/dragoninfo/dcuc/authweb/restcontroller/api/authservice/v4/vo/UserOrgAuthReqVO.java

@@ -1,33 +0,0 @@
-
-package com.dragoninfo.dcuc.authweb.restcontroller.api.authservice.v4.vo;
-
-import lombok.Data;
-
-/**
- * <p>
- * 用户结构数据鉴权请求
- * </p>
- *
- * @author huangzqa
- * @date 2022/8/1
- */
-@Data
-public class UserOrgAuthReqVO {
-
-    /**
-     * 应用令牌标识
-     */
-    private String appTokenId;
-
-    /**
-     * 身份证号
-     */
-    private String idcard;
-
-    /**
-     * 机构编号
-     */
-    private String orgCode;
-
-
-}