|
@@ -1,19 +1,30 @@
|
|
package com.shkpr.service.proxycenter.configuration;
|
|
package com.shkpr.service.proxycenter.configuration;
|
|
|
|
|
|
|
|
+import com.shkpr.service.proxycenter.components.BaseASProxyServlet;
|
|
|
|
+import com.shkpr.service.proxycenter.components.TaskASProxyServlet;
|
|
|
|
+import com.shkpr.service.proxycenter.constants.ApiURI;
|
|
|
|
+import com.shkpr.service.proxycenter.controllerfilter.CustomAuthenticationProvider;
|
|
|
|
+import com.shkpr.service.proxycenter.controllerfilter.SelfBizFilterMgr;
|
|
|
|
+import org.mitre.dsmiley.httpproxy.ProxyServlet;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
+import org.springframework.context.annotation.Primary;
|
|
|
|
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
|
import org.springframework.security.config.annotation.web.builders.WebSecurity;
|
|
import org.springframework.security.config.annotation.web.builders.WebSecurity;
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
|
|
|
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 该类主要用来做权限控制的配置、以及注册各种过滤器
|
|
* 该类主要用来做权限控制的配置、以及注册各种过滤器
|
|
* 执行顺序
|
|
* 执行顺序
|
|
* (1) 注册验证组件 - configure(AuthenticationManagerBuilder auth)方法中注册自定义验证组件
|
|
* (1) 注册验证组件 - configure(AuthenticationManagerBuilder auth)方法中注册自定义验证组件
|
|
* (2) 设置验证规则 - configure(HttpSecurity http)方法中设置了各种路由访问规则
|
|
* (2) 设置验证规则 - configure(HttpSecurity http)方法中设置了各种路由访问规则
|
|
- * (3) 初始化过滤组件 - JWTLoginFilter 和 JWTAuthenticationFilter 类会初始化
|
|
|
|
|
|
+ * (3) 初始化过滤组件 - JWTLoginFilter 和 SelfAuthenticationFilter 类会初始化
|
|
*/
|
|
*/
|
|
@Configuration
|
|
@Configuration
|
|
@EnableWebSecurity
|
|
@EnableWebSecurity
|
|
@@ -25,6 +36,18 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
@Value("${global.ops.lan.ip:127.0.0.1}")
|
|
@Value("${global.ops.lan.ip:127.0.0.1}")
|
|
private String mStrOpsServerLanIP;
|
|
private String mStrOpsServerLanIP;
|
|
|
|
|
|
|
|
+ @Value("${cloud.proxy.address.base:}")
|
|
|
|
+ private String mStrBaseASProxyAddress = "";
|
|
|
|
+
|
|
|
|
+ @Value("${cloud.proxy.address.task:}")
|
|
|
|
+ private String mStrTaskASProxyAddress = "";
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
|
|
|
|
+ //使用自定义身份验证组件
|
|
|
|
+ auth.authenticationProvider(new CustomAuthenticationProvider());
|
|
|
|
+ }
|
|
|
|
+
|
|
// 设置 HTTP 验证规则
|
|
// 设置 HTTP 验证规则
|
|
@Override
|
|
@Override
|
|
protected void configure(HttpSecurity http) throws Exception {
|
|
protected void configure(HttpSecurity http) throws Exception {
|
|
@@ -36,8 +59,12 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
|
|
|
http.csrf().disable() // 关闭csrf验证
|
|
http.csrf().disable() // 关闭csrf验证
|
|
.authorizeRequests() // 对请求进行认证
|
|
.authorizeRequests() // 对请求进行认证
|
|
|
|
+ //.antMatchers(ApiURI.URI_BASE_PROXY_XXX).permitAll()
|
|
.antMatchers("/**").permitAll()
|
|
.antMatchers("/**").permitAll()
|
|
- .anyRequest().authenticated(); //所有其他请求需要身份认证;
|
|
|
|
|
|
+ .anyRequest().authenticated()
|
|
|
|
+ .and()
|
|
|
|
+ .addFilterBefore(new SelfBizFilterMgr("/**", authenticationManager()),
|
|
|
|
+ UsernamePasswordAuthenticationFilter.class); //所有其他请求需要身份认证;
|
|
/*.addFilterBefore(new ServerStatusMonitorFilter(ThirdApiURI.URI_HGAS_MONITOR_XXX, authenticationManager()),
|
|
/*.addFilterBefore(new ServerStatusMonitorFilter(ThirdApiURI.URI_HGAS_MONITOR_XXX, authenticationManager()),
|
|
UsernamePasswordAuthenticationFilter.class);*/
|
|
UsernamePasswordAuthenticationFilter.class);*/
|
|
|
|
|
|
@@ -51,4 +78,25 @@ public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
.antMatchers("/static/**"); // 所有/static下的静态资源请求时都忽略访问规则
|
|
.antMatchers("/static/**"); // 所有/static下的静态资源请求时都忽略访问规则
|
|
*/
|
|
*/
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Bean(name = "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.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
|
+ servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
|
+ return servletRegistrationBean;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Bean(name = "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.addInitParameter(ProxyServlet.P_LOG, "false");
|
|
|
|
+ servletRegistrationBean.addInitParameter( "targetUri", "https://127.0.0.1:9000");
|
|
|
|
+ return servletRegistrationBean;
|
|
|
|
+ }
|
|
}
|
|
}
|