diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/Application.java b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/Application.java
deleted file mode 100644
index f3762ce..0000000
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/Application.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.supwisdom.institute.backend.admin.aggr;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.annotation.Bean;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-
-import com.supwisdom.infras.online.doc.configuration.EnableInfrasOnlineDoc;
-import com.supwisdom.institute.backend.common.core.transmit.annotation.EnableSimpleUserTransmit;
-import com.supwisdom.institute.backend.common.framework.exception.EnableCustomExceptionHandler;
-
-@SpringBootApplication
-@EnableFeignClients
-
-@EnableSimpleUserTransmit
-@EnableCustomExceptionHandler
-
-@EnableInfrasOnlineDoc
-public class Application {
-
-  public static void main(String[] args) {
-    SpringApplication.run(Application.class, args);
-  }
-  
-  @Bean
-  public CorsFilter corsFilter() {
-    final CorsConfiguration config = new CorsConfiguration();
-    // config.setAllowCredentials(true);
-    config.addAllowedOrigin("*");
-    config.addAllowedHeader("*");
-    config.addAllowedMethod("*");
-
-    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-    source.registerCorsConfiguration("/v2/api-docs", config);
-
-    return new CorsFilter(source);
-  }
-
-}
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/configuration/Swagger2Config.java b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/configuration/Swagger2Config.java
deleted file mode 100644
index d6311e2..0000000
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/configuration/Swagger2Config.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.supwisdom.institute.backend.admin.aggr.configuration;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger.web.UiConfiguration;
-import springfox.documentation.swagger.web.UiConfigurationBuilder;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@Configuration
-@EnableSwagger2
-public class Swagger2Config {
-
-  @Value("${swagger2.apis.basePackage:com.supwisdom.institute}")
-  private String basePackage;
-
-  @Bean
-  public Docket createRestApi() {
-    return new Docket(DocumentationType.SWAGGER_2)
-        .apiInfo(apiInfo())
-        .select()
-        .apis(RequestHandlerSelectors.basePackage(basePackage))
-        .paths(PathSelectors.any())
-        .build()
-        ;
-  }
-
-  private ApiInfo apiInfo() {
-    Contact contact = new Contact("Backend Admin Aggregator API", "https://sw-backend-aggr.supwisdom.com/swagger-ui.html", ""); // name, url, email
-    return new ApiInfoBuilder()
-        .title("Backend Admin Aggregator APIs")
-        .description("管理后台 - 聚合接口")
-        .termsOfServiceUrl("http://www.supwisdom.com/")
-        .contact(contact)
-        .version("1.0")
-        .build();
-  }
-
-  @Bean
-  UiConfiguration uiConfig() {
-    
-    return UiConfigurationBuilder.builder().build();
-    
-//    return new UiConfiguration(null, // url
-//        "none", // docExpansion => none | list
-//        "alpha", // apiSorter => alpha
-//        "schema", // defaultModelRendering => schema
-//        UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,
-//        false, // enableJsonEditor => true || false
-//        true, // showRequestHeaders => true | false
-//        60000L); // requestTimeout => in milliseconds, defaults to null
-//    // (uses jquery xh timeout)
-  }
-
-}
diff --git a/aggr/admin/src/main/resources/application-docker.yml b/aggr/admin/src/main/resources/application-docker.yml
deleted file mode 100644
index 78c8a3d..0000000
--- a/aggr/admin/src/main/resources/application-docker.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-server:
-  port: ${SERVER_PORT:8443}
-  ssl:
-    enabled: ${SSL_ENABLED:true}
-    clientAuth: NEED
-    key-store: ${SSL_KEYSTORE_FILE:file:/certs/server/server.keystore}
-    key-store-password: ${SSL_KEYSTORE_PASSWORD:}
-    trust-store: ${SSL_TRUSTSTORE_FILE:file:/certs/server/server.truststore}
-    trust-store-password: ${SSL_TRUSTSTORE_PASSWORD:}
-  tomcat: 
-    accesslog: 
-      enabled: ${TOMCAT_ACCESSLOG_ENABLED:false}
-      buffered: ${TOMCAT_ACCESSLOG_BUFFERED:true}
-      directory: ${TOMCAT_ACCESSLOG_DIR:log}
-      prefix: ${TOMCAT_ACCESSLOG_PREFIX:sa-api-accesslog}
-      suffix: ${TOMCAT_ACCESSLOG_SUFFIX:.log}
-      file-date-format: ${TOMCAT_ACCESSLOG_FILE_DATE_FORMAT:.yyyy-MM-dd}
-      rotate: ${TOMCAT_ACCESSLOG_ROTATE:true}
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: INFO
-
-
-spring:
-  jackson:
-    time-zone: ${JACKSON_TIME_ZONE:Asia/Shanghai}
-
-
-##
-# online-doc
-#
-infras.online-doc.enabled: ${INFRAS_ONLINE_DOC_ENABLED:false}
-infras.online-doc.md-docs.staitc.path: ${INFRAS_ONLINE_DOC_MD_DOCS_STATIC_PATH:/doc/}
-infras.online-doc.api-docs.staitc.path: ${INFRAS_ONLINE_DOC_API_DOCS_STATIC_PATH:/api-docs/}
-
-
-##
-# server url for feign
-#
-sw-backend-base-api: 
-  uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
-  client-auth:
-    enabled: ${SW_BACKEND_BASE_API_CLIENT_AUTH_ENABLED:true}
-    key-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEY_PASSWORD:}
-    key-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
-    key-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
-    trust-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
-    trust-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
-
-sw-backend-system-api: 
-  uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
-  client-auth:
-    enabled: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_ENABLED:true}
-    key-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEY_PASSWORD:}
-    key-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
-    key-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
-    trust-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
-    trust-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
-
-sw-backend-biz-api: 
-  uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-admin-sa}
-  client-auth:
-    enabled: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_ENABLED:true}
-    key-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEY_PASSWORD:}
-    key-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
-    key-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
-    trust-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
-    trust-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
diff --git a/aggr/admin/src/main/resources/application.yml b/aggr/admin/src/main/resources/application.yml
deleted file mode 100644
index 8ad7215..0000000
--- a/aggr/admin/src/main/resources/application.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-server:
-  port: 8081
-  ssl:
-    enabled: false
-
-
-##
-# logging
-#
-logging:
-  level:
-    root: INFO
-    com.supwisdom: DEBUG
-#    org.springframework.web: INFO
-#    org.springframework.cloud.openfeign: INFO
-
-
-swagger2.apis.basePackage: com.supwisdom.institute
-
-
-spring:
-  jackson:
-    time-zone: Asia/Shanghai
-
-
-feign:
-  client:
-    config:
-      default:
-        #errorDecoder: com.supwisdom.leaveschool.common.config.BaseExceptionErrorDecoder
-        connectTimeout: 12000
-        readTimeout: 12000
-        loggerLevel: full
-  hystrix:
-    enabled: true
-  httpclient:
-    enabled: true
-
-hystrix:
-  command:
-    default:
-      execution:
-        timeout:
-          enabled: true
-        isolation:
-          thread:
-            timeoutInMilliseconds: 12000
-
-
-##
-# infras.online-doc
-#
-infras.online-doc.enabled: true
-infras.online-doc.md-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/doc/
-infras.online-doc.api-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/api-docs/
-
-
-##
-# server url for feign
-#
-sw-backend-base-api:
-  uri: http://localhost:8082
-
-sw-backend-system-api: 
-  uri: http://localhost:8082
-
-sw-backend-biz-api: 
-  uri: http://localhost:8082
diff --git a/aggr/admin/src/main/resources/bootstrap.yml b/aggr/admin/src/main/resources/bootstrap.yml
deleted file mode 100644
index b2a926b..0000000
--- a/aggr/admin/src/main/resources/bootstrap.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-spring:
-  application:
-    name: sw-backend-admin-aggr
diff --git a/aggr/pom.xml b/aggr/pom.xml
deleted file mode 100644
index 1ec35e6..0000000
--- a/aggr/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  
-  <parent>
-    <groupId>com.supwisdom.institute</groupId>
-    <artifactId>sw-backend-parent</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-  </parent>
-  
-  <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-aggr-parent</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Supwisdom Backend Framework Aggregator API</name>
-  <description>Supwisdom Backend Framework Aggregator API project</description>
-
-  <modules>
-    <module>admin</module>
-  </modules>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/aggr/admin/.gitignore b/bff/admin/.gitignore
similarity index 100%
rename from aggr/admin/.gitignore
rename to bff/admin/.gitignore
diff --git a/bff/admin/Dockerfile b/bff/admin/Dockerfile
index 372661c..b91c9f4 100644
--- a/bff/admin/Dockerfile
+++ b/bff/admin/Dockerfile
@@ -1,4 +1,4 @@
-FROM harbor.supwisdom.com/institute/openjdk:8-jre
+FROM harbor.supwisdom.com/institute/openjdk:8-jre-alpine
 
 ENV ENABLE_JMX_SSL=false
 ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=docker
diff --git a/bff/admin/pom.xml b/bff/admin/pom.xml
index 0f600d2..d141279 100644
--- a/bff/admin/pom.xml
+++ b/bff/admin/pom.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -19,7 +19,7 @@
   <description>Supwisdom Backend Framework Admin Backend for Frontend project</description>
 
   <properties>
-    <start-class>com.supwisdom.institute.admin.bff.Application</start-class>
+    <start-class>com.supwisdom.institute.backend.admin.bff.Application</start-class>
   </properties>
 
   <dependencies>
@@ -31,13 +31,6 @@
     </dependency>
 
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-
-    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter</artifactId>
     </dependency>
@@ -48,27 +41,28 @@
       <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
 
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-webflux</artifactId>
-    </dependency>
-    
+
     <dependency>
       <groupId>org.springframework.cloud</groupId>
-      <artifactId>spring-cloud-starter-gateway</artifactId>
+      <artifactId>spring-cloud-starter-openfeign</artifactId>
     </dependency>
 
 
-    <!-- <dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-web</artifactId>
+    </dependency>
+
+    <dependency>
       <groupId>com.supwisdom.infras</groupId>
       <artifactId>infras-online-doc</artifactId>
-    </dependency> -->
+    </dependency>
 
 
     <!-- <dependency>
       <groupId>com.supwisdom.infras</groupId>
       <artifactId>infras-mvc</artifactId>
-    </dependency>
+    </dependency> -->
 
     <dependency>
       <groupId>com.supwisdom.infras</groupId>
@@ -83,34 +77,6 @@
     <dependency>
       <groupId>com.supwisdom.infras</groupId>
       <artifactId>infras-lang</artifactId>
-    </dependency> -->
-
-
-    <!-- <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-security</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.springframework.boot</groupId>
-          <artifactId>spring-boot-starter-web</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency> -->
-
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-security</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>io.jsonwebtoken</groupId>
-      <artifactId>jjwt</artifactId>
-      <version>0.9.1</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework.security</groupId>
-      <artifactId>spring-security-cas</artifactId>
     </dependency>
 
 
@@ -118,13 +84,19 @@
       <groupId>com.supwisdom.institute</groupId>
       <artifactId>sw-backend-common-framework</artifactId>
     </dependency>
-
-
+    
+    
+    <!-- openfeign's dependency -->
     <dependency>
-      <groupId>com.alibaba</groupId>
-      <artifactId>fastjson</artifactId>
+      <groupId>com.netflix.feign</groupId>
+      <artifactId>feign-httpclient</artifactId>
     </dependency>
 
+    <!-- <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+    </dependency> -->
+
 
     <dependency>
       <groupId>io.springfox</groupId>
@@ -136,6 +108,12 @@
     </dependency>
 
 
+    <dependency>
+      <groupId>mysql</groupId>
+      <artifactId>mysql-connector-java</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+
     <!-- 热部署，无需重启项目 -->
     <dependency>
       <groupId>org.springframework.boot</groupId>
@@ -143,6 +121,7 @@
       <scope>runtime</scope>
     </dependency>
 
+
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
@@ -180,6 +159,7 @@
       <!-- <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
+        <version>2.4.3</version>
         <configuration>
           <encoding>${project.build.sourceEncoding}</encoding>
         </configuration>
@@ -196,24 +176,24 @@
               <overwrite>true</overwrite>
               <resources>
                 <resource>
-                  <directory>${basedir}/../../doc</directory>
+                  <directory>${basedir}/../doc</directory>
                 </resource>
               </resources>
             </configuration>
           </execution>
           <execution>
-            <id>copy-certs-jwt-resources</id>
+            <id>copy-api-docs-resources</id>
             <phase>package</phase>
             <goals>
               <goal>copy-resources</goal>
             </goals>
             <configuration>
               <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/certs/jwt</outputDirectory>
+              <outputDirectory>${basedir}/target/api-docs</outputDirectory>
               <overwrite>true</overwrite>
               <resources>
                 <resource>
-                  <directory>${basedir}/../../certs/jwt</directory>
+                  <directory>${basedir}/../api-docs</directory>
                 </resource>
               </resources>
             </configuration>
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
index baaeade..a5098a6 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/Application.java
@@ -2,82 +2,41 @@
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpResponse;
-import org.springframework.web.cors.reactive.CorsUtils;
-import org.springframework.web.server.ServerWebExchange;
-import org.springframework.web.server.WebFilter;
-import org.springframework.web.server.WebFilterChain;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
 
-import reactor.core.publisher.Mono;
-
-import com.supwisdom.infras.security.reactive.basic.EnableInfrasBasicWebFluxApi;
+import com.supwisdom.infras.online.doc.configuration.EnableInfrasOnlineDoc;
+import com.supwisdom.institute.backend.common.core.transmit.annotation.EnableSimpleUserTransmit;
 import com.supwisdom.institute.backend.common.framework.exception.EnableCustomExceptionHandler;
 
-import static org.springframework.web.cors.CorsConfiguration.ALL;
-
 @SpringBootApplication
+@EnableFeignClients
 
+@EnableSimpleUserTransmit
 @EnableCustomExceptionHandler
 
-//@EnableInfrasOnlineDoc
-
-//@EnableInfrasCasSecurity
-
-//@EnableInfrasBasicApi
-//@EnableInfrasJWTApi
-
-@EnableInfrasBasicWebFluxApi
+@EnableInfrasOnlineDoc
 public class Application {
 
   public static void main(String[] args) {
     SpringApplication.run(Application.class, args);
   }
   
-//  @Bean
-//  public CorsFilter corsFilter() {
-//    final CorsConfiguration config = new CorsConfiguration();
-//    //config.setAllowCredentials(true);
-//    config.addAllowedOrigin("*");
-//    config.addAllowedHeader("*");
-//    config.addAllowedMethod("*");
-//
-//    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-//    source.registerCorsConfiguration("/v2/api-docs", config);
-//    source.registerCorsConfiguration("/api/**", config);  // 对 /api/** 下的请求，支持 cors 跨域请求，如不需要可以注释
-//
-//    return new CorsFilter(source);
-//  }
-
   @Bean
-  public WebFilter corsFilter() {
-    return (ServerWebExchange ctx, WebFilterChain chain) -> {
-      ServerHttpRequest request = ctx.getRequest();
-      if (!CorsUtils.isCorsRequest(request)) {
-        return chain.filter(ctx);
-      }
-      HttpHeaders requestHeaders = request.getHeaders();
-      ServerHttpResponse response = ctx.getResponse();
-      HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
-      HttpHeaders headers = response.getHeaders();
-      headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
-      headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
-      if (requestMethod != null) {
-        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
-      }
-      headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
-      headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);
-      // headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
-      if (request.getMethod() == HttpMethod.OPTIONS) {
-        response.setStatusCode(HttpStatus.OK);
-        return Mono.empty();
-      }
-      return chain.filter(ctx);
-    };
+  public CorsFilter corsFilter() {
+    final CorsConfiguration config = new CorsConfiguration();
+    // config.setAllowCredentials(true);
+    config.addAllowedOrigin("*");
+    config.addAllowedHeader("*");
+    config.addAllowedMethod("*");
+
+    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+    source.registerCorsConfiguration("/v2/api-docs", config);
+
+    return new CorsFilter(source);
   }
 
 }
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/.gitkeep
similarity index 100%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/.gitkeep
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/.gitkeep
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/base/AdminBaseController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/base/AdminBaseController.java
similarity index 88%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/base/AdminBaseController.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/base/AdminBaseController.java
index 2411d5e..62927da 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/base/AdminBaseController.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/base/AdminBaseController.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.controller.base;
+package com.supwisdom.institute.backend.admin.bff.apis.controller.base;
 
 import org.springframework.util.MimeTypeUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/biz/AdminBizController.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/biz/AdminBizController.java
similarity index 80%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/biz/AdminBizController.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/biz/AdminBizController.java
index 30dfbcd..8ce27ec 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/controller/biz/AdminBizController.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/controller/biz/AdminBizController.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.controller.biz;
+package com.supwisdom.institute.backend.admin.bff.apis.controller.biz;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.MimeTypeUtils;
@@ -6,7 +6,7 @@
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.supwisdom.institute.backend.admin.aggr.apis.service.biz.BizService;
+import com.supwisdom.institute.backend.admin.bff.apis.service.biz.BizService;
 
 @RestController
 @RequestMapping(value = "/api/bff/v1/admin/biz")
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/model/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/model/.gitkeep
similarity index 100%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/model/.gitkeep
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/model/.gitkeep
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/model/biz/Biz.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/model/biz/Biz.java
similarity index 87%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/model/biz/Biz.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/model/biz/Biz.java
index b36e117..f1d904e 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/model/biz/Biz.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/model/biz/Biz.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.model.biz;
+package com.supwisdom.institute.backend.admin.bff.apis.model.biz;
 
 import java.util.Date;
 
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/.gitkeep
similarity index 100%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/.gitkeep
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/.gitkeep
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/configuration/BaseFeignClientConfiguration.java
similarity index 94%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/configuration/BaseFeignClientConfiguration.java
index 1e4e614..3b327f5 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/configuration/BaseFeignClientConfiguration.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.configuration;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.base.configuration;
 
 import org.apache.http.conn.HttpClientConnectionManager;
 import org.springframework.beans.factory.annotation.Value;
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java
similarity index 78%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java
index 586942a..1ff4981 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.v1.admin;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.base.v1.admin;
 
 import feign.hystrix.FallbackFactory;
 
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java
similarity index 65%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java
index 133309c..99b04b8 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java
@@ -1,8 +1,8 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.v1.admin;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.base.v1.admin;
 
 import org.springframework.cloud.openfeign.FeignClient;
 
-import com.supwisdom.institute.backend.admin.aggr.apis.remote.base.configuration.BaseFeignClientConfiguration;
+import com.supwisdom.institute.backend.admin.bff.apis.remote.base.configuration.BaseFeignClientConfiguration;
 
 @FeignClient(
     configuration = {BaseFeignClientConfiguration.class},
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/configuration/BizFeignClientConfiguration.java
similarity index 94%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/configuration/BizFeignClientConfiguration.java
index ca60e7d..04d8547 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/configuration/BizFeignClientConfiguration.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.configuration;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.biz.configuration;
 
 import org.apache.http.conn.HttpClientConnectionManager;
 import org.springframework.beans.factory.annotation.Value;
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
similarity index 85%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
index d27ce1f..bd220ef 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/v1/admin/AdminBizRemoteFallbackFactory.java
@@ -1,10 +1,10 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.v1.admin;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.biz.v1.admin;
 
 import org.springframework.stereotype.Component;
 
 import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.aggr.apis.model.biz.Biz;
-import com.supwisdom.institute.backend.admin.aggr.apis.remote.exception.FallbackError;
+import com.supwisdom.institute.backend.admin.bff.apis.model.biz.Biz;
+import com.supwisdom.institute.backend.admin.bff.apis.remote.exception.FallbackError;
 
 import feign.hystrix.FallbackFactory;
 
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/v1/admin/AdminBizRemoteFeignClient.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
similarity index 84%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
index 99ec029..a5628c1 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/biz/v1/admin/AdminBizRemoteFeignClient.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.v1.admin;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.biz.v1.admin;
 
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -8,8 +8,8 @@
 import org.springframework.web.bind.annotation.RequestParam;
 
 import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.aggr.apis.model.biz.Biz;
-import com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.configuration.BizFeignClientConfiguration;
+import com.supwisdom.institute.backend.admin.bff.apis.model.biz.Biz;
+import com.supwisdom.institute.backend.admin.bff.apis.remote.biz.configuration.BizFeignClientConfiguration;
 
 @FeignClient(
     configuration = {BizFeignClientConfiguration.class},
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/exception/FallbackError.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/exception/FallbackError.java
similarity index 83%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/exception/FallbackError.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/exception/FallbackError.java
index 51ae782..debd57d 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/exception/FallbackError.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/exception/FallbackError.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.remote.exception;
+package com.supwisdom.institute.backend.admin.bff.apis.remote.exception;
 
 import com.alibaba.fastjson.JSONObject;
 
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/service/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/service/.gitkeep
similarity index 100%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/service/.gitkeep
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/service/.gitkeep
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/service/biz/BizService.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/service/biz/BizService.java
similarity index 71%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/service/biz/BizService.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/service/biz/BizService.java
index acc2ac7..2ed6c10 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/service/biz/BizService.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/service/biz/BizService.java
@@ -1,11 +1,11 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.service.biz;
+package com.supwisdom.institute.backend.admin.bff.apis.service.biz;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.v1.admin.AdminBizRemoteFeignClient;
-import com.supwisdom.institute.backend.admin.aggr.apis.vo.biz.response.data.BizQueryResponseData;
+import com.supwisdom.institute.backend.admin.bff.apis.remote.biz.v1.admin.AdminBizRemoteFeignClient;
+import com.supwisdom.institute.backend.admin.bff.apis.vo.biz.response.data.BizQueryResponseData;
 
 @Service
 public class BizService {
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/vo/.gitkeep b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/vo/.gitkeep
similarity index 100%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/vo/.gitkeep
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/vo/.gitkeep
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/vo/biz/response/data/BizQueryResponseData.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/vo/biz/response/data/BizQueryResponseData.java
similarity index 83%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/vo/biz/response/data/BizQueryResponseData.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/vo/biz/response/data/BizQueryResponseData.java
index 815cc6a..cc9c465 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/vo/biz/response/data/BizQueryResponseData.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/vo/biz/response/data/BizQueryResponseData.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.apis.vo.biz.response.data;
+package com.supwisdom.institute.backend.admin.bff.apis.vo.biz.response.data;
 
 import java.util.List;
 import java.util.Map;
@@ -6,7 +6,7 @@
 import lombok.Getter;
 import lombok.Setter;
 
-import com.supwisdom.institute.backend.admin.aggr.apis.model.biz.Biz;
+import com.supwisdom.institute.backend.admin.bff.apis.model.biz.Biz;
 import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
 
 public class BizQueryResponseData implements IApiQueryResponseData<Biz> {
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/configuration/FeignBasicAuthRequestInterceptor.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/FeignBasicAuthRequestInterceptor.java
similarity index 97%
rename from aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/configuration/FeignBasicAuthRequestInterceptor.java
rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/FeignBasicAuthRequestInterceptor.java
index a0f7c62..2a22b46 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/configuration/FeignBasicAuthRequestInterceptor.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/FeignBasicAuthRequestInterceptor.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.aggr.configuration;
+package com.supwisdom.institute.backend.admin.bff.configuration;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/GatewayFilterConfig.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/GatewayFilterConfig.java
deleted file mode 100644
index 5084419..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/GatewayFilterConfig.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import com.supwisdom.institute.backend.admin.bff.gateway.filter.factory.SimpleUserTransmitGatewayFilterFactory;
-
-@Deprecated
-//@Configuration
-public class GatewayFilterConfig {
-
-  @Bean
-  public SimpleUserTransmitGatewayFilterFactory simpleUserTransmitGatewayFilterFactory() {
-    return new SimpleUserTransmitGatewayFilterFactory();
-  }
-  
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/InfrasFilterSecurityInterceptorConfig.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/InfrasFilterSecurityInterceptorConfig.java
deleted file mode 100644
index 10410c9..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/InfrasFilterSecurityInterceptorConfig.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.access.AccessDecisionManager;
-import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
-
-//import com.supwisdom.infras.security.web.access.intercept.InfrasFilterSecurityInterceptor;
-import com.supwisdom.institute.backend.admin.bff.security.web.access.MyAccessDecisionManager;
-import com.supwisdom.institute.backend.admin.bff.security.web.access.intercept.InMemeryFilterInvocationSecurityMetadataSource;
-//import com.supwisdom.institute.backend.admin.bff.security.web.access.intercept.MyFilterSecurityInterceptor;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-@Configuration
-public class InfrasFilterSecurityInterceptorConfig {
-
-//  @Bean
-//  public FilterInvocationSecurityMetadataSource securityMetadataSource() {
-//    MyFilterInvocationSecurityMetadataSource securityMetadataSource = new MyFilterInvocationSecurityMetadataSource();
-//    log.debug("InfrasFilterSecurityInterceptorConfig securityMetadataSource is {}", securityMetadataSource);
-//
-//    return securityMetadataSource;
-//  }
-  
-  @Bean
-  public FilterInvocationSecurityMetadataSource securityMetadataSource() {
-    InMemeryFilterInvocationSecurityMetadataSource securityMetadataSource = new InMemeryFilterInvocationSecurityMetadataSource();
-    log.debug("InfrasFilterSecurityInterceptorConfig securityMetadataSource is {}", securityMetadataSource);
-
-    return securityMetadataSource;
-  }
-  
-  
-  @Bean
-  public AccessDecisionManager accessDecisionManager() {
-    MyAccessDecisionManager accessDecisionManager = new MyAccessDecisionManager();
-    log.debug("InfrasFilterSecurityInterceptorConfig accessDecisionManager is {}", accessDecisionManager);
-
-    return accessDecisionManager;
-  }
-  
-//  @Bean
-//  public InfrasFilterSecurityInterceptor infrasFilterSecurityInterceptor() throws Exception {
-//    MyFilterSecurityInterceptor myFilterSecurityInterceptor = new MyFilterSecurityInterceptor();
-//    myFilterSecurityInterceptor.setRejectPublicInvocations(true);
-//    log.debug("InfrasFilterSecurityInterceptorConfig infrasFilterSecurityInterceptor is {}", myFilterSecurityInterceptor);
-//
-//    return myFilterSecurityInterceptor;
-//  }
-  
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/ListenerConfig.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/ListenerConfig.java
deleted file mode 100644
index 3f94d53..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/ListenerConfig.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
-
-import com.supwisdom.institute.backend.admin.bff.listener.MyFilterInvocationSecurityMetadataSourceRefreshListener;
-
-@Configuration
-public class ListenerConfig {
-  
-  @Autowired
-  private FilterInvocationSecurityMetadataSource securityMetadataSource;
-  
-  @Bean
-  public ServletListenerRegistrationBean<MyFilterInvocationSecurityMetadataSourceRefreshListener> serssionListenerBean(){
-    MyFilterInvocationSecurityMetadataSourceRefreshListener listener = new MyFilterInvocationSecurityMetadataSourceRefreshListener();
-    listener.setSecurityMetadataSource(securityMetadataSource);
-    
-    ServletListenerRegistrationBean<MyFilterInvocationSecurityMetadataSourceRefreshListener> refreshListener = 
-        new ServletListenerRegistrationBean<MyFilterInvocationSecurityMetadataSourceRefreshListener>(listener);
-    return refreshListener;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java
index 9559532..1c8a23b 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java
+++ b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/Swagger2Config.java
@@ -1,32 +1,22 @@
 package com.supwisdom.institute.backend.admin.bff.configuration;
 
-import java.util.List;
-
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.AuthorizationScopeBuilder;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.BasicAuth;
 import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
 import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
 import springfox.documentation.spring.web.plugins.Docket;
 import springfox.documentation.swagger.web.UiConfiguration;
 import springfox.documentation.swagger.web.UiConfigurationBuilder;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
-import static com.google.common.collect.Lists.*;
 
-
-//@Configuration
-//@EnableSwagger2
+@Configuration
+@EnableSwagger2
 public class Swagger2Config {
 
   @Value("${swagger2.apis.basePackage:com.supwisdom.institute}")
@@ -35,8 +25,6 @@
   @Bean
   public Docket createRestApi() {
     return new Docket(DocumentationType.SWAGGER_2)
-        .securitySchemes(securitySchemes())
-        .securityContexts(securityContexts())
         .apiInfo(apiInfo())
         .select()
         .apis(RequestHandlerSelectors.basePackage(basePackage))
@@ -46,36 +34,18 @@
   }
 
   private ApiInfo apiInfo() {
-    Contact contact = new Contact("Backend Admin BFF", "https://sw-backend-api.supwisdom.com/swagger-ui.html", ""); // name, url, email
+    Contact contact = new Contact("Backend Admin Aggregator API", "https://sw-backend-aggr.supwisdom.com/swagger-ui.html", ""); // name, url, email
     return new ApiInfoBuilder()
-        .title("Backend Admin BFF APIs")
-        .description("管理后台 - 后端接口")
+        .title("Backend Admin Aggregator APIs")
+        .description("管理后台 - 聚合接口")
         .termsOfServiceUrl("http://www.supwisdom.com/")
         .contact(contact)
         .version("1.0")
         .build();
   }
-  
-  private List<SecurityScheme> securitySchemes() {
-    return newArrayList(new BasicAuth("sample"));
-  }
-  
-  private List<SecurityContext> securityContexts() {
-    AuthorizationScope[] authScopes = new AuthorizationScope[1];
-    authScopes[0] = new AuthorizationScopeBuilder()
-            .scope("read")
-            .description("read access")
-            .build();
-    SecurityReference securityReference = SecurityReference.builder()
-            .reference("sample")
-            .scopes(authScopes)
-            .build();
-    
-    return newArrayList(SecurityContext.builder().securityReferences(newArrayList(securityReference)).build());
-  }
 
   @Bean
-  public UiConfiguration uiConfig() {
+  UiConfiguration uiConfig() {
     
     return UiConfigurationBuilder.builder().build();
     
@@ -89,26 +59,5 @@
 //        60000L); // requestTimeout => in milliseconds, defaults to null
 //    // (uses jquery xh timeout)
   }
-  
-  
-//  @Bean
-//  public SecurityConfiguration oauth2() {
-//      return SecurityConfigurationBuilder.builder()
-//          .clientId("common")
-//          .clientSecret("secret")
-//          .scopeSeparator(" ")
-//          .useBasicAuthenticationWithAccessCodeGrant(true)
-//          .build();
-//  }
-//  
-//  @Bean
-//  public SecurityConfiguration basic() {
-//      return SecurityConfigurationBuilder.builder()
-//          .clientId("common")
-//          .clientSecret("secret")
-//          .scopeSeparator(" ")
-//          .useBasicAuthenticationWithAccessCodeGrant(true)
-//          .build();
-//  }
 
 }
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/filter/factory/SimpleUserTransmitGatewayFilterFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/filter/factory/SimpleUserTransmitGatewayFilterFactory.java
deleted file mode 100644
index 68b6ad3..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/filter/factory/SimpleUserTransmitGatewayFilterFactory.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.gateway.filter.factory;
-
-import java.net.URLDecoder;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.extern.slf4j.Slf4j;
-
-import org.springframework.cloud.gateway.filter.GatewayFilter;
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.ReactiveSecurityContextHolder;
-import org.springframework.security.core.context.SecurityContext;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.security.core.userdetails.MyUser;
-import com.supwisdom.institute.backend.common.core.transmit.user.User;
-import com.supwisdom.institute.backend.common.core.transmit.user.UserContext;
-
-@Deprecated
-@Slf4j
-public class SimpleUserTransmitGatewayFilterFactory extends AbstractGatewayFilterFactory<SimpleUserTransmitGatewayFilterFactory.Config> {
-  
-  public SimpleUserTransmitGatewayFilterFactory() {
-    super(Config.class);
-  }
-
-  @Override
-  public GatewayFilter apply(Config config) {
-    return (exchange, chain) -> {
-      
-      
-//      Mono<ServerWebExchange> m = Mono.fromCallable(() ->{
-//        MyUser myUser = ReactiveSecurityContextHolder.getContext()
-//            .filter(c -> c.getAuthentication() != null)
-//            .map(SecurityContext::getAuthentication)
-//            .map(Authentication::getPrincipal)
-//            .cast(MyUser.class)
-//            .block()
-//          ;
-//          try {
-//            String jsonUser = JSONObject.toJSONString(myUser);
-//            log.info(jsonUser);
-//            String headerValue = new String(URLDecoder.decode(jsonUser,"UTF-8"));
-//            ServerHttpRequest request = exchange.getRequest().mutate()
-//                .header(UserContext.KEY_USER_IN_HTTP_HEADER, headerValue)
-//                .build();
-//            log.debug("User set ok");
-//            return exchange.mutate().request(request).build();
-//          } catch (Exception e) {
-//            log.warn("User set error", e);
-//          }
-//          return exchange;
-//      })
-//      .publishOn(Schedulers.elastic())
-//      ;
-//      return m.flatMap(ex -> chain.filter(ex));
-
-      
-      return ReactiveSecurityContextHolder.getContext()
-          .filter(c -> c.getAuthentication() != null && c.getAuthentication().isAuthenticated() && c.getAuthentication().getPrincipal() instanceof MyUser)
-          .map(SecurityContext::getAuthentication)
-          .map(Authentication::getPrincipal)
-          .cast(MyUser.class)
-          .map(myUser -> {
-            try {
-              User user = new User(myUser.getUsername(), myUser.getRoles(), myUser.getAttributes());
-              
-              String jsonUser = JSONObject.toJSONString(user);
-              log.info(jsonUser);
-              String headerValue = new String(URLDecoder.decode(jsonUser,"UTF-8"));
-              ServerHttpRequest request = exchange.getRequest().mutate()
-                  .header(UserContext.KEY_USER_IN_HTTP_HEADER, headerValue)
-                  .build();
-              log.debug("User set ok");
-              return exchange.mutate().request(request).build();
-            } catch (Exception e) {
-              log.warn("User set error", e);
-            }
-            return exchange;
-          })
-          .flatMap(ex -> chain.filter(ex))
-        ;
-    };
-  }
-
-  public static class Config {
-    @Getter
-    @Setter
-    private String a;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/route/CustomRouteLocator.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/route/CustomRouteLocator.java
deleted file mode 100644
index fc90c15..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/route/CustomRouteLocator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.gateway.route;
-
-import org.springframework.cloud.gateway.route.Route;
-import org.springframework.cloud.gateway.route.RouteLocator;
-
-import reactor.core.publisher.Flux;
-
-public class CustomRouteLocator implements RouteLocator {
-
-  @Override
-  public Flux<Route> getRoutes() {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/listener/MyFilterInvocationSecurityMetadataSourceRefreshListener.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/listener/MyFilterInvocationSecurityMetadataSourceRefreshListener.java
deleted file mode 100644
index 2c6d2bd..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/listener/MyFilterInvocationSecurityMetadataSourceRefreshListener.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.listener;
-
-import java.util.Timer;
-import java.util.TimerTask;
-
-import javax.servlet.ServletContextEvent;
-
-import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
-import org.springframework.web.context.ContextLoaderListener;
-
-import com.supwisdom.institute.backend.admin.bff.security.web.access.intercept.MyFilterInvocationSecurityMetadataSource;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class MyFilterInvocationSecurityMetadataSourceRefreshListener extends ContextLoaderListener {
-
-  private FilterInvocationSecurityMetadataSource securityMetadataSource;
-  public void setSecurityMetadataSource(FilterInvocationSecurityMetadataSource securityMetadataSource) {
-    this.securityMetadataSource = securityMetadataSource;
-  }
-
-  private Timer timer = null;
-
-  private int delay = 1; // 启动后，延迟1分钟
-  private int period = 2; // 定时，每隔2分钟
-
-  @Override
-  public void contextInitialized(ServletContextEvent event) {
-    // super.contextInitialized(event);
-    log.info("MyFilterInvocationSecurityMetadataSourceRefreshListener.contextInitialized");
-
-    if (securityMetadataSource instanceof MyFilterInvocationSecurityMetadataSource) {
-      timer = new Timer("定时刷新权限信息", true);
-
-      timer.scheduleAtFixedRate(new TimerTask() {
-
-        @Override
-        public void run() {
-          ((MyFilterInvocationSecurityMetadataSource) securityMetadataSource).refreshRequestMap();
-        }
-
-      }, 1000 * 60 * delay, 1000 * 60 * period);
-
-    }
-
-  }
-
-  @Override
-  public void contextDestroyed(ServletContextEvent event) {
-    // super.contextDestroyed(event);
-    log.info("MyFilterInvocationSecurityMetadataSourceRefreshListener.contextDestroyed");
-
-    if (timer != null) {
-      timer.cancel();
-    }
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/MyAccessDecisionManager.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/MyAccessDecisionManager.java
deleted file mode 100644
index 56fe469..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/MyAccessDecisionManager.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.security.web.access;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.springframework.security.access.AccessDecisionManager;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.authentication.InsufficientAuthenticationException;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-
-public class MyAccessDecisionManager implements AccessDecisionManager {
-
-  @Override
-  public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)
-      throws AccessDeniedException, InsufficientAuthenticationException {
-
-    if (null == configAttributes || configAttributes.size() <= 0) {
-      return;
-    }
-    
-    ConfigAttribute ca;
-    String needRole;
-    for (Iterator<ConfigAttribute> iter = configAttributes.iterator(); iter.hasNext();) {
-      ca = iter.next();
-      needRole = ca.getAttribute();
-      for (GrantedAuthority ga : authentication.getAuthorities()) { // authentication 为在注释1 中循环添加到 GrantedAuthority 对象中的权限信息集合
-        if (needRole.trim().equals(ga.getAuthority())) {
-          return;
-        }
-      }
-    }
-    
-    throw new AccessDeniedException("no right");
-  }
-
-  @Override
-  public boolean supports(ConfigAttribute attribute) {
-    return true;
-  }
-
-  @Override
-  public boolean supports(Class<?> clazz) {
-    return true;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/intercept/InMemeryFilterInvocationSecurityMetadataSource.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/intercept/InMemeryFilterInvocationSecurityMetadataSource.java
deleted file mode 100644
index 5666b1a..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/intercept/InMemeryFilterInvocationSecurityMetadataSource.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.security.web.access.intercept;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.access.SecurityConfig;
-import org.springframework.security.web.FilterInvocation;
-import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
-import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-import org.springframework.security.web.util.matcher.RequestMatcher;
-
-public class InMemeryFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
-  
-  private Map<RequestMatcher, Collection<ConfigAttribute>> requestMap = null;
-  
-  private void loadRequestMap() {
-    if (requestMap == null) {
-      requestMap = new LinkedHashMap<RequestMatcher, Collection<ConfigAttribute>>();
-      
-      AntPathRequestMatcher requestMatcher0 = new AntPathRequestMatcher("/api/**");
-      Collection<ConfigAttribute> attributes0 = new ArrayList<ConfigAttribute>();  // FIXME: 返回当前请求的url 对应的 角色代码
-      attributes0.add(new SecurityConfig("user"));
-      requestMap.put(requestMatcher0, attributes0);
-
-      
-      AntPathRequestMatcher requestMatcher = new AntPathRequestMatcher("/web/**");
-      Collection<ConfigAttribute> attributes = new ArrayList<ConfigAttribute>();  // FIXME: 返回当前请求的url 对应的 角色代码
-      attributes.add(new SecurityConfig("user"));
-      requestMap.put(requestMatcher, attributes);
-    }
-  }
-
-  /**
-   * 获取当前请求关联的所有角色code {@link SecurityConfig} 
-   * 用于和用户拥有的角色code 进行比对
-   */
-  @Override
-  public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
-    
-    if (requestMap == null) {
-      loadRequestMap();
-    }
-
-    HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
-    
-    RequestMatcher requestMatcher;
-    for(Iterator<RequestMatcher> iter = requestMap.keySet().iterator(); iter.hasNext(); ) {
-      requestMatcher = iter.next();
-      
-      if(requestMatcher.matches(request)) {
-        return requestMap.get(requestMatcher);
-      }
-    }
-    
-    return null;
-  }
-
-  @Override
-  public Collection<ConfigAttribute> getAllConfigAttributes() {
-
-    return null;
-  }
-
-  @Override
-  public boolean supports(Class<?> clazz) {
-
-    return true;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/intercept/MyFilterInvocationSecurityMetadataSource.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/intercept/MyFilterInvocationSecurityMetadataSource.java
deleted file mode 100644
index 90f4b53..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/web/access/intercept/MyFilterInvocationSecurityMetadataSource.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.security.web.access.intercept;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.access.SecurityConfig;
-import org.springframework.security.web.FilterInvocation;
-import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
-import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-import org.springframework.security.web.util.matcher.RequestMatcher;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class MyFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
-  
-//  @Autowired
-//  User1SecurityPermissionRemoteService user1SecurityPermissionRemoteService;
-
-  private Map<RequestMatcher, Collection<ConfigAttribute>> requestMap = null;
-
-  public void refreshRequestMap() {
-    
-    log.info("MyFilterInvocationSecurityMetadataSource.refreshRequestMap");
-    
-    requestMap = null;
-    loadRequestMap();
-  }
-  
-  private void loadRequestMap() {
-    synchronized (MyFilterInvocationSecurityMetadataSource.class) {
-
-      if (requestMap == null) {
-        requestMap = new LinkedHashMap<RequestMatcher, Collection<ConfigAttribute>>();
-        
-//        String applicationCode = Constants.APPLICATION_CODE;
-//        SecurityPermission securityPermission = user1SecurityPermissionRemoteService.loadPermissionsByAppcode(applicationCode, null);
-//        if (securityPermission == null) {
-//          return;
-//        }
-//  
-//        Map<String, String> mapRoles = new HashMap<String, String>();
-//        for (Role r : securityPermission.getRoles()) {
-//          mapRoles.put(r.getId(), r.getCode());
-//        }
-//  
-//        Map<String, Collection<ConfigAttribute>> permissionRoles = new HashMap<String, Collection<ConfigAttribute>>();
-//        for (RolePermission rp : securityPermission.getRolePermissions()) {
-//          if (mapRoles.containsKey(rp.getRoleId())) {
-//            if (!permissionRoles.containsKey(rp.getPermissionId())) {
-//              permissionRoles.put(rp.getPermissionId(), new ArrayList<ConfigAttribute>());
-//            }
-//            ConfigAttribute ca = new SecurityConfig(mapRoles.get(rp.getRoleId()));
-//            permissionRoles.get(rp.getPermissionId()).add(ca);
-//          }
-//        }
-//  
-//        for (Permission p : securityPermission.getPermissions()) {
-//          Collection<ConfigAttribute> attributes = permissionRoles.get(p.getId());
-//          if (attributes == null) {
-//            attributes = new ArrayList<ConfigAttribute>();
-//          }
-//          
-//          if (p.getUrl() == null || p.getUrl().isEmpty()) {
-//            continue;
-//          }
-//          
-//          String pattern = p.getUrl();
-//          String httpMethod = null;
-//          
-//          if (pattern.startsWith("GET ") || pattern.startsWith("POST ") || pattern.startsWith("PUT ") || pattern.startsWith("DELETE ")) {
-//            httpMethod = pattern.substring(0, pattern.indexOf(" "));
-//            pattern = pattern.substring(pattern.indexOf(" ")+1);
-//          }
-//          
-//          AntPathRequestMatcher requestMatcher = new AntPathRequestMatcher(pattern, httpMethod);
-//  
-//          requestMap.put(requestMatcher, attributes);
-//        }
-      }
-      
-    }
-  }
-
-  /**
-   * 获取当前请求关联的所有角色code {@link SecurityConfig} 用于和用户拥有的角色code 进行比对
-   */
-  @Override
-  public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
-
-    if (requestMap == null) {
-      loadRequestMap();
-    }
-
-    HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
-
-    RequestMatcher requestMatcher;
-    for (Iterator<RequestMatcher> iter = requestMap.keySet().iterator(); iter.hasNext();) {
-      requestMatcher = iter.next();
-
-      if (requestMatcher.matches(request)) {
-        return requestMap.get(requestMatcher);
-      }
-    }
-
-    return null;
-  }
-
-  @Override
-  public Collection<ConfigAttribute> getAllConfigAttributes() {
-
-    return null;
-  }
-
-  @Override
-  public boolean supports(Class<?> clazz) {
-
-    return true;
-  }
-
-}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/utils/AuthenticationUtil.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/utils/AuthenticationUtil.java
deleted file mode 100644
index b2ab8e8..0000000
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/utils/AuthenticationUtil.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.supwisdom.institute.backend.admin.bff.utils;
-
-import java.util.Collection;
-
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-import com.supwisdom.institute.backend.admin.bff.security.core.userdetails.MyUser;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class AuthenticationUtil {
-
-  public static String currentUsername() {
-
-    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-    if (authentication == null) {
-      log.error("authentication is null");
-      return null;
-    }
-
-    log.debug("authentication is {}", authentication.getPrincipal());
-
-    if (!authentication.isAuthenticated()) {
-      log.error("authentication is not authenticated");
-      return null;
-    }
-
-    if (authentication.getPrincipal() == null) {
-      log.error("authentication's principal is null");
-      return null;
-    }
-
-    log.debug("authentication's principal is {}", authentication.getPrincipal());
-
-    if (authentication.getPrincipal() instanceof MyUser) {
-      return ((MyUser) authentication.getPrincipal()).getUsername();
-    }
-
-    return null;
-  }
-
-  public static MyUser currentUser() {
-
-    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-    if (authentication == null) {
-      log.error("authentication is null");
-      return null;
-    }
-
-    log.debug("authentication is {}", authentication.getPrincipal());
-
-    if (!authentication.isAuthenticated()) {
-      log.error("authentication is not authenticated");
-      return null;
-    }
-
-    if (authentication.getPrincipal() == null) {
-      log.error("authentication's principal is null");
-      return null;
-    }
-
-    log.debug("authentication's principal is {}", authentication.getPrincipal());
-
-    if (authentication.getPrincipal() instanceof MyUser) {
-      return (MyUser) authentication.getPrincipal();
-    }
-
-    return null;
-  }
-
-  public static boolean isAdministrator() {
-    MyUser myUser = AuthenticationUtil.currentUser();
-    if (myUser != null) {
-      Collection<GrantedAuthority> grantedAuthoritys = myUser.getAuthorities();
-      if (grantedAuthoritys != null && grantedAuthoritys.size() > 0) {
-        for (GrantedAuthority grantedAuthority : grantedAuthoritys) {
-          if ("administrator".equals(grantedAuthority.getAuthority())) {
-            return true;
-          }
-        }
-      }
-    }
-    return false;
-  }
-
-}
diff --git a/bff/admin/src/main/resources/application-docker.yml b/bff/admin/src/main/resources/application-docker.yml
index 9fb465a..78c8a3d 100644
--- a/bff/admin/src/main/resources/application-docker.yml
+++ b/bff/admin/src/main/resources/application-docker.yml
@@ -33,41 +33,7 @@
 
 
 ##
-# spring cloud gateway
-#
-  cloud:
-    gateway:
-      metrics:
-        enabled: true
-      routes:
-      - id: aggr-api
-        uri: ${SW_BACKEND_AGGR_API_URI:https://sw-backend-admin-aggr}
-        predicates:
-        - Path=/api/aggr/**
-        filters:
-        - RewritePath=/api/aggr/(?<suffix>.*), /$\{suffix}
-      - id: base-api
-        uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
-        predicates:
-        - Path=/api/base/**
-        filters:
-        - RewritePath=/api/base/(?<suffix>.*), /$\{suffix}
-      - id: system-api
-        uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
-        predicates:
-        - Path=/api/system/**
-        filters:
-        - RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
-      - id: biz-api
-        uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-admin-sa}
-        predicates:
-        - Path=/api/biz/**
-        filters:
-        - RewritePath=/api/biz/(?<suffix>.*), /$\{suffix}
-
-
-##
-# infras.online-doc
+# online-doc
 #
 infras.online-doc.enabled: ${INFRAS_ONLINE_DOC_ENABLED:false}
 infras.online-doc.md-docs.staitc.path: ${INFRAS_ONLINE_DOC_MD_DOCS_STATIC_PATH:/doc/}
@@ -75,31 +41,34 @@
 
 
 ##
-# infras.security basic
+# server url for feign
 #
-infras.security.basic.enabled: ${INFRAS_SECURITY_BASIC_ENABLED:true}
+sw-backend-base-api: 
+  uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
+  client-auth:
+    enabled: ${SW_BACKEND_BASE_API_CLIENT_AUTH_ENABLED:true}
+    key-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEY_PASSWORD:}
+    key-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
+    key-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
+    trust-store: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
+    trust-store-password: ${SW_BACKEND_BASE_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
 
+sw-backend-system-api: 
+  uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
+  client-auth:
+    enabled: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_ENABLED:true}
+    key-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEY_PASSWORD:}
+    key-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
+    key-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
+    trust-store: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
+    trust-store-password: ${SW_BACKEND_SYSTEM_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
 
-##
-# infras.security jwt
-#
-infras.security.jwt.enabled: ${INFRAS_SECURITY_JWT_ENABLED:false}
-
-infras.security.jwt.public-key-pem: ${INFRAS_SECURITY_JWT_PUBLIC_KEY_PEM:}
-infras.security.jwt.private-key-pem-pkcs8: ${INFRAS_SECURITY_JWT_PRIVATE_KEY_PEM_PKCS8:}
-
-
-##
-# infras.security cas
-#
-infras.security.cas.enabled: ${INFRAS_SECURITY_CAS_ENABLED:false}
-
-#应用访问地址
-app.server.host.url: ${APP_SERVER_HOST_URL:https://localhost:8443}
-#应用登录地址
-app.login.url: ${APP_LOGIN_URL:/cas/login}
-#应用登出地址
-app.logout.url: ${APP_LOGOUT_URL:/cas/logout}
-
-#CAS服务地址
-cas.server.host.url: ${CAS_SERVER_HOST_URL:https://cas-server/cas}
+sw-backend-biz-api: 
+  uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-admin-sa}
+  client-auth:
+    enabled: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_ENABLED:true}
+    key-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEY_PASSWORD:}
+    key-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_FILE:file:/certs/common/common.keystore}
+    key-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_KEYSTORE_PASSWORD:}
+    trust-store: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_FILE:file:/certs/common/common.truststore}
+    trust-store-password: ${SW_BACKEND_BIZ_API_CLIENT_AUTH_TRUSTSTORE_PASSWORD:}
diff --git a/bff/admin/src/main/resources/application.yml b/bff/admin/src/main/resources/application.yml
index 5893a41..8ad7215 100644
--- a/bff/admin/src/main/resources/application.yml
+++ b/bff/admin/src/main/resources/application.yml
@@ -1,5 +1,7 @@
 server:
-  port: 8080
+  port: 8081
+  ssl:
+    enabled: false
 
 
 ##
@@ -13,84 +15,54 @@
 #    org.springframework.cloud.openfeign: INFO
 
 
+swagger2.apis.basePackage: com.supwisdom.institute
+
+
 spring:
   jackson:
     time-zone: Asia/Shanghai
 
-##
-# spring cloud gateway
-#
-  cloud:
-    gateway:
-      metrics:
-        enabled: true
-      routes:
-      - id: aggr-api
-        uri: http://localhost:8081
-        predicates:
-        - Path=/api/aggr/**
-        filters:
-        - RewritePath=/api/aggr/(?<suffix>.*), /$\{suffix}
-      - id: base-api
-        uri: http://localhost:8082
-        predicates:
-        - Path=/api/base/**
-        filters:
-        - RewritePath=/api/base/(?<suffix>.*), /$\{suffix}
-      - id: system-api
-        uri: http://localhost:8082
-        predicates:
-        - Path=/api/system/**
-        filters:
-        - RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
-      - id: biz-api
-        uri: http://localhost:8082
-        predicates:
-        - Path=/api/biz/**
-        filters:
-        - RewritePath=/api/biz/(?<suffix>.*), /$\{suffix}
+
+feign:
+  client:
+    config:
+      default:
+        #errorDecoder: com.supwisdom.leaveschool.common.config.BaseExceptionErrorDecoder
+        connectTimeout: 12000
+        readTimeout: 12000
+        loggerLevel: full
+  hystrix:
+    enabled: true
+  httpclient:
+    enabled: true
+
+hystrix:
+  command:
+    default:
+      execution:
+        timeout:
+          enabled: true
+        isolation:
+          thread:
+            timeoutInMilliseconds: 12000
 
 
 ##
 # infras.online-doc
 #
-infras.online-doc.enabled: false
+infras.online-doc.enabled: true
 infras.online-doc.md-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/doc/
 infras.online-doc.api-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/api-docs/
 
 
 ##
-# infras.security basic
+# server url for feign
 #
-infras.security.basic.enabled: true
+sw-backend-base-api:
+  uri: http://localhost:8082
 
+sw-backend-system-api: 
+  uri: http://localhost:8082
 
-##
-# infras.security jwt
-#
-infras.security.jwt.enabled: false
-
-#infras.security.jwt.public-key-pem: |-
-#  -----BEGIN PUBLIC KEY-----
-#  MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBQw6TmvJ+nOuRaLoHsZJGIBzRg/wbskNv6UevL3/nQioYooptPfdIHVzPiKRVT5+DW5+nqzav3DOxY+HYKjO9nFjYdj0sgvRae6iVpa5Ji1wbDKOvwIDNukgnKbqvFXX2Isfl0RxeN3uEKdjeFGGFdr38I3ADCNKFNxtbmfqvjQIDAQAB
-#  -----END PUBLIC KEY-----
-#infras.security.jwt.private-key-pem-pkcs8: |-
-#  -----BEGIN PRIVATE KEY-----
-#  MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMFDDpOa8n6c65FougexkkYgHNGD/BuyQ2/pR68vf+dCKhiiim0990gdXM+IpFVPn4Nbn6erNq/cM7Fj4dgqM72cWNh2PSyC9Fp7qJWlrkmLXBsMo6/AgM26SCcpuq8VdfYix+XRHF43e4Qp2N4UYYV2vfwjcAMI0oU3G1uZ+q+NAgMBAAECgYA7jA7UuhxXmMAYmJ0hO7xnMQPQJouqeP3AYK9+sfMF7WQNHR/r0vj7Vli/dUm1I4hxr+x8fAuomf+ve6gds7sm+v2JHLzEIyPPiogoC7IcBmjJ3yVzW/26cXeOmTiPC/fW2g4BpYxSM8HLDaSkrtqzy8e9ijlzMpHBvvwLikufnQJBAOXaqIPuZ7Vm/JwQHAmX2HV+Qk6GMi/H7mL8X0AaW68w+Iccdbz1hzmMBfdn5NMmx2AOwoBAVivgjt0a1OfksHMCQQDXPtXxwFy4dQ4TbPu8L38P8s/bPo9ib1YkEMp57yBw+IvxB7jnpA9rUYTfZM/HpVP7r9rfVEUylVXXzhz1qx//AkEApWJOTBdW8bQ3YEdLFS/3pJqDNSLjq3OMuBZkpqgQfh6bRAQbRynW8XYpuNk9URye6iPUmRkxp4J86ORseqoWtwJAJb5a/b1hhObhxP5DVkht23oUgLmDoxsq28AmASOxaJ3szCMyhUv7eDIfPp0K4lNXWrcHhkncqHYPS3xVD68mOQJAV4SRDdWpgAbQOUODotohE48RxrabHo0l228CJ/pnm0q7gplPs4iSNJ2eijFuOMXfKkq3z/vxiNSA59FcdoCOHQ==
-#  -----END PRIVATE KEY-----
-
-
-##
-# infras.security cas
-#
-infras.security.cas.enabled: false
-
-#应用访问地址
-app.server.host.url: http://localhost:8080
-#应用登录地址
-app.login.url: /cas/login
-#应用登出地址
-app.logout.url: /cas/logout
-
-#CAS服务地址
-cas.server.host.url: https://cas.supwisdom.com/cas
+sw-backend-biz-api: 
+  uri: http://localhost:8082
diff --git a/bff/admin/src/main/resources/bootstrap.yml b/bff/admin/src/main/resources/bootstrap.yml
index 2df1be7..b2a926b 100644
--- a/bff/admin/src/main/resources/bootstrap.yml
+++ b/bff/admin/src/main/resources/bootstrap.yml
@@ -1,3 +1,3 @@
 spring:
   application:
-    name: sw-backend-admin-bff
+    name: sw-backend-admin-aggr
diff --git a/aggr/admin/.gitignore b/gateway/.gitignore
similarity index 100%
copy from aggr/admin/.gitignore
copy to gateway/.gitignore
diff --git a/aggr/admin/Dockerfile b/gateway/Dockerfile
similarity index 88%
rename from aggr/admin/Dockerfile
rename to gateway/Dockerfile
index b91c9f4..372661c 100644
--- a/aggr/admin/Dockerfile
+++ b/gateway/Dockerfile
@@ -1,4 +1,4 @@
-FROM harbor.supwisdom.com/institute/openjdk:8-jre-alpine
+FROM harbor.supwisdom.com/institute/openjdk:8-jre
 
 ENV ENABLE_JMX_SSL=false
 ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=docker
diff --git a/aggr/admin/pom.xml b/gateway/pom.xml
similarity index 76%
rename from aggr/admin/pom.xml
rename to gateway/pom.xml
index 013b8c2..7f39a11 100644
--- a/aggr/admin/pom.xml
+++ b/gateway/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -7,19 +7,18 @@
     <groupId>com.supwisdom.institute</groupId>
     <artifactId>sw-backend-parent</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <relativePath>../../</relativePath>
   </parent>
 
   <groupId>com.supwisdom.institute</groupId>
-  <artifactId>sw-backend-admin-aggr</artifactId>
+  <artifactId>sw-backend-gateway</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
 
-  <name>Supwisdom Backend Framework Admin Aggregator API</name>
-  <description>Supwisdom Backend Framework Admin Aggregator API project</description>
+  <name>Supwisdom Backend Framework Gateway</name>
+  <description>Supwisdom Backend Framework Gateway project</description>
 
   <properties>
-    <start-class>com.supwisdom.institute.backend.admin.aggr.Application</start-class>
+    <start-class>com.supwisdom.institute.backend.gateway.Application</start-class>
   </properties>
 
   <dependencies>
@@ -31,6 +30,13 @@
     </dependency>
 
     <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+
+    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter</artifactId>
     </dependency>
@@ -41,29 +47,28 @@
       <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
 
-
-    <dependency>
-      <groupId>org.springframework.cloud</groupId>
-      <artifactId>spring-cloud-starter-openfeign</artifactId>
-    </dependency>
-
-
     <dependency>
       <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter-web</artifactId>
+      <artifactId>spring-boot-starter-webflux</artifactId>
     </dependency>
-
+    
     <dependency>
-      <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-online-doc</artifactId>
+      <groupId>org.springframework.cloud</groupId>
+      <artifactId>spring-cloud-starter-gateway</artifactId>
     </dependency>
 
 
     <!-- <dependency>
       <groupId>com.supwisdom.infras</groupId>
-      <artifactId>infras-mvc</artifactId>
+      <artifactId>infras-online-doc</artifactId>
     </dependency> -->
 
+
+    <!-- <dependency>
+      <groupId>com.supwisdom.infras</groupId>
+      <artifactId>infras-mvc</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>com.supwisdom.infras</groupId>
       <artifactId>infras-object-mapper</artifactId>
@@ -77,6 +82,28 @@
     <dependency>
       <groupId>com.supwisdom.infras</groupId>
       <artifactId>infras-lang</artifactId>
+    </dependency> -->
+
+
+    <dependency>
+      <groupId>com.supwisdom.infras</groupId>
+      <artifactId>infras-security</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-security</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>io.jsonwebtoken</groupId>
+      <artifactId>jjwt</artifactId>
+      <version>0.9.1</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework.security</groupId>
+      <artifactId>spring-security-cas</artifactId>
     </dependency>
 
 
@@ -84,18 +111,12 @@
       <groupId>com.supwisdom.institute</groupId>
       <artifactId>sw-backend-common-framework</artifactId>
     </dependency>
-    
-    
-    <!-- openfeign's dependency -->
-    <dependency>
-      <groupId>com.netflix.feign</groupId>
-      <artifactId>feign-httpclient</artifactId>
-    </dependency>
 
-    <!-- <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-    </dependency> -->
+
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>fastjson</artifactId>
+    </dependency>
 
 
     <dependency>
@@ -108,12 +129,6 @@
     </dependency>
 
 
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-
     <!-- 热部署，无需重启项目 -->
     <dependency>
       <groupId>org.springframework.boot</groupId>
@@ -121,7 +136,6 @@
       <scope>runtime</scope>
     </dependency>
 
-
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
@@ -159,7 +173,6 @@
       <!-- <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
-        <version>2.4.3</version>
         <configuration>
           <encoding>${project.build.sourceEncoding}</encoding>
         </configuration>
@@ -176,24 +189,24 @@
               <overwrite>true</overwrite>
               <resources>
                 <resource>
-                  <directory>${basedir}/../doc</directory>
+                  <directory>${basedir}/../../doc</directory>
                 </resource>
               </resources>
             </configuration>
           </execution>
           <execution>
-            <id>copy-api-docs-resources</id>
+            <id>copy-certs-jwt-resources</id>
             <phase>package</phase>
             <goals>
               <goal>copy-resources</goal>
             </goals>
             <configuration>
               <encoding>utf-8</encoding>
-              <outputDirectory>${basedir}/target/api-docs</outputDirectory>
+              <outputDirectory>${basedir}/target/certs/jwt</outputDirectory>
               <overwrite>true</overwrite>
               <resources>
                 <resource>
-                  <directory>${basedir}/../api-docs</directory>
+                  <directory>${basedir}/../../certs/jwt</directory>
                 </resource>
               </resources>
             </configuration>
diff --git a/gateway/src/main/java/com/supwisdom/infras/security/reactive/InfrasSecurityReactiveAutoConfiguration.java b/gateway/src/main/java/com/supwisdom/infras/security/reactive/InfrasSecurityReactiveAutoConfiguration.java
new file mode 100644
index 0000000..1ea28f4
--- /dev/null
+++ b/gateway/src/main/java/com/supwisdom/infras/security/reactive/InfrasSecurityReactiveAutoConfiguration.java
@@ -0,0 +1,66 @@
+package com.supwisdom.infras.security.reactive;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
+import org.springframework.security.core.userdetails.MapReactiveUserDetailsService;
+import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.User.UserBuilder;
+import org.springframework.security.crypto.factory.PasswordEncoderFactories;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.server.WebFilterChainProxy;
+
+import com.supwisdom.infras.security.api.InfrasApiUserController;
+
+import reactor.core.publisher.Flux;
+
+@Configuration
+@ConditionalOnClass({ Flux.class, EnableWebFluxSecurity.class, WebFilterChainProxy.class })
+public class InfrasSecurityReactiveAutoConfiguration {
+
+  private static final Logger logger = LoggerFactory.getLogger(InfrasSecurityReactiveAutoConfiguration.class);
+  
+  @Bean
+  @ConditionalOnMissingBean({PasswordEncoder.class})
+  public PasswordEncoder passwordEncoder() {
+    
+    PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
+    logger.debug("InfrasSecurityReactiveAutoConfiguration passwordEncoder is {}", passwordEncoder);
+    
+    return passwordEncoder;
+  }
+
+  @Bean
+  @ConditionalOnMissingBean({ReactiveUserDetailsService.class})
+  public MapReactiveUserDetailsService reactiveUserDetailsService() {
+    
+    // ensure the passwords are encoded properly
+    @SuppressWarnings("deprecation")
+    UserBuilder users = User.withDefaultPasswordEncoder();
+    
+    MapReactiveUserDetailsService reactiveUserDetailsService = new MapReactiveUserDetailsService(
+        users.username("user").password("password").roles("USER").build(),
+        users.username("admin").password("password").roles("USER","ADMIN").build()
+        );
+    logger.debug("InfrasSecurityReactiveAutoConfiguration reactiveUserDetailsService is {}", reactiveUserDetailsService);
+    
+    return reactiveUserDetailsService;
+  }
+  
+  
+  
+  @Bean
+  @ConditionalOnMissingBean(InfrasApiUserController.class)
+  public InfrasApiUserController infrasApiUserController() {
+    InfrasApiUserController infrasApiUserController = new InfrasApiUserController();
+    logger.debug("InfrasSecurityReactiveAutoConfiguration infrasApiUserController is {}", infrasApiUserController);
+    
+    return infrasApiUserController;
+  }
+  
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/infras/security/reactive/basic/BasicWebFluxSecurityConfiguration.java b/gateway/src/main/java/com/supwisdom/infras/security/reactive/basic/BasicWebFluxSecurityConfiguration.java
similarity index 79%
rename from bff/admin/src/main/java/com/supwisdom/infras/security/reactive/basic/BasicWebFluxSecurityConfiguration.java
rename to gateway/src/main/java/com/supwisdom/infras/security/reactive/basic/BasicWebFluxSecurityConfiguration.java
index 6d71175..aa792e1 100644
--- a/bff/admin/src/main/java/com/supwisdom/infras/security/reactive/basic/BasicWebFluxSecurityConfiguration.java
+++ b/gateway/src/main/java/com/supwisdom/infras/security/reactive/basic/BasicWebFluxSecurityConfiguration.java
@@ -4,8 +4,10 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.HttpMethod;
+import org.springframework.security.config.web.server.SecurityWebFiltersOrder;
 import org.springframework.security.config.web.server.ServerHttpSecurity;
 import org.springframework.security.web.server.SecurityWebFilterChain;
+import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatchers;
 
 @Configuration
 @ConditionalOnProperty(name="infras.security.basic.enabled", havingValue="true")
@@ -14,6 +16,7 @@
   @Bean
   public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
       http
+          .securityMatcher(ServerWebExchangeMatchers.pathMatchers("/api/**"))
           .authorizeExchange()
               .pathMatchers(HttpMethod.OPTIONS).permitAll()
               .pathMatchers("/api/public/**", "/api/open/**").permitAll()
@@ -22,6 +25,8 @@
               .pathMatchers("/api/**").authenticated()
               .anyExchange().authenticated();
       
+      //http.addFilterAt(webFilter, SecurityWebFiltersOrder.LAST);
+      
       http.httpBasic();
       
       http.csrf().disable();
diff --git a/bff/admin/src/main/java/com/supwisdom/infras/security/reactive/basic/EnableInfrasBasicWebFluxApi.java b/gateway/src/main/java/com/supwisdom/infras/security/reactive/basic/EnableInfrasBasicWebFluxApi.java
similarity index 100%
rename from bff/admin/src/main/java/com/supwisdom/infras/security/reactive/basic/EnableInfrasBasicWebFluxApi.java
rename to gateway/src/main/java/com/supwisdom/infras/security/reactive/basic/EnableInfrasBasicWebFluxApi.java
diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/Application.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/Application.java
new file mode 100644
index 0000000..aea520c
--- /dev/null
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/Application.java
@@ -0,0 +1,83 @@
+package com.supwisdom.institute.backend.gateway;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.cors.reactive.CorsUtils;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
+
+import reactor.core.publisher.Mono;
+
+import com.supwisdom.infras.security.reactive.basic.EnableInfrasBasicWebFluxApi;
+import com.supwisdom.institute.backend.common.framework.exception.EnableCustomExceptionHandler;
+
+import static org.springframework.web.cors.CorsConfiguration.ALL;
+
+@SpringBootApplication
+
+@EnableCustomExceptionHandler
+
+//@EnableInfrasOnlineDoc
+
+//@EnableInfrasCasSecurity
+
+//@EnableInfrasBasicApi
+//@EnableInfrasJWTApi
+
+@EnableInfrasBasicWebFluxApi
+public class Application {
+
+  public static void main(String[] args) {
+    SpringApplication.run(Application.class, args);
+  }
+  
+//  @Bean
+//  public CorsFilter corsFilter() {
+//    final CorsConfiguration config = new CorsConfiguration();
+//    //config.setAllowCredentials(true);
+//    config.addAllowedOrigin("*");
+//    config.addAllowedHeader("*");
+//    config.addAllowedMethod("*");
+//
+//    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+//    source.registerCorsConfiguration("/v2/api-docs", config);
+//    source.registerCorsConfiguration("/api/**", config);  // 对 /api/** 下的请求，支持 cors 跨域请求，如不需要可以注释
+//
+//    return new CorsFilter(source);
+//  }
+
+  @Bean
+  public WebFilter corsFilter() {
+    return (ServerWebExchange ctx, WebFilterChain chain) -> {
+      ServerHttpRequest request = ctx.getRequest();
+      if (!CorsUtils.isCorsRequest(request)) {
+        return chain.filter(ctx);
+      }
+      HttpHeaders requestHeaders = request.getHeaders();
+      ServerHttpResponse response = ctx.getResponse();
+      HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
+      HttpHeaders headers = response.getHeaders();
+      headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
+      headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
+      if (requestMethod != null) {
+        headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
+      }
+      headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
+      headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);
+      // headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
+      if (request.getMethod() == HttpMethod.OPTIONS) {
+        response.setStatusCode(HttpStatus.OK);
+        return Mono.empty();
+      }
+      return chain.filter(ctx);
+    };
+  }
+
+}
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/GlobalFilterConfig.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/GlobalFilterConfig.java
similarity index 65%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/GlobalFilterConfig.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/GlobalFilterConfig.java
index e9e6282..2e71ac7 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/GlobalFilterConfig.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/GlobalFilterConfig.java
@@ -1,9 +1,9 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
+package com.supwisdom.institute.backend.gateway.configuration;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import com.supwisdom.institute.backend.admin.bff.gateway.filter.SimpleUserTransmitGlobalFilter;
+import com.supwisdom.institute.backend.gateway.filter.SimpleUserTransmitGlobalFilter;
 
 @Configuration
 public class GlobalFilterConfig {
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/PasswordEncoderConfig.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/PasswordEncoderConfig.java
similarity index 93%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/PasswordEncoderConfig.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/PasswordEncoderConfig.java
index b44d152..f98770f 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/PasswordEncoderConfig.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/PasswordEncoderConfig.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
+package com.supwisdom.institute.backend.gateway.configuration;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/UserDetailsServiceConfig.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/UserDetailsServiceConfig.java
similarity index 75%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/UserDetailsServiceConfig.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/UserDetailsServiceConfig.java
index 63945f4..cafbc17 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/configuration/UserDetailsServiceConfig.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/configuration/UserDetailsServiceConfig.java
@@ -1,10 +1,10 @@
-package com.supwisdom.institute.backend.admin.bff.configuration;
+package com.supwisdom.institute.backend.gateway.configuration;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import com.supwisdom.institute.backend.admin.bff.security.core.userdetails.InMemeryUserDetailsService;
-import com.supwisdom.institute.backend.admin.bff.security.core.userdetails.MyUserDetailsService;
+import com.supwisdom.institute.backend.gateway.security.core.userdetails.InMemeryUserDetailsService;
+import com.supwisdom.institute.backend.gateway.security.core.userdetails.MyUserDetailsService;
 
 import lombok.extern.slf4j.Slf4j;
 
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/filter/SimpleUserTransmitGlobalFilter.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java
similarity index 92%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/filter/SimpleUserTransmitGlobalFilter.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java
index a9bf2ae..4cd8faf 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/gateway/filter/SimpleUserTransmitGlobalFilter.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.bff.gateway.filter;
+package com.supwisdom.institute.backend.gateway.filter;
 
 import java.net.URLDecoder;
 
@@ -14,7 +14,7 @@
 import org.springframework.web.server.ServerWebExchange;
 
 import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.security.core.userdetails.MyUser;
+import com.supwisdom.institute.backend.gateway.security.core.userdetails.MyUser;
 import com.supwisdom.institute.backend.common.core.transmit.user.User;
 import com.supwisdom.institute.backend.common.core.transmit.user.UserContext;
 
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/InMemeryUserDetailsService.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/InMemeryUserDetailsService.java
similarity index 96%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/InMemeryUserDetailsService.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/InMemeryUserDetailsService.java
index bfe9a21..4e761a5 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/InMemeryUserDetailsService.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/InMemeryUserDetailsService.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.bff.security.core.userdetails;
+package com.supwisdom.institute.backend.gateway.security.core.userdetails;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/MyUser.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUser.java
similarity index 94%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/MyUser.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUser.java
index b662422..7148839 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/MyUser.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUser.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.bff.security.core.userdetails;
+package com.supwisdom.institute.backend.gateway.security.core.userdetails;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/MyUserDetailsService.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java
similarity index 96%
rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/MyUserDetailsService.java
rename to gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java
index 110af6b..e5bfec8 100644
--- a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/security/core/userdetails/MyUserDetailsService.java
+++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/security/core/userdetails/MyUserDetailsService.java
@@ -1,4 +1,4 @@
-package com.supwisdom.institute.backend.admin.bff.security.core.userdetails;
+package com.supwisdom.institute.backend.gateway.security.core.userdetails;
 
 import java.util.ArrayList;
 import java.util.Calendar;
diff --git a/gateway/src/main/resources/application-docker.yml b/gateway/src/main/resources/application-docker.yml
new file mode 100644
index 0000000..b5ea861
--- /dev/null
+++ b/gateway/src/main/resources/application-docker.yml
@@ -0,0 +1,105 @@
+server:
+  port: ${SERVER_PORT:8443}
+  ssl:
+    enabled: ${SSL_ENABLED:true}
+    clientAuth: NEED
+    key-store: ${SSL_KEYSTORE_FILE:file:/certs/server/server.keystore}
+    key-store-password: ${SSL_KEYSTORE_PASSWORD:}
+    trust-store: ${SSL_TRUSTSTORE_FILE:file:/certs/server/server.truststore}
+    trust-store-password: ${SSL_TRUSTSTORE_PASSWORD:}
+  tomcat: 
+    accesslog: 
+      enabled: ${TOMCAT_ACCESSLOG_ENABLED:false}
+      buffered: ${TOMCAT_ACCESSLOG_BUFFERED:true}
+      directory: ${TOMCAT_ACCESSLOG_DIR:log}
+      prefix: ${TOMCAT_ACCESSLOG_PREFIX:sa-api-accesslog}
+      suffix: ${TOMCAT_ACCESSLOG_SUFFIX:.log}
+      file-date-format: ${TOMCAT_ACCESSLOG_FILE_DATE_FORMAT:.yyyy-MM-dd}
+      rotate: ${TOMCAT_ACCESSLOG_ROTATE:true}
+
+
+##
+# logging
+#
+logging:
+  level:
+    root: INFO
+    com.supwisdom: INFO
+
+
+spring:
+  jackson:
+    time-zone: ${JACKSON_TIME_ZONE:Asia/Shanghai}
+
+
+##
+# spring cloud gateway
+#
+  cloud:
+    gateway:
+      metrics:
+        enabled: true
+      routes:
+      - id: bff-api
+        uri: ${SW_BACKEND_AGGR_API_URI:https://sw-backend-admin-bff}
+        predicates:
+        - Path=/api/bff/**
+        filters:
+        - RewritePath=/api/bff/(?<suffix>.*), /$\{suffix}
+      - id: base-api
+        uri: ${SW_BACKEND_BASE_API_URI:https://sw-backend-admin-sa}
+        predicates:
+        - Path=/api/base/**
+        filters:
+        - RewritePath=/api/base/(?<suffix>.*), /$\{suffix}
+      - id: system-api
+        uri: ${SW_BACKEND_SYSTEM_API_URI:https://sw-backend-admin-sa}
+        predicates:
+        - Path=/api/system/**
+        filters:
+        - RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
+      - id: biz-api
+        uri: ${SW_BACKEND_BIZ_API_URI:https://sw-backend-admin-sa}
+        predicates:
+        - Path=/api/biz/**
+        filters:
+        - RewritePath=/api/biz/(?<suffix>.*), /$\{suffix}
+
+
+##
+# infras.online-doc
+#
+infras.online-doc.enabled: ${INFRAS_ONLINE_DOC_ENABLED:false}
+infras.online-doc.md-docs.staitc.path: ${INFRAS_ONLINE_DOC_MD_DOCS_STATIC_PATH:/doc/}
+infras.online-doc.api-docs.staitc.path: ${INFRAS_ONLINE_DOC_API_DOCS_STATIC_PATH:/api-docs/}
+
+
+##
+# infras.security basic
+#
+infras.security.basic.enabled: ${INFRAS_SECURITY_BASIC_ENABLED:true}
+
+
+##
+# infras.security jwt
+#
+infras.security.jwt.enabled: ${INFRAS_SECURITY_JWT_ENABLED:false}
+
+infras.security.jwt.public-key-pem: ${INFRAS_SECURITY_JWT_PUBLIC_KEY_PEM:}
+infras.security.jwt.private-key-pem-pkcs8: ${INFRAS_SECURITY_JWT_PRIVATE_KEY_PEM_PKCS8:}
+
+
+##
+# infras.security cas
+#
+infras.security.cas.enabled: ${INFRAS_SECURITY_CAS_ENABLED:false}
+
+#应用访问地址
+app.server.host.url: ${APP_SERVER_HOST_URL:https://localhost:8443}
+#应用登录地址
+app.login.url: ${APP_LOGIN_URL:/cas/login}
+#应用登出地址
+app.logout.url: ${APP_LOGOUT_URL:/cas/logout}
+
+#CAS服务地址
+cas.server.host.url: ${CAS_SERVER_HOST_URL:https://cas-server/cas}
diff --git a/gateway/src/main/resources/application.yml b/gateway/src/main/resources/application.yml
new file mode 100644
index 0000000..e98b431
--- /dev/null
+++ b/gateway/src/main/resources/application.yml
@@ -0,0 +1,96 @@
+server:
+  port: 8080
+
+
+##
+# logging
+#
+logging:
+  level:
+    root: INFO
+    com.supwisdom: DEBUG
+#    org.springframework.web: INFO
+#    org.springframework.cloud.openfeign: INFO
+
+
+spring:
+  jackson:
+    time-zone: Asia/Shanghai
+
+##
+# spring cloud gateway
+#
+  cloud:
+    gateway:
+      metrics:
+        enabled: true
+      routes:
+      - id: bff-api
+        uri: http://localhost:8081
+        predicates:
+        - Path=/api/bff/**
+        filters:
+        - RewritePath=/api/bff/(?<suffix>.*), /$\{suffix}
+      - id: base-api
+        uri: http://localhost:8082
+        predicates:
+        - Path=/api/base/**
+        filters:
+        - RewritePath=/api/base/(?<suffix>.*), /$\{suffix}
+      - id: system-api
+        uri: http://localhost:8082
+        predicates:
+        - Path=/api/system/**
+        filters:
+        - RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
+      - id: biz-api
+        uri: http://localhost:8082
+        predicates:
+        - Path=/api/biz/**
+        filters:
+        - RewritePath=/api/biz/(?<suffix>.*), /$\{suffix}
+
+
+##
+# infras.online-doc
+#
+infras.online-doc.enabled: false
+infras.online-doc.md-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/doc/
+infras.online-doc.api-docs.staitc.path: /Users/loie/c/work/git/institute/sw-backend/api-docs/
+
+
+##
+# infras.security basic
+#
+infras.security.basic.enabled: true
+
+
+##
+# infras.security jwt
+#
+infras.security.jwt.enabled: false
+
+#infras.security.jwt.public-key-pem: |-
+#  -----BEGIN PUBLIC KEY-----
+#  MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBQw6TmvJ+nOuRaLoHsZJGIBzRg/wbskNv6UevL3/nQioYooptPfdIHVzPiKRVT5+DW5+nqzav3DOxY+HYKjO9nFjYdj0sgvRae6iVpa5Ji1wbDKOvwIDNukgnKbqvFXX2Isfl0RxeN3uEKdjeFGGFdr38I3ADCNKFNxtbmfqvjQIDAQAB
+#  -----END PUBLIC KEY-----
+#infras.security.jwt.private-key-pem-pkcs8: |-
+#  -----BEGIN PRIVATE KEY-----
+#  MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMFDDpOa8n6c65FougexkkYgHNGD/BuyQ2/pR68vf+dCKhiiim0990gdXM+IpFVPn4Nbn6erNq/cM7Fj4dgqM72cWNh2PSyC9Fp7qJWlrkmLXBsMo6/AgM26SCcpuq8VdfYix+XRHF43e4Qp2N4UYYV2vfwjcAMI0oU3G1uZ+q+NAgMBAAECgYA7jA7UuhxXmMAYmJ0hO7xnMQPQJouqeP3AYK9+sfMF7WQNHR/r0vj7Vli/dUm1I4hxr+x8fAuomf+ve6gds7sm+v2JHLzEIyPPiogoC7IcBmjJ3yVzW/26cXeOmTiPC/fW2g4BpYxSM8HLDaSkrtqzy8e9ijlzMpHBvvwLikufnQJBAOXaqIPuZ7Vm/JwQHAmX2HV+Qk6GMi/H7mL8X0AaW68w+Iccdbz1hzmMBfdn5NMmx2AOwoBAVivgjt0a1OfksHMCQQDXPtXxwFy4dQ4TbPu8L38P8s/bPo9ib1YkEMp57yBw+IvxB7jnpA9rUYTfZM/HpVP7r9rfVEUylVXXzhz1qx//AkEApWJOTBdW8bQ3YEdLFS/3pJqDNSLjq3OMuBZkpqgQfh6bRAQbRynW8XYpuNk9URye6iPUmRkxp4J86ORseqoWtwJAJb5a/b1hhObhxP5DVkht23oUgLmDoxsq28AmASOxaJ3szCMyhUv7eDIfPp0K4lNXWrcHhkncqHYPS3xVD68mOQJAV4SRDdWpgAbQOUODotohE48RxrabHo0l228CJ/pnm0q7gplPs4iSNJ2eijFuOMXfKkq3z/vxiNSA59FcdoCOHQ==
+#  -----END PRIVATE KEY-----
+
+
+##
+# infras.security cas
+#
+infras.security.cas.enabled: false
+
+#应用访问地址
+app.server.host.url: http://localhost:8080
+#应用登录地址
+app.login.url: /cas/login
+#应用登出地址
+app.logout.url: /cas/logout
+
+#CAS服务地址
+cas.server.host.url: https://cas.supwisdom.com/cas
diff --git a/gateway/src/main/resources/bootstrap.yml b/gateway/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..aa852b8
--- /dev/null
+++ b/gateway/src/main/resources/bootstrap.yml
@@ -0,0 +1,3 @@
+spring:
+  application:
+    name: sw-backend-gateway
diff --git a/pom.xml b/pom.xml
index 0d4638d..0a273a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,8 +24,9 @@
     <module>biz</module>
 
     <module>sa</module>
-    <module>aggr</module>
     <module>bff</module>
+
+    <module>gateway</module>
     
   </modules>
 
