Parcourir la source

Merge branch 'release/v1.0.2' into 'master'

天津大数据功能发布

See merge request dcuc-tjdsj/approve-gateway!21
黄资权 il y a 4 ans
Parent
commit
ef40aadf5a
22 fichiers modifiés avec 801 ajouts et 565 suppressions
  1. 32 2
      pom.xml
  2. 8 92
      src/main/assembly/conf/application.yml
  3. 39 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/Constants.java
  4. 126 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/business/BimBusiness.java
  5. 13 7
      src/main/java/com/dragonsoft/dcuc/approvegateway/controller/ApproveErrorController.java
  6. 8 7
      src/main/java/com/dragonsoft/dcuc/approvegateway/controller/ApproveLoginController.java
  7. 0 134
      src/main/java/com/dragonsoft/dcuc/approvegateway/filter/DcucJwtTokenPreFilter.java
  8. 0 114
      src/main/java/com/dragonsoft/dcuc/approvegateway/filter/HwTokenPreFilter.java
  9. 155 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/filter/SecurityAccessTokenResolver.java
  10. 60 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/filter/UserInfoForwardForFilter.java
  11. 15 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimLoginReqVO.java
  12. 13 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimLogoutReqVO.java
  13. 18 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimRespExceptionVO.java
  14. 23 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimRespVO.java
  15. 67 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimUserInfoItemRespVO.java
  16. 26 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimUserInfoReqVO.java
  17. 23 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimUserInfoRespVO.java
  18. 0 117
      src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/OauthUserVo.java
  19. 45 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/properties/DcucApproveProperties.java
  20. 39 0
      src/main/resources/META-INF/additional-spring-configuration-metadata.json
  21. 80 0
      src/main/resources/application-base.yml
  22. 11 92
      src/main/resources/application.yml

+ 32 - 2
pom.xml

@@ -8,7 +8,11 @@
     <name>approve-gateway</name>
     <description>approve-gateway</description>
     <properties>
-        <java.version>1.8</java.version>
+        <!--revisions需写死,用于标识打包的版本号,不可删除-->
+        <revision>1.0.2-tjdsj-SNAPSHOT</revision>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
 
     <dependencyManagement>
@@ -38,6 +42,12 @@
         <dependency>
             <groupId>com.dragonsoft</groupId>
             <artifactId>duceap-cloud-starter</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>HdrHistogram</artifactId>
+                    <groupId>org.hdrhistogram</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
@@ -45,11 +55,24 @@
             <version>2.0.0.M2</version>
         </dependency>
 
+        <!--配置处理-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <scope>test</scope>
+        </dependency>
         <!-- dcuc登陆 -->
         <dependency>
             <groupId>com.dragonsoft</groupId>
@@ -59,6 +82,13 @@
             <groupId>com.dragonsoft</groupId>
             <artifactId>duceap-security-dids</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.12</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <repositories>
@@ -112,7 +142,7 @@
                                     <!--取消依赖包的时间戳-->
                                     <useBaseVersion>true</useBaseVersion>
                                     <!--排除licenseignore包,用来禁用许可开关,防止生产环境通过关闭开关,绕过许可-->
-                                   <!-- <excludeArtifactIds>duceap-support-licenseignore</excludeArtifactIds>-->
+                                    <!-- <excludeArtifactIds>duceap-support-licenseignore</excludeArtifactIds>-->
                                 </configuration>
                             </execution>
                             <execution>

+ 8 - 92
src/main/assembly/conf/application.yml

@@ -1,95 +1,11 @@
-server:
-  port: 8866
-  servlet:
-    context-path: /approve-gateway
-
 spring:
-  application:
-    name: approve-gateway
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 127.0.0.1:8848
-
-zuul:
-  retryable: true
-  # 这个配置必须保留,才会传递Authorization,cookie等
-  sensitive-headers:
-  host:
-    connect-timeout-millis: 60000
-    socket-timeout-millis: 60000
-ribbon:
-  ConnectTimeout: 60000 # 连接超时时间(ms)
-  ReadTimeout: 60000 # 通信超时时间(ms)
-  OkToRetryOnAllOperations: true # 是否对所有操作重试
-  MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
-  MaxAutoRetries: 1 # 同一实例的重试次数
-hystrix:
-  command:
-    default:
-      execution:
-        isolation:
-          thread:
-            timeoutInMillisecond: 60000 # 熔断超时时长:6000ms
-
-
-duceap:
-  license:
-    dataCacheMethod: apollo
-    #配置用来指定license对接的后端项目地址(格式:ip:port/context,如http://10.10.10.10:8080/ctx),默认使用HttpServletRequest.getLocalAddr()方法获取ip地址,应用在docker部署环境中无法获取机子的真实ip地址 考虑以配置参数的形式传入
-    #address: http://10.10.10.10:8080/ctx
-    enabled: false
-  apollo:
-    client:
-      host: http://192.168.10.27:8070 #配置中心地址(portal端)
-  security:
-    ##配置登陆方式,dids、dssoac、dcuc
-    type: dids
-    ##dids登录配置#
-    dids2:
-      ##应用代码
-      appCode: YHZX0000000000000001
-      useSSO: true
-      ##单点登录服务器地址
-      SSOLoginUrl: http://10.201.7.30:9090/didsserver/login
-      ##单点登录服务接口地址
-      SSOValidateUrl: http://10.201.7.30:9090/didsserver/serviceValidate
-      ##对接系统地址(ip:端口/上下文/login) 开发环境中, ip端口需要配置成代理的前端地址(请全程使用真实的ip 而不是localhost或者127.0.0.1,否则会导致登录失败)
-      SSOServiceUrl: http://10.11.0.59:1645/approve-gateway/login
-      accessType: 1
-      ##单点登录服务接口地址
-      webServiceUrl: http://10.201.7.30:9090/didsserver/webservices/
-      jndi: JDBC/DIDS
-      filterType: 1
-      ##若匹配该地址,则无须过滤
-      noFilterUrl: /api/v1/,v1/,v2/api-docs,services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/
-    dcuc:
-      casServerUrlPrefix: http://192.168.10.2:8877/sso
-      serverName: http://10.11.0.59:1645
-      ignorePattern: /js/*|/img/*|/css/*|/authorizationPage.html|/importAuthorizationFile.html|/license/LicenseManagerServlet|/authorizationFile/|/api/v1
-      ApiUrl: http://192.168.10.2:8860/dcuc
-      appCode: YHZX0000000000000001
-#=========================apollo配置信息============================#
+  profiles:
+    include: base
+#apollo配置
 apollo:
+  autoUpdateInjectedSpringProperties: false
   bootstrap:
-    enabled: true #是否启用apollo
-    namespaces: application, dragonsoft.approve-common #命名空间,默认application
-  cluster: default #集群,默认default
-  meta: http://192.168.10.27:8080 #配置中心地址(服务端)
-
-approve:
-  filter:
-    hw:
-      app:
-        secret: test
-        key: test
-      # 华为网关地址
-      host: http://10.11.1.164:11480
-      # 过滤器开关
-      enabled: false
-    dcuc:
-      # dcuc主机地址
-      host: http://10.11.0.14:8870
-      # 过滤器开关
-      enabled: true
-
+    enabled: true
+    namespaces: application,dragonsoft.dcuc
+  cluster: default
+  meta: http://192.168.10.80:8081

+ 39 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/Constants.java

@@ -0,0 +1,39 @@
+package com.dragonsoft.dcuc.approvegateway;
+
+/**
+ * <p>
+ * 常量
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2021/6/21
+ */
+public final class Constants {
+
+    /**
+     * 用户令牌
+     */
+    public static final String USER_TOKEN = "userToken";
+
+    /**
+     * 应用令牌
+     */
+    public static final String APP_TOKEN = "appToken";
+
+    /**
+     * BIM token
+     */
+    public static final String BIM_TOKEN = "bimToken";
+
+    /**
+     * 华为
+     */
+    public static final String HUAWEI = "huawei";
+
+    /**
+     * 获取用户信息路径
+     */
+    public static final String API_USER_INFO = "/api/user/info";
+
+
+}

+ 126 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/business/BimBusiness.java

@@ -0,0 +1,126 @@
+package com.dragonsoft.dcuc.approvegateway.business;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import com.dragonsoft.dcuc.approvegateway.pojo.*;
+import com.dragonsoft.dcuc.approvegateway.properties.DcucApproveProperties;
+import com.dragonsoft.duceap.commons.util.UUIDUtils;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 竹云认证相关业务
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2021/6/21
+ */
+@Slf4j
+@Service
+public class BimBusiness {
+
+    @Autowired
+    private DcucApproveProperties dcucApproveProperties;
+
+    /**
+     * 获取 token
+     *
+     * @return token
+     */
+    public String getToken() {
+        String url = dcucApproveProperties.getBimIdentityUrl() + "/api/rest/management/ExtApiMgmtAuthService/login";
+
+        BimLoginReqVO bimLoginReqVo = new BimLoginReqVO();
+        bimLoginReqVo.setLoginId(dcucApproveProperties.getBimLoginId());
+        bimLoginReqVo.setSecretKey(dcucApproveProperties.getBimSecretKey());
+
+        String requestJson = JsonUtils.toJSONString(bimLoginReqVo);
+        log.debug("Bim login request:{}", requestJson);
+        String respJson = HttpRequest.post(url)
+                .body(requestJson)
+                .execute()
+                .body();
+        log.debug("Bim login respJson:{}", respJson);
+
+        BimRespVO bimRespVo = JsonUtils.parseObject(respJson, BimRespVO.class);
+        if (!bimRespVo.getSuccess()) {
+            log.error("Bim login token error :{}", respJson);
+            return "";
+        }
+
+        Object data = bimRespVo.getData();
+        return (String) data;
+    }
+
+    /**
+     * 退出 token
+     *
+     * @param token token
+     */
+    public void logoutToken(String token) {
+
+        String url = dcucApproveProperties.getBimIdentityUrl() + "/api/rest/management/ExtApiMgmtAuthService/logout";
+
+        BimLogoutReqVO bimLogoutReqVo = new BimLogoutReqVO();
+        bimLogoutReqVo.setToken(token);
+
+        String requestJson = JsonUtils.toJSONString(bimLogoutReqVo);
+        log.debug("Bim logout requestJson:{}", requestJson);
+        String respJson = HttpRequest.post(url)
+                .body(requestJson)
+                .execute()
+                .body();
+        log.debug("Bim logout respJson:{}", respJson);
+
+        BimRespVO bimRespVo = JsonUtils.parseObject(respJson, BimRespVO.class);
+        if (!bimRespVo.getSuccess()) {
+            log.error("Bim logout token error :{}", respJson);
+        }
+    }
+
+
+    /**
+     * 获取用户信息
+     *
+     * @param userToken 用户令牌
+     * @param token     token
+     * @return 用户信息
+     */
+    public BimUserInfoItemRespVO getUserInfoByUserToken(String userToken, String token) {
+
+        if (StrUtil.isBlank(userToken)) {
+            throw new IllegalArgumentException("UserToken is blank.");
+        }
+
+        String messageId = UUIDUtils.getUUID();
+
+        BimUserInfoReqVO bimUserInfoReqVO = new BimUserInfoReqVO();
+        bimUserInfoReqVO.setToken(token);
+        bimUserInfoReqVO.setMessageId(messageId);
+        bimUserInfoReqVO.setUserToken(userToken);
+
+        String reqJson = JsonUtils.toJSONString(bimUserInfoReqVO);
+
+        log.info("UserInfo req :{}", reqJson);
+
+        String url = dcucApproveProperties.getBimIdentityUrl() + "/api/rest/customization/ExpApiCustomDragonitService/getUserInfoByUserToken";
+
+        log.info("UserInfo req url:{}", reqJson);
+        String postResp = HttpRequest.post(url)
+                .body(reqJson)
+                .execute()
+                .body();
+        log.info("UserInfo resp :{}", postResp);
+
+        BimUserInfoRespVO bimRespVo = JsonUtils.parseObject(postResp, BimUserInfoRespVO.class);
+
+        if (!bimRespVo.getSuccess()) {
+            log.error("UserInfo error:{}", postResp);
+        }
+
+        return bimRespVo.getData();
+    }
+}

+ 13 - 7
src/main/java/com/dragonsoft/dcuc/approvegateway/controller/ApproveErrorController.java

@@ -20,16 +20,22 @@ public class ApproveErrorController {
 
     @GetMapping(value = "/error")
     public ResponseEntity<ResponseStatus> error(HttpServletRequest request) {
-        String message = request.getAttribute("javax.servlet.error.message").toString();
-        Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");
+        Object attribute = request.getAttribute("javax.servlet.error.exception");
+        Throwable throwable = (Throwable) attribute;
 
-        if (throwable.getCause() instanceof ApplicationException) {
-            ApplicationException ex = (ApplicationException) throwable.getCause();
-            int status = ex.getStatusCode() == 0 ? 500 : ex.getStatusCode();
-            return new ResponseEntity<>(new ResponseStatus(String.valueOf(status), ex.getMessage()), HttpStatus.resolve(HttpCode.PARAM_VERIFY_ERROR.getCode()));
+        if (throwable != null) {
+            if (throwable.getCause() instanceof ApplicationException) {
+                ApplicationException ex = (ApplicationException) throwable.getCause();
+                int status = ex.getStatusCode() == 0 ? 500 : ex.getStatusCode();
+                assert HttpStatus.resolve(HttpCode.PARAM_VERIFY_ERROR.getCode()) != null;
+                return new ResponseEntity<>(new ResponseStatus(String.valueOf(status), ex.getMessage()), HttpStatus.resolve(HttpCode.PARAM_VERIFY_ERROR.getCode()));
+            } else {
+                return new ResponseEntity<>(ResponseStatus.fail("500", "未知异常[" + throwable.getMessage() + "]"), HttpStatus.BAD_GATEWAY);
+            }
         } else {
-            return new ResponseEntity<>(ResponseStatus.fail("500", "未知异常[" + throwable.getMessage() + "]"), HttpStatus.BAD_GATEWAY);
+            return new ResponseEntity<>(ResponseStatus.fail("500", "未知异常"), HttpStatus.BAD_GATEWAY);
         }
 
+
     }
 }

+ 8 - 7
src/main/java/com/dragonsoft/dcuc/approvegateway/controller/LoginDemoController.java → src/main/java/com/dragonsoft/dcuc/approvegateway/controller/ApproveLoginController.java

@@ -18,10 +18,11 @@ import javax.servlet.http.HttpServletResponse;
 import java.net.URLEncoder;
 
 /**
- * Created by lidr on 2021/2/24
+ * @author lidr
+ * @date 2021/2/24
  */
 @RestController
-public class LoginDemoController {
+public class ApproveLoginController {
     @Autowired(required = false)
     private DidsProperties didsProperties;
     @Autowired(required = false)
@@ -32,7 +33,7 @@ public class LoginDemoController {
     @RequestMapping({"/gateway/logout"})
     public void logout(HttpServletRequest request, HttpServletResponse response) throws Exception {
         String type = securityProperties.getType();
-        if(type.equalsIgnoreCase("dcuc")){
+        if (type.equalsIgnoreCase("dcuc")) {
             String redirectUrl = request.getParameter("redirectUrl") != null ? request.getParameter("redirectUrl") : this.dcucProperties.getServerName();
             String logoutUrl = this.dcucProperties.getCasServerUrlPrefix() + "/logout?service=" + URLEncoder.encode(redirectUrl, "UTF-8");
             ResponseLink responseLink = ResponseLink.logout(logoutUrl);
@@ -42,15 +43,15 @@ public class LoginDemoController {
             } else {
                 DcucLogoutHandler.logout(request, response, redirectUrl);
             }
-        }else {
+        } else {
             String ssoUrl = PropUtils.getInstance().getConfigItem("dids2.SSOLoginUrl").replace("/login", "");
             String redirectUrl = StringUtils.defaultIfEmpty(request.getParameter("redirectUrl"), StringUtils.substringBeforeLast(this.didsProperties.getSSOServiceUrl(), "/login"));
             String logoutUrl = ssoUrl + "/logout?service=" + redirectUrl;
             ResponseLink responseLink = ResponseLink.logout(logoutUrl);
-            if(RequestUtils.isXmlHttpRequest(request)){
+            if (RequestUtils.isXmlHttpRequest(request)) {
                 request.getSession().invalidate();
-                ResponseUtils.outJson(responseLink,response);
-            }else {
+                ResponseUtils.outJson(responseLink, response);
+            } else {
                 request.getSession().invalidate();
                 response.sendRedirect(logoutUrl);
             }

+ 0 - 134
src/main/java/com/dragonsoft/dcuc/approvegateway/filter/DcucJwtTokenPreFilter.java

@@ -1,134 +0,0 @@
-package com.dragonsoft.dcuc.approvegateway.filter;
-
-import com.alibaba.fastjson.JSONObject;
-import com.dragonsoft.approve.common.ErrorCode;
-import com.dragonsoft.approve.model.TokenInfo;
-import com.dragonsoft.dcuc.approvegateway.pojo.OauthUserVo;
-import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
-import com.dragonsoft.duceap.base.exception.ApplicationException;
-import com.dragonsoft.duceap.base.utils.UserContextUtils;
-import com.dragonsoft.duceap.core.entity.response.ResponseResult;
-import com.dragonsoft.duceap.security.jwt.JwtTokenUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.netflix.zuul.ZuulFilter;
-import com.netflix.zuul.context.RequestContext;
-import com.netflix.zuul.exception.ZuulException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.*;
-import org.springframework.stereotype.Component;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Optional;
-
-@Component
-public class DcucJwtTokenPreFilter extends ZuulFilter {
-
-    private static final Logger logger = LoggerFactory.getLogger(DcucJwtTokenPreFilter.class);
-
-    /**
-     * 获取用户信息接口
-     */
-    private static final String AUTH_USER_PATH = "/dcuc/api/user-service/v2/users/oauth";
-
-    /**
-     * 认证服务url
-     */
-    @Value("${approve.filter.dcuc.host:}")
-    private String oauthServiceHost;
-
-    /**
-     * 华为网关是否开启
-     */
-    @Value("${approve.filter.dcuc.enabled:true}")
-    private Boolean dcucEnabled;
-
-    @Override
-    public String filterType() {
-        return "pre";
-    }
-
-    @Override
-    public int filterOrder() {
-        return -10;
-    }
-
-    @Override
-    public boolean shouldFilter() {
-        return dcucEnabled;
-    }
-
-    @Override
-    public Object run() throws ZuulException {
-        RequestContext ctx = RequestContext.getCurrentContext();
-        BaseSecurityUser currentUser = UserContextUtils.getCurrentUser();
-        logger.info("====登录用户信息:{}====", JSONObject.toJSONString(currentUser));
-        if (currentUser != null) {
-            String jwtToken = JwtTokenUtils.getAlgorithmGen(JwtTokenUtils.AlgorithmType.HS256).sign(currentUser);
-            ctx.addZuulRequestHeader(JwtTokenUtils.AUTHORIZATION_HEADER, JwtTokenUtils.TOKEN_PREFIX + jwtToken);
-            logger.info("登录jwtToken:{}", jwtToken);
-        }
-        return null;
-    }
-
-    private BaseSecurityUser getSecurityUser() {
-        RequestContext ctx = RequestContext.getCurrentContext();
-
-        //        logger.info();
-        String userToken = ctx.getRequest().getHeader("token");
-        String appToken = ctx.getRequest().getHeader("appToken");
-
-        HttpHeaders headers = new HttpHeaders();
-        //设置ContentType
-        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-        //应用token
-        headers.add("dcucAppToken", appToken);
-        //用户token
-        headers.add("dcucUserToken", userToken);
-        logger.info("userToken=【{}】,appToken=【{}】", userToken, appToken);
-
-        //是否需要获取华为网关accessToken,公司内部无华为网关环境
-        if (Optional.ofNullable(ctx.get(HwTokenPreFilter.HW_TOKEN)).isPresent()) {
-            String accessToken = ((TokenInfo) ctx.get(HwTokenPreFilter.HW_TOKEN)).getAccessToken();
-            String authorization = JwtTokenUtils.TOKEN_PREFIX + accessToken;
-            headers.add("Authorization", authorization);
-            logger.info("华为accessToken=【{}】", accessToken);
-        }
-
-        BaseSecurityUser baseSecurityUser = null;
-        try {
-            HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(new LinkedMultiValueMap(), headers);
-            RestTemplate restTemplate = new RestTemplate();
-            //远程调用用户中心接口
-            ResponseEntity<ResponseResult> exchange = restTemplate.exchange(oauthServiceHost + AUTH_USER_PATH, HttpMethod.GET, requestEntity, ResponseResult.class);
-            logger.info("远程调用返回结果resEntity=【{}】,请求url=【{}】", JSONObject.toJSONString(exchange), oauthServiceHost + AUTH_USER_PATH);
-            //判断请求是否成功
-            if (exchange.getStatusCode() == HttpStatus.OK) {
-                ResponseResult responseResult = exchange.getBody();
-                if (String.valueOf(HttpStatus.OK.value()).equals(responseResult.getStatusCode())) {
-                    OauthUserVo oauthUserVo = new ObjectMapper().convertValue(responseResult.getResult(), OauthUserVo.class);
-                    baseSecurityUser = new BaseSecurityUser();
-                    baseSecurityUser.setId(oauthUserVo.getId());
-                    baseSecurityUser.setName(oauthUserVo.getName());
-                    baseSecurityUser.setPoliceNo(oauthUserVo.getPoliceNumber());
-                    baseSecurityUser.setSecurityOrg(oauthUserVo.getOrgCode());
-//                    baseSecurityUser.setCode(oauthUserVo.getOrgCode());
-//                    baseSecurityUser.setUserName();
-//                    baseSecurityUser.setSecurityRoles();
-                }
-            }
-        } catch (Exception e) {
-            logger.error("用户信息获取失败", e);
-            throw new ApplicationException(ErrorCode.USER_INFO_ERROR.getCode(), ErrorCode.USER_INFO_ERROR.getMsg());
-        }
-        if (null == baseSecurityUser) {
-            logger.error("用户信息获取失败,用户信息为空!");
-            throw new ApplicationException(ErrorCode.USER_INFO_ERROR.getCode(), ErrorCode.USER_INFO_ERROR.getMsg());
-        }
-
-        return baseSecurityUser;
-    }
-}

+ 0 - 114
src/main/java/com/dragonsoft/dcuc/approvegateway/filter/HwTokenPreFilter.java

@@ -1,114 +0,0 @@
-package com.dragonsoft.dcuc.approvegateway.filter;
-
-import com.alibaba.fastjson.JSON;
-import com.dragonsoft.approve.component.TokenOperate;
-import com.dragonsoft.approve.model.TokenInfo;
-import com.dragonsoft.dcuc.approvegateway.util.ApiGwUtils;
-import com.netflix.zuul.ZuulFilter;
-import com.netflix.zuul.context.RequestContext;
-import com.netflix.zuul.exception.ZuulException;
-import org.apache.commons.lang.time.DateUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-
-/**
- * @Author: qiuyu
- * @Date: 2021/1/14 10:57
- * @Description:
- */
-//@Component
-public class HwTokenPreFilter extends ZuulFilter {
-
-    private static final Logger logger = LoggerFactory.getLogger(HwTokenPreFilter.class);
-
-    /**
-     * 华为网关API获取AppToken的URI
-     */
-    private static final String ACCESS_TOKEN_URI = "/v1/apigw/oauth2/token";
-
-    public static final String HW_TOKEN = "HW_TOKEN";
-
-    /**
-     * 容忍时间
-     */
-    public static final int TOLERATE_TIME = 5 * 60;
-
-    /**
-     * 华为AppKey
-     */
-    @Value("${approve.filter.hw.app.key:}")
-    private String hwAppKey;
-
-    /**
-     * 华为AppSecret
-     */
-    @Value("${approve.filter.hw.app.secret:}")
-    private String hwAppSecret;
-
-    /**
-     * 华为网关地址URL
-     */
-    @Value("${approve.filter.hw.host:}")
-    private String hwGatewayHost;
-
-    /**
-     * 华为网关是否开启
-     */
-    @Value("${approve.filter.hw.enabled:true}")
-    private Boolean hwEnabled;
-
-    @Autowired
-    private TokenOperate tokenComponent;
-
-
-    @Override
-    public String filterType() {
-        return "pre";
-    }
-
-    @Override
-    public int filterOrder() {
-        return -11;
-    }
-
-    @Override
-    public boolean shouldFilter() {
-        return hwEnabled;
-    }
-
-    @Override
-    public Object run() throws ZuulException {
-        RequestContext ctx = RequestContext.getCurrentContext();
-        ctx.set(HW_TOKEN, getTokenOauth());
-        return null;
-    }
-
-    /**
-     * 获取token信息
-     *
-     * @return
-     */
-    public TokenInfo getTokenOauth() {
-        TokenInfo tokenInfo = tokenComponent.fetchTokenInfo();
-
-        //token正常直接返回
-        if (null != tokenInfo && new Date().before(tokenInfo.getOverdueTime())) {
-            logger.info("HwTokenInfo=【{}】", JSON.toJSONString(tokenInfo));
-            return tokenInfo;
-        }
-
-        //token过期或者不存在
-        Date currentDate = new Date();
-        //调用华为网关获取accessToken
-        tokenInfo = ApiGwUtils.getAccessToken(hwGatewayHost + ACCESS_TOKEN_URI, hwAppKey, hwAppSecret);
-        //设置缓存
-        tokenInfo.setOverdueTime(DateUtils.addSeconds(currentDate, tokenInfo.getExpiresIn() - TOLERATE_TIME));
-        tokenComponent.pushHwTokenInfo(tokenInfo);
-        return tokenInfo;
-    }
-}

+ 155 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/filter/SecurityAccessTokenResolver.java

@@ -0,0 +1,155 @@
+package com.dragonsoft.dcuc.approvegateway.filter;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.dragonsoft.approve.component.TokenOperate;
+import com.dragonsoft.approve.model.TokenInfo;
+import com.dragonsoft.dcuc.approvegateway.Constants;
+import com.dragonsoft.dcuc.approvegateway.business.BimBusiness;
+import com.dragonsoft.dcuc.approvegateway.pojo.BimUserInfoItemRespVO;
+import com.dragonsoft.dcuc.approvegateway.properties.DcucApproveProperties;
+import com.dragonsoft.duceap.base.api.security.ISecurityAccessTokenResolver;
+import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
+import com.dragonsoft.duceap.base.entity.security.SecurityUser;
+import com.dragonsoft.duceap.commons.util.UrlMatcher;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+import com.dragonsoft.duceap.security.jwt.securityaccess.SecurityAccessTokenProperties;
+import com.dragonsoft.duceap.security.jwt.securityaccess.SecurityAccessUserCacheResolver;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.time.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.web.ServerProperties;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/15
+ **/
+@Slf4j
+@Component
+public class SecurityAccessTokenResolver implements ISecurityAccessTokenResolver {
+
+    @Autowired
+    private SecurityAccessTokenProperties secAccessProp;
+
+    @Autowired(required = false)
+    private SecurityAccessUserCacheResolver cacheResolver;
+
+    @Autowired
+    private ServerProperties serverProperties;
+
+    @Autowired
+    private BimBusiness bimBusiness;
+
+    @Autowired
+    private DcucApproveProperties dcucApproveProperties;
+
+    @Autowired
+    private TokenOperate tokenComponent;
+
+
+    @Override
+    public BaseSecurityUser resolve(HttpServletRequest request) {
+        String contextPath = serverProperties.getServlet().getContextPath();
+        String requestUri = request.getRequestURI();
+        log.debug("Security filter origin uri:{}", requestUri);
+
+        // 去除上下文
+        requestUri = requestUri.substring(contextPath.length());
+
+        log.debug("Security filter not context uri:{}", requestUri);
+        String huaweiLoginFilterUrl = dcucApproveProperties.getHuaweiLoginFilterUrl();
+        String[] splitUrls = huaweiLoginFilterUrl.split(StrUtil.COMMA);
+
+        log.debug("splitUrls:{} .", JsonUtils.toJSONString(splitUrls));
+
+        if (!requestUri.equalsIgnoreCase(Constants.API_USER_INFO)) {
+            if (UrlMatcher.matches(requestUri, splitUrls)) {
+                log.debug("URI:{} Not need get user info.", requestUri);
+                return null;
+            }
+        }
+
+
+        String userToken = request.getHeader(secAccessProp.getUserTokenHeaderName());
+        String appToken = request.getHeader(Constants.APP_TOKEN);
+
+        log.info("userToken:{},appToken:{}", userToken, appToken);
+
+        if (cacheResolver != null) {
+            //从缓存中取
+            SecurityUser securityUserCache = (SecurityUser) cacheResolver.getIfPresent(cacheResolver.cacheKey(userToken));
+
+            if (securityUserCache != null) {
+                log.info("Cache securityUserCache:{}", JsonUtils.toJSONString(securityUserCache));
+
+                return securityUserCache;
+            }
+        }
+
+        if (StrUtil.isBlank(userToken)) {
+            return null;
+        }
+        TokenInfo tokenOauth = getTokenOauth();
+        String token = tokenOauth.getAccessToken();
+        BimUserInfoItemRespVO userInfoItemRespVO = bimBusiness.getUserInfoByUserToken(userToken, token);
+        String sfzh = userInfoItemRespVO.getSfzh();
+
+        log.info("idcard:{}, userInfo :{}", sfzh, JsonUtils.toJSONString(userInfoItemRespVO));
+
+        SecurityUser securityUser = new SecurityUser();
+        // 这里使用的是华为认证的id不是用户中心的id
+        securityUser.setId(userInfoItemRespVO.getYhId());
+        securityUser.setName(userInfoItemRespVO.getXm());
+        securityUser.setUserName(userInfoItemRespVO.getSfzh());
+        securityUser.setPoliceNo(userInfoItemRespVO.getJh());
+        securityUser.setIdcard(userInfoItemRespVO.getSfzh());
+        securityUser.setSecurityOrg(userInfoItemRespVO.getDwdm());
+        securityUser.setSecurityOrgName(userInfoItemRespVO.getDwmc());
+
+        //放入缓存
+        if (cacheResolver != null) {
+            cacheResolver.put(cacheResolver.cacheKey(userToken), securityUser);
+        }
+
+        log.info("return idcard:{}, securityUser :{}", sfzh, JsonUtils.toJSONString(securityUser));
+
+        return securityUser;
+    }
+
+    /**
+     * 获取token信息
+     *
+     * @return token信息
+     */
+    public TokenInfo getTokenOauth() {
+        TokenInfo tokenInfo = tokenComponent.fetchTokenInfo();
+
+        Date currentDate = new Date();
+        //token正常直接返回
+        if (null != tokenInfo && currentDate.before(tokenInfo.getOverdueTime())) {
+            log.debug("HwTokenInfo=【{}】", JSON.toJSONString(tokenInfo));
+            return tokenInfo;
+        }
+
+        if (tokenInfo != null) {
+            String accessToken = tokenInfo.getAccessToken();
+            bimBusiness.logoutToken(accessToken);
+        }
+
+        //调用竹云认证获取 token
+        String token = bimBusiness.getToken();
+        tokenInfo = new TokenInfo();
+        tokenInfo.setAccessToken(token);
+
+        //设置缓存
+        Integer bimTokenExpireSecond = dcucApproveProperties.getBimTokenExpireSecond();
+        tokenInfo.setOverdueTime(DateUtils.addSeconds(currentDate, bimTokenExpireSecond));
+        tokenComponent.pushHwTokenInfo(tokenInfo);
+        return tokenInfo;
+    }
+
+}

+ 60 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/filter/UserInfoForwardForFilter.java

@@ -0,0 +1,60 @@
+package com.dragonsoft.dcuc.approvegateway.filter;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
+import com.dragonsoft.duceap.commons.util.ip.IpUtils;
+import com.dragonsoft.duceap.security.jwt.JwtTokenUtils;
+import com.netflix.zuul.ZuulFilter;
+import com.netflix.zuul.context.RequestContext;
+import com.netflix.zuul.exception.ZuulException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 获取请求者真实IP
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2021/6/29
+ */
+@Slf4j
+@Component
+public class UserInfoForwardForFilter extends ZuulFilter {
+    @Override
+    public String filterType() {
+        return FilterConstants.PRE_TYPE;
+    }
+
+    @Override
+    public int filterOrder() {
+        return 0;
+    }
+
+    @Override
+    public boolean shouldFilter() {
+        return true;
+    }
+
+    @Override
+    public Object run() throws ZuulException {
+        RequestContext currentContext = RequestContext.getCurrentContext();
+        HttpServletRequest request = currentContext.getRequest();
+        String realIpAdrress = IpUtils.getRealIpAdrress(request);
+        Map<String, String> zuulRequestHeaders = currentContext.getZuulRequestHeaders();
+        zuulRequestHeaders.put("HTTP_X_FORWARDED_FOR", realIpAdrress);
+        BaseSecurityUser currentUser = UserContextUtils.getCurrentUser();
+        log.info("====登录用户信息:{}====", JSONObject.toJSONString(currentUser));
+        if (currentUser != null) {
+            String jwtToken = JwtTokenUtils.getAlgorithmGen(JwtTokenUtils.AlgorithmType.HS256).sign(currentUser);
+            currentContext.addZuulRequestHeader(JwtTokenUtils.AUTHORIZATION_HEADER, JwtTokenUtils.TOKEN_PREFIX + jwtToken);
+            log.info("登录jwtToken:{}", jwtToken);
+        }
+        return null;
+    }
+}

+ 15 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimLoginReqVO.java

@@ -0,0 +1,15 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimLoginReqVO {
+
+    private String loginId;
+
+    private String secretKey;
+}

+ 13 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimLogoutReqVO.java

@@ -0,0 +1,13 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimLogoutReqVO {
+
+    private String token;
+}

+ 18 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimRespExceptionVO.java

@@ -0,0 +1,18 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimRespExceptionVO {
+
+    private String name;
+
+    private String message;
+
+    private String trace;
+
+}

+ 23 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimRespVO.java

@@ -0,0 +1,23 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimRespVO {
+
+    private Boolean success;
+
+    private Object data;
+
+    private String errorCode;
+
+    private String errorMessage;
+
+    private BimRespExceptionVO errorException;
+
+
+}

+ 67 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimUserInfoItemRespVO.java

@@ -0,0 +1,67 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimUserInfoItemRespVO {
+
+    /**
+     * 消息id
+     */
+    private String messageId;
+
+    /**
+     * true表示查询成功
+     */
+    private String result;
+
+    /**
+     * 结果描述
+     */
+    private String resultDescription;
+
+    /**
+     * 用户id
+     */
+    private String yhId;
+
+    /**
+     * 姓名
+     */
+    private String xm;
+
+    /**
+     * 警号
+     */
+    private String jh;
+
+    /***
+     * 身份证号
+     */
+    private String sfzh;
+
+    /**
+     * 单位代码
+     */
+    private String dwdm;
+
+    /**
+     * 单位名称
+     */
+    private String dwmc;
+
+    /**
+     * 职位
+     */
+    private String zw;
+
+    /**
+     * 用户名
+     */
+    private String yhm;
+
+}

+ 26 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimUserInfoReqVO.java

@@ -0,0 +1,26 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimUserInfoReqVO {
+
+    /**
+     * token
+     */
+    private String token;
+
+    /**
+     * 消息ID
+     */
+    private String messageId;
+
+    /**
+     * 用户令牌
+     */
+    private String userToken;
+}

+ 23 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/BimUserInfoRespVO.java

@@ -0,0 +1,23 @@
+package com.dragonsoft.dcuc.approvegateway.pojo;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimUserInfoRespVO {
+
+    private Boolean success;
+
+    private BimUserInfoItemRespVO data;
+
+    private String errorCode;
+
+    private String errorMessage;
+
+    private BimRespExceptionVO errorException;
+
+
+}

+ 0 - 117
src/main/java/com/dragonsoft/dcuc/approvegateway/pojo/OauthUserVo.java

@@ -1,117 +0,0 @@
-package com.dragonsoft.dcuc.approvegateway.pojo;
-
-import java.io.Serializable;
-
-/**
- * 代码千万行,注释第一行,编码不规范,同事两行泪
- *
- * @author huang(jy)
- * @version 1.0
- * @date 2020/12/10 9:22
- */
-public class OauthUserVo implements Serializable {
-    private static final long serialVersionUID = -7843750020214903309L;
-
-    //id(主键标识:UUID
-    private String id;
-
-    //姓名
-    private String name;
-
-    //省份证号
-    private String idcard;
-
-    //警号
-    private String policeNumber;
-
-    //机构名称
-    private String orgName;
-
-    //机构代码
-    private String orgCode;
-
-    //职务
-    private String postType;
-
-    //人员类型
-    private String userType;
-
-
-    public OauthUserVo() {
-    }
-
-    public OauthUserVo(String id, String name, String idcard, String policeNumber, String orgName, String orgCode, String postType, String userType) {
-        this.id = id;
-        this.name = name;
-        this.idcard = idcard;
-        this.policeNumber = policeNumber;
-        this.orgName = orgName;
-        this.orgCode = orgCode;
-        this.postType = postType;
-        this.userType = userType;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getIdcard() {
-        return idcard;
-    }
-
-    public void setIdcard(String idcard) {
-        this.idcard = idcard;
-    }
-
-    public String getPoliceNumber() {
-        return policeNumber;
-    }
-
-    public void setPoliceNumber(String policeNumber) {
-        this.policeNumber = policeNumber;
-    }
-
-    public String getOrgName() {
-        return orgName;
-    }
-
-    public void setOrgName(String orgName) {
-        this.orgName = orgName;
-    }
-
-    public String getOrgCode() {
-        return orgCode;
-    }
-
-    public void setOrgCode(String orgCode) {
-        this.orgCode = orgCode;
-    }
-
-    public String getPostType() {
-        return postType;
-    }
-
-    public void setPostType(String postType) {
-        this.postType = postType;
-    }
-
-    public String getUserType() {
-        return userType;
-    }
-
-    public void setUserType(String userType) {
-        this.userType = userType;
-    }
-}

+ 45 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/properties/DcucApproveProperties.java

@@ -0,0 +1,45 @@
+package com.dragonsoft.dcuc.approvegateway.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 审批配置
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2021/6/21
+ */
+@Data
+@ConfigurationProperties(prefix = "dcuc.approve")
+@Component
+public class DcucApproveProperties {
+
+    /**
+     * 竹云认证地址
+     */
+    private String bimIdentityUrl;
+
+    /**
+     * 竹云应用方标识
+     */
+    private String bimLoginId;
+
+    /**
+     * 竹云应用方秘钥
+     */
+    private String bimSecretKey;
+
+    /**
+     * 竹云 token 失效时间(单位秒)
+     */
+    private Integer bimTokenExpireSecond = 9 * 60;
+
+    /**
+     * 华为登陆过滤路径
+     */
+    private String huaweiLoginFilterUrl = "";
+
+}

+ 39 - 0
src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -0,0 +1,39 @@
+{
+  "properties": [
+    {
+      "name": "apollo.meta",
+      "type": "java.lang.String",
+      "description": "apollo配置中心地址(服务端)."
+    },
+    {
+      "name": "app.id",
+      "type": "java.lang.String",
+      "description": "apollo appid,当app.id没有配置情况下将读取spring.application.name值."
+    },
+    {
+      "name": "apollo.bootstrap.namespaces",
+      "type": "java.lang.String",
+      "description": "apollo 命名空间,支持多个逗号隔开。按命名空间顺序依次加载,可用于公共配置."
+    },
+    {
+      "name": "apollo.bootstrap.enabled",
+      "type": "java.lang.String",
+      "description": "apollo 是否启用apollo."
+    },
+    {
+      "name": "apollo.cluster",
+      "type": "java.lang.String",
+      "description": "apollo 集群,默认default."
+    },
+    {
+      "name": "apollo.autoUpdateInjectedSpringProperties",
+      "type": "java.lang.String",
+      "description": "apollo 取消placeholder的自动更新功能(默认true)."
+    },
+    {
+      "name": "duceap.license.enabled",
+      "type": "java.lang.String",
+      "description": "License认证开关,默认开启."
+    }
+  ]
+}

+ 80 - 0
src/main/resources/application-base.yml

@@ -0,0 +1,80 @@
+server:
+  port: 8866
+  servlet:
+    context-path: /approve-gateway
+spring:
+  application:
+    name: approve-gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+
+zuul:
+  retryable: true
+  # 这个配置必须保留,才会传递Authorization,cookie等
+  sensitive-headers:
+  host:
+    connect-timeout-millis: 60000
+    socket-timeout-millis: 60000
+
+ribbon:
+  ConnectTimeout: 60000 # 连接超时时间(ms)
+  ReadTimeout: 60000 # 通信超时时间(ms)
+  OkToRetryOnAllOperations: true # 是否对所有操作重试
+  MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
+  MaxAutoRetries: 1 # 同一实例的重试次数
+hystrix:
+  command:
+    default:
+      execution:
+        isolation:
+          thread:
+            timeoutInMillisecond: 60000 # 熔断超时时长:6000ms
+
+duceap:
+  license:
+    dataCacheMethod: apollo
+    #配置用来指定license对接的后端项目地址(格式:ip:port/context,如http://10.10.10.10:8080/ctx),默认使用HttpServletRequest.getLocalAddr()方法获取ip地址,应用在docker部署环境中无法获取机子的真实ip地址 考虑以配置参数的形式传入
+    #address: http://10.10.10.10:8080/ctx
+    enabled: false
+  apollo:
+    client:
+      host: http://192.168.10.27:8070 #配置中心地址(portal端)
+  security:
+    ##配置登陆方式,dids、dssoac、dcuc、huawei
+    type: dcuc
+    ##dids登录配置#
+    dids2:
+      ##应用代码
+      appCode: YHZX0000000000000001
+      useSSO: true
+      ##单点登录服务器地址
+      SSOLoginUrl: http://10.201.7.30:9090/didsserver/login
+      ##单点登录服务接口地址
+      SSOValidateUrl: http://10.201.7.30:9090/didsserver/serviceValidate
+      ##对接系统地址(ip:端口/上下文/login) 开发环境中, ip端口需要配置成代理的前端地址(请全程使用真实的ip 而不是localhost或者127.0.0.1,否则会导致登录失败)
+      SSOServiceUrl: http://10.11.0.240:1645/approve-gateway/login
+      accessType: 1
+      ##单点登录服务接口地址
+      webServiceUrl: http://10.201.7.30:9090/didsserver/webservices/
+      jndi: JDBC/DIDS
+      filterType: 1
+      ##若匹配该地址,则无须过滤
+      noFilterUrl: /api/v1/,/v1/,/v2/api-docs,services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/
+    dcuc:
+      casServerUrlPrefix: http://192.168.10.2:8877/sso
+      serverName: http://10.11.0.240:1645 http://10.254.11.185:1645
+      ignorePattern: /v2/api-docs,/api/v1/process-types,api/v1/process-type,api/v1/apply,services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/
+      ApiUrl: http://192.168.10.2:8860/dcuc
+      appCode: YHZX0000000000000001
+  security-access:
+    jwt:
+      enabled: false
+      user-token-header-name: userToken
+dcuc:
+  approve:
+    bim-identity-url: https://127.0.0.1:8443/bim-server
+    bim-login-id: app1
+    bim-secret-key: app1@123
+    huawei-login-filter-url: /approve-core/v2/api-docs,/approve-core/api/*,services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/

+ 11 - 92
src/main/resources/application.yml

@@ -1,95 +1,14 @@
-server:
-  port: 8866
-  servlet:
-    context-path: /approve-gateway
-
 spring:
-  application:
-    name: approve-gateway
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 127.0.0.1:8848
-
-zuul:
-  retryable: true
-  # 这个配置必须保留,才会传递Authorization,cookie等
-  sensitive-headers:
-  host:
-    connect-timeout-millis: 60000
-    socket-timeout-millis: 60000
-
-ribbon:
-  ConnectTimeout: 60000 # 连接超时时间(ms)
-  ReadTimeout: 60000 # 通信超时时间(ms)
-  OkToRetryOnAllOperations: true # 是否对所有操作重试
-  MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
-  MaxAutoRetries: 1 # 同一实例的重试次数
-hystrix:
-  command:
-    default:
-      execution:
-        isolation:
-          thread:
-            timeoutInMillisecond: 60000 # 熔断超时时长:6000ms
-
-duceap:
-  license:
-    dataCacheMethod: apollo
-    #配置用来指定license对接的后端项目地址(格式:ip:port/context,如http://10.10.10.10:8080/ctx),默认使用HttpServletRequest.getLocalAddr()方法获取ip地址,应用在docker部署环境中无法获取机子的真实ip地址 考虑以配置参数的形式传入
-    #address: http://10.10.10.10:8080/ctx
-    enabled: false
-  apollo:
-    client:
-      host: http://192.168.10.27:8070 #配置中心地址(portal端)
-  security:
-    ##配置登陆方式,dids、dssoac、dcuc
-    type: dids
-    ##dids登录配置#
-    dids2:
-      ##应用代码
-      appCode: YHZX0000000000000001
-      useSSO: true
-      ##单点登录服务器地址
-      SSOLoginUrl: http://10.201.7.30:9090/didsserver/login
-      ##单点登录服务接口地址
-      SSOValidateUrl: http://10.201.7.30:9090/didsserver/serviceValidate
-      ##对接系统地址(ip:端口/上下文/login) 开发环境中, ip端口需要配置成代理的前端地址(请全程使用真实的ip 而不是localhost或者127.0.0.1,否则会导致登录失败)
-      SSOServiceUrl: http://10.11.0.240:1645/approve-gateway/login
-      accessType: 1
-      ##单点登录服务接口地址
-      webServiceUrl: http://10.201.7.30:9090/didsserver/webservices/
-      jndi: JDBC/DIDS
-      filterType: 1
-      ##若匹配该地址,则无须过滤
-      noFilterUrl: /api/v1/,/v1/,/v2/api-docs,services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/
-    dcuc:
-      casServerUrlPrefix: http://192.168.10.2:8877/sso
-      serverName: http://10.11.0.240:1645
-      ignorePattern: /v2/api-docs,/api/v1/process-types,api/v1/process-type,api/v1/apply,services,hessian,commons,install.action,.xml,/install,/widgets-src/,/authorizationPage.html,/importAuthorizationFile.html,/license/LicenseManagerServlet,/authorizationFile/
-      ApiUrl: http://192.168.10.2:8860/dcuc
-      appCode: YHZX0000000000000001
-
-#=========================apollo配置信息============================#
+  profiles:
+    include: base
+#apollo配置
 apollo:
+  autoUpdateInjectedSpringProperties: false
   bootstrap:
-    enabled: false #是否启用apollo
-    namespaces: application, dragonsoft.approve-common #命名空间,默认application
-  cluster: default #集群,默认default
-  meta: http://192.168.10.27:8080 #配置中心地址(服务端)
-
-approve:
-  filter:
-    hw:
-      app:
-        secret: test
-        key: test
-      # 华为网关地址
-      host: http://10.11.1.164:11480
-      # 过滤器开关
-      enabled: false
-    dcuc:
-      # dcuc主机地址
-      host: http://192.168.10.2:8870
-      # 过滤器开关
-      enabled: true
+    enabled: false
+    namespaces: application,dragonsoft.dcuc
+  cluster: default
+  meta: http://192.168.10.80:8081
+duceap:
+  license:
+    enabled: false