|
@ -13,6 +13,7 @@ import com.nimbusds.jwt.proc.ConfigurableJWTProcessor; |
|
|
import com.nimbusds.jwt.proc.DefaultJWTProcessor; |
|
|
import com.nimbusds.jwt.proc.DefaultJWTProcessor; |
|
|
import io.sc.platform.core.service.AuditLogPersistenterManager; |
|
|
import io.sc.platform.core.service.AuditLogPersistenterManager; |
|
|
import io.sc.platform.core.service.RuntimeService; |
|
|
import io.sc.platform.core.service.RuntimeService; |
|
|
|
|
|
import io.sc.platform.security.AuthenticationMode; |
|
|
import io.sc.platform.security.SecurityProperties; |
|
|
import io.sc.platform.security.SecurityProperties; |
|
|
import io.sc.platform.security.handler.*; |
|
|
import io.sc.platform.security.handler.*; |
|
|
import io.sc.platform.security.loginform.filter.JwtUsernamePasswordAuthenticationFilter; |
|
|
import io.sc.platform.security.loginform.filter.JwtUsernamePasswordAuthenticationFilter; |
|
@ -60,6 +61,7 @@ import java.util.Set; |
|
|
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 1000) |
|
|
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 1000) |
|
|
@EnableConfigurationProperties(SecurityProperties.class) |
|
|
@EnableConfigurationProperties(SecurityProperties.class) |
|
|
public class WebSecurityAutoConfiguration { |
|
|
public class WebSecurityAutoConfiguration { |
|
|
|
|
|
private static final String AUTHENTICATION_MODE_KEY ="application.authentication.mode"; |
|
|
@Autowired private ApplicationContext applicationContext; |
|
|
@Autowired private ApplicationContext applicationContext; |
|
|
@Autowired private SecurityProperties securityProperties; |
|
|
@Autowired private SecurityProperties securityProperties; |
|
|
@Autowired private RuntimeService runtimeService; |
|
|
@Autowired private RuntimeService runtimeService; |
|
@ -78,19 +80,29 @@ public class WebSecurityAutoConfiguration { |
|
|
csrfConfigurer.disable(); |
|
|
csrfConfigurer.disable(); |
|
|
}).build(); |
|
|
}).build(); |
|
|
} |
|
|
} |
|
|
|
|
|
// 获取系统参数配置的认证模式
|
|
|
|
|
|
final AuthenticationMode authenticationMode =applicationContext.getEnvironment().getProperty(AUTHENTICATION_MODE_KEY,AuthenticationMode.class); |
|
|
|
|
|
|
|
|
http.authorizeRequests(authorizeRequests -> { |
|
|
http.authorizeRequests(authorizeRequests -> { |
|
|
authorizeRequests.antMatchers(securityConfigureService.getIgnoredUrls()).permitAll(); |
|
|
authorizeRequests.antMatchers(securityConfigureService.getIgnoredUrls()).permitAll(); |
|
|
authorizeRequests.anyRequest().authenticated(); |
|
|
authorizeRequests.anyRequest().authenticated(); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
http.csrf(csrf -> csrf.disable()); |
|
|
http.csrf(csrf -> csrf.disable()); |
|
|
http.cors(cors-> cors.configurationSource(securityConfigureService.getCorsConfigurationSource())); |
|
|
http.cors(cors-> cors.configurationSource(securityConfigureService.getCorsConfigurationSource())); |
|
|
http.authenticationProvider(authenticationProvider); |
|
|
http.authenticationProvider(authenticationProvider); |
|
|
|
|
|
http.httpBasic(); |
|
|
http.formLogin(formLogin -> { |
|
|
http.formLogin(formLogin -> { |
|
|
|
|
|
if(AuthenticationMode.OAUTH2.equals(authenticationMode)){ |
|
|
|
|
|
formLogin.loginPage("/"); |
|
|
|
|
|
}else { |
|
|
formLogin.loginPage(securityProperties.getFormLogin().getLoginPage()); |
|
|
formLogin.loginPage(securityProperties.getFormLogin().getLoginPage()); |
|
|
|
|
|
} |
|
|
formLogin.loginProcessingUrl(securityProperties.getFormLogin().getLoginProcessingUrl()); |
|
|
formLogin.loginProcessingUrl(securityProperties.getFormLogin().getLoginProcessingUrl()); |
|
|
formLogin.failureUrl(securityProperties.getFormLogin().getFailureUrl()); |
|
|
formLogin.failureUrl(securityProperties.getFormLogin().getFailureUrl()); |
|
|
formLogin.successHandler(authenticationSuccessHandler()); |
|
|
formLogin.successHandler(authenticationSuccessHandler()); |
|
|
formLogin.failureHandler(authenticationFailureHandler()); |
|
|
formLogin.failureHandler(authenticationFailureHandler()); |
|
|
|
|
|
formLogin.permitAll(); |
|
|
}); |
|
|
}); |
|
|
http.logout(logout -> { |
|
|
http.logout(logout -> { |
|
|
logout.logoutUrl(securityProperties.getLogout().getLogoutUrl()); |
|
|
logout.logoutUrl(securityProperties.getLogout().getLogoutUrl()); |
|
@ -102,10 +114,12 @@ public class WebSecurityAutoConfiguration { |
|
|
.authenticationEntryPoint(authenticationEntryPoint()) |
|
|
.authenticationEntryPoint(authenticationEntryPoint()) |
|
|
.accessDeniedHandler(accessDeniedHandler()); |
|
|
.accessDeniedHandler(accessDeniedHandler()); |
|
|
|
|
|
|
|
|
|
|
|
if(AuthenticationMode.OAUTH2.equals(authenticationMode)){ |
|
|
// 在用户名密码认证过滤器前添加 jwt 认证过滤器
|
|
|
// 在用户名密码认证过滤器前添加 jwt 认证过滤器
|
|
|
JwtUsernamePasswordAuthenticationFilter jwtUsernamePasswordAuthenticationFilter =new JwtUsernamePasswordAuthenticationFilter(jwtDecoder,securityConfigureService.getIgnoredUrlMatchers()); |
|
|
JwtUsernamePasswordAuthenticationFilter jwtUsernamePasswordAuthenticationFilter =new JwtUsernamePasswordAuthenticationFilter(jwtDecoder,securityConfigureService.getIgnoredUrlMatchers()); |
|
|
http.addFilterBefore(jwtUsernamePasswordAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); |
|
|
http.addFilterBefore(jwtUsernamePasswordAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); |
|
|
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); |
|
|
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); |
|
|
|
|
|
} |
|
|
return http.build(); |
|
|
return http.build(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|