• Java EE-Spring Security配置


    Spring Security

    基本概念

    spring security 的核心功能主要包括:

    认证 (你是谁) 授权 (你能干什么) 攻击防护 (防止伪造身份)

    其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。

    1. <dependency>
    2. <groupId>org.springframework.security</groupId>
    3. <artifactId>spring-security-test</artifactId>
    4. <scope>test</scope>
    5. </dependency>
    Copy to clipboardErrorCopied

    配置

    Spring Security 的配置类,通过继承 WebSecurityConfigurerAdapter 类实现,可以重写一下三种方法。

    1. @Configuration
    2. @EnableWebSecurity
    3. @EnableGlobalMethodSecurity(prePostEnabled = true)
    4. public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    5. @Override
    6. public void configure(AuthenticationManagerBuilder auth) throws Exception {
    7. //我代表代码
    8. }
    9. @Override
    10. public void configure(HttpSecurity http) throws Exception {
    11. //我代表代码
    12. }
    13. @Override
    14. public void configure(WebSecurity web) throws Exception {
    15. //我代表代码
    16. }
    17. }
    Copy to clipboardErrorCopied

    配置全局信息

    AuthenticationManagerBuilder 类用来配置全局的认证相关的信息:

    1. AuthenticationProvider :认证服务提供者
    2. UserDetailsService :认证用户(及其权限)
    1. @Override
    2. public void configure(AuthenticationManagerBuilder auth) throws Exception {
    3. // 添加后门
    4. auth.authenticationProvider(backdoorAuthenticationProvider);
    5. // 自定义AuthenticationProvider实例加入AuthenticationManager
    6. auth.userDetailsService(backendSysUserDetailsServiceImpl).passwordEncoder(new BCryptPasswordEncoder());
    7. auth.authenticationProvider(backendSysUserAuthenticationProvider);
    8. }

    权限控制

    HttpSecurity 类负责具体的权限控制规则配置。每配置相当于 xml 配置中的一个标签。

    各种具体的认证机制的相关配置,OpenIDLoginConfigurer、AnonymousConfigurer、FormLoginConfigurer、HttpBasicConfigurer LogoutConfigurer RequestMatcherConfigurer:spring mvc style、ant style、regex style HeadersConfigurer: CorsConfigurer、CsrfConfigurer SessionManagementConfigurer: PortMapperConfigurer: JeeConfigurer: X509Configurer: RememberMeConfigurer: ExpressionUrlAuthorizationConfigurer: RequestCacheConfigurer: ExceptionHandlingConfigurer: SecurityContextConfigurer: ServletApiConfigurer: ChannelSecurityConfigurer: 此模块的authenticationProvider和userDetailsService; SecurityFilterChain控制。

    1. @Override
    2. public void configure(HttpSecurity http) throws Exception {
    3. http
    4. .authorizeRequests()
    5. .antMatchers("/",
    6. "/index",
    7. "/error"
    8. ).permitAll()
    9. .antMatchers("/user/**").hasRole("USER")
    10. .antMatchers("/admin/**").hasRole("ADMIN")
    11. .and()
    12. .formLogin().loginPage("/login").defaultSuccessUrl("/user")
    13. //TODO 自定义参数名称,与login.html中的参数对应
    14. .usernameParameter("myusername").passwordParameter("mypassword")
    15. .and()
    16. .logout().logoutUrl("/logout").logoutSuccessUrl("/login")
    17. //鉴权
    18. .and()
    19. .authorizeRequests()
    20. .withObjectPostProcessor(new ObjectPostProcessor<FilterSecurityInterceptor>() {
    21. @Override
    22. public extends FilterSecurityInterceptor> O postProcess(O object) {
    23. object.setSecurityMetadataSource(backendSysRoleSecurityMetadataSourceImpl);
    24. object.setAccessDecisionManager(backendSysRoleAccessDecisionManagerImpl);
    25. return object;
    26. }
    27. });
    28. }

    忽略规则配置

    WebSecurity 类负责全局请求忽略规则配置(比如静态文件、注册页面)、全局 HttpFirewall 配置、是否debug配置、全局SecurityFilterChain配置、privilegeEvaluator、expressionHandler、securityInterceptor。

    1. @Override
    2. public void configure(WebSecurity web) throws Exception {
    3. web.ignoring().antMatchers("/css/**", "/js/**");
    4. }
  • 相关阅读:
    巧用OpenSSH进行域内权限维持
    Linux下gdb调试- awatch 命令设置读观察点
    Linux安装 spark 教程详解
    Java8-新特性及Lambda表达式
    微服务feign接口声明的3种方式使用与分析
    Linux介绍
    Python 几行代码实现一键抠图,收费应用 BYEBYE
    DSPE-PEG-TH,TH-PEG-DSPE,磷脂-聚乙二醇-PH响应性细胞穿膜肽TH
    企业如何实现财务无纸化?票档一体化建设势在必行
    4 另一种图片颜色表示:YUV
  • 原文地址:https://blog.csdn.net/weixin_70495659/article/details/139476232