|
@@ -1,11 +1,15 @@
|
|
|
package com.shkpr.service.proxycenter.configuration;
|
|
|
|
|
|
+import com.global.base.tools.EncryptionUtil;
|
|
|
+import com.global.base.tools.RandomUtil;
|
|
|
import com.shkpr.service.proxycenter.components.*;
|
|
|
-import com.shkpr.service.proxycenter.constants.ApiURI;
|
|
|
+import com.shkpr.service.proxycenter.constants.ProxyPassDefine;
|
|
|
import com.shkpr.service.proxycenter.controllerfilter.CustomAuthenticationProvider;
|
|
|
import com.shkpr.service.proxycenter.controllerfilter.SelfBizFilterMgr;
|
|
|
+import com.shkpr.service.proxycenter.globalcache.GlobalData;
|
|
|
import org.mitre.dsmiley.httpproxy.ProxyServlet;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
@@ -18,6 +22,10 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
|
|
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
/**
|
|
|
* 该类主要用来做权限控制的配置、以及注册各种过滤器
|
|
|
* 执行顺序
|
|
@@ -28,6 +36,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
|
|
|
@Configuration
|
|
|
@EnableWebSecurity
|
|
|
@EnableGlobalMethodSecurity(prePostEnabled = true) //@PreAuthorize对权限的注解需要设置prePostEnabled = true
|
|
|
+@ConfigurationProperties(prefix = "atuocfg")
|
|
|
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
@Value("${global.test.pressure:false}")
|
|
|
private boolean mBForPressureTest;
|
|
@@ -35,32 +44,33 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
@Value("${global.ops.lan.ip:127.0.0.1}")
|
|
|
private String mStrOpsServerLanIP;
|
|
|
|
|
|
- @Value("${cloud.proxy.address.base:}")
|
|
|
- private String mStrBaseASProxyAddress = "";
|
|
|
-
|
|
|
- @Value("${cloud.proxy.address.task:}")
|
|
|
- private String mStrTaskASProxyAddress = "";
|
|
|
+ private Map<String, String> proxyToAddress = new HashMap<>();
|
|
|
+ private Map<String, String> proxyToPassword = new HashMap<>();
|
|
|
+ private Map<String, String> proxyToUri = new HashMap<>();
|
|
|
|
|
|
- @Value("${cloud.proxy.address.analy:}")
|
|
|
- private String mStrAnalyASProxyAddress = "";
|
|
|
-
|
|
|
- @Value("${cloud.proxy.address.gw:}")
|
|
|
- private String mStrDataGWASProxyAddress = "";
|
|
|
+ public Map<String, String> getProxyToAddress() {
|
|
|
+ return proxyToAddress;
|
|
|
+ }
|
|
|
|
|
|
- @Value("${cloud.proxy.address.ai:}")
|
|
|
- private String mStrAIModelASProxyAddress = "";
|
|
|
+ public void setProxyToAddress(Map<String, String> proxyToAddress) {
|
|
|
+ this.proxyToAddress = proxyToAddress;
|
|
|
+ }
|
|
|
|
|
|
- @Value("${cloud.proxy.address.gis:}")
|
|
|
- private String mStrGisAEASProxyAddress = "";
|
|
|
+ public Map<String, String> getProxyToPassword() {
|
|
|
+ return proxyToPassword;
|
|
|
+ }
|
|
|
|
|
|
- @Value("${cloud.proxy.address.old-stats:}")
|
|
|
- private String mStrOldStatsASProxyAddress = "";
|
|
|
+ public void setProxyToPassword(Map<String, String> proxyToPassword) {
|
|
|
+ this.proxyToPassword = proxyToPassword;
|
|
|
+ }
|
|
|
|
|
|
- @Value("${cloud.proxy.address.stats:}")
|
|
|
- private String mStrStatsASProxyAddress = "";
|
|
|
+ public Map<String, String> getProxyToUri() {
|
|
|
+ return proxyToUri;
|
|
|
+ }
|
|
|
|
|
|
- @Value("${cloud.proxy.address.push:}")
|
|
|
- private String mStrPushASProxyAddress = "";
|
|
|
+ public void setProxyToUri(Map<String, String> proxyToUri) {
|
|
|
+ this.proxyToUri = proxyToUri;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
|
|
@@ -99,94 +109,141 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
*/
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "base")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_BASE)
|
|
|
@Primary
|
|
|
public ServletRegistrationBean<BaseASProxyServlet> servletServletRegistrationForBase() {
|
|
|
ServletRegistrationBean<BaseASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new BaseASProxyServlet(mStrBaseASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_BASE_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new BaseASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_BASE)
|
|
|
+ , ProxyPassDefine.PROXY_BASE
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_BASE)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToPassword.getOrDefault(ProxyPassDefine.PROXY_BASE, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_BASE), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "task")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_TASK)
|
|
|
public ServletRegistrationBean<TaskASProxyServlet> servletServletRegistrationForTask() {
|
|
|
ServletRegistrationBean<TaskASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new TaskASProxyServlet(mStrTaskASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_TASK_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new TaskASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_TASK)
|
|
|
+ , ProxyPassDefine.PROXY_TASK
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_TASK)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_TASK, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_TASK), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "ai-model")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_AI_MODEL)
|
|
|
public ServletRegistrationBean<AIModelASProxyServlet> servletServletRegistrationForAIModel() {
|
|
|
ServletRegistrationBean<AIModelASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new AIModelASProxyServlet(mStrAIModelASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_AI_MODEL_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new AIModelASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_AI_MODEL)
|
|
|
+ , ProxyPassDefine.PROXY_AI_MODEL
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_AI_MODEL)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_AI_MODEL, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_TASK), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "data-gw")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_GW)
|
|
|
public ServletRegistrationBean<DataGWASProxyServlet> servletServletRegistrationForDataGW() {
|
|
|
ServletRegistrationBean<DataGWASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new DataGWASProxyServlet(mStrDataGWASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_DATE_GW_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new DataGWASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_GW)
|
|
|
+ , ProxyPassDefine.PROXY_GW
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_GW)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_GW, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_GW), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "gis-ae")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_GIS)
|
|
|
public ServletRegistrationBean<GisAEASProxyServlet> servletServletRegistrationForGisAe() {
|
|
|
ServletRegistrationBean<GisAEASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new GisAEASProxyServlet(mStrGisAEASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_GIS_AE_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new GisAEASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_GIS)
|
|
|
+ , ProxyPassDefine.PROXY_GIS
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_GIS)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_GIS, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_GIS), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "iot-stats")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_STATS)
|
|
|
public ServletRegistrationBean<IotStatsASProxyServlet> servletServletRegistrationForIotStats() {
|
|
|
ServletRegistrationBean<IotStatsASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new IotStatsASProxyServlet(mStrStatsASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_IOT_STATS_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new IotStatsASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_STATS)
|
|
|
+ , ProxyPassDefine.PROXY_STATS
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_STATS)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_STATS, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_STATS), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "old-iot-stats")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_OLD_STATS)
|
|
|
public ServletRegistrationBean<IotStatsOldProxyServlet> servletServletRegistrationForOldIotStats() {
|
|
|
ServletRegistrationBean<IotStatsOldProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new IotStatsOldProxyServlet(mStrOldStatsASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_IOT_STATS_OLD_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new IotStatsOldProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_OLD_STATS)
|
|
|
+ , ProxyPassDefine.PROXY_OLD_STATS
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_OLD_STATS)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_OLD_STATS, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_OLD_STATS), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "push")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_PUSH)
|
|
|
public ServletRegistrationBean<PushASProxyServlet> servletServletRegistrationForPush() {
|
|
|
ServletRegistrationBean<PushASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new PushASProxyServlet(mStrPushASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_PUSH_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new PushASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_PUSH)
|
|
|
+ , ProxyPassDefine.PROXY_PUSH
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_PUSH)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_PUSH, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_PUSH), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
- @Bean(name = "analy")
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_ANALY)
|
|
|
public ServletRegistrationBean<AnalyASProxyServlet> servletServletRegistrationForAnaly() {
|
|
|
ServletRegistrationBean<AnalyASProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
- servletRegistrationBean.setServlet(new AnalyASProxyServlet(mStrAnalyASProxyAddress));
|
|
|
- servletRegistrationBean.addUrlMappings(String.format("%s/%s", ApiURI.URI_ANALY_PROXY_H, "*"));
|
|
|
+ servletRegistrationBean.setServlet(new AnalyASProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_ANALY)
|
|
|
+ , ProxyPassDefine.PROXY_ANALY
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_ANALY)
|
|
|
+ , EncryptionUtil.MD5Hash(proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_ANALY, RandomUtil.getRandomStr(8)))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_ANALY), "*"));
|
|
|
+ servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
+ servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
+ return servletRegistrationBean;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean(name = ProxyPassDefine.PROXY_GEOSERVER)
|
|
|
+ public ServletRegistrationBean<GeoServerProxyServlet> servletServletRegistrationForGeoServer() {
|
|
|
+ ServletRegistrationBean<GeoServerProxyServlet> servletRegistrationBean = new ServletRegistrationBean<>();
|
|
|
+ servletRegistrationBean.setServlet(new GeoServerProxyServlet(proxyToUri.get(ProxyPassDefine.PROXY_GEOSERVER)
|
|
|
+ , ProxyPassDefine.PROXY_GEOSERVER
|
|
|
+ , proxyToAddress.get(ProxyPassDefine.PROXY_GEOSERVER)
|
|
|
+ , proxyToAddress.getOrDefault(ProxyPassDefine.PROXY_ANALY, RandomUtil.getRandomStr(8))));
|
|
|
+ servletRegistrationBean.addUrlMappings(String.format("%s/%s", proxyToUri.get(ProxyPassDefine.PROXY_GEOSERVER), "*"));
|
|
|
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
+
|
|
|
+ @PostConstruct
|
|
|
+ public void init(){
|
|
|
+ GlobalData.getInstance().initProxyToAddress(proxyToAddress);
|
|
|
+ GlobalData.getInstance().initProxyToPassword(proxyToPassword);
|
|
|
+ GlobalData.getInstance().initProxyToUri(proxyToUri);
|
|
|
+ }
|
|
|
}
|