Spring Security规则配置及端点(EndPoint)保护详解

匹配规则

  • HttpSecurity.antMatcher(...)表示该安全规则只针对参数指定的路径进行过滤
  • HttpSecurity.requestMatchers同上,唯一区别是可以接受多个参数【两者不能同时使用】
  • HttpSecurity.authorizeRequests()该方法用于配置权限,如hasAnyRoleaccess(...)
  • .authorizeRequests().anyRequest()除去已经配置了的路径之外的其他路径,即包含在(1)/(2)中不包含在HttpSecurity.authorizeRequests().antMatchers(…)中的其他路径

端点保护配置

了解到这部分的知识是因为在做OAuth2认证的时候,我发现项目中的安全配置已经开放所有请求(即/**请求不进行拦截),但是当我访问/oauth/token的时候竟然提示401,百思不得其解。最后发现原来在Spring Security中预制了一些默认断点保护策略。具体配置是在AuthorizationServerSecurityConfiguration

过滤规则踩到的坑

.requestMatchers().antMatchers("/test/**").and()
.authorizeRequests().antMatchers("/test/authenticated").authenticated()
.anyRequest().permitAll().and()

通过匹配规则我们可以知道这部分配置的意思是针对/test/**的请求将使用安全配置,/test/authenticated是需要认证的,匹配/test/**且不是/test/authenticated的请求是不需要认证的。但是在实际项目中却遇到了一个坑,就是我访问/test/**的任何请求都是需要认证的,跟了源码发现是使用错误,具体原因是因为我在继承WebSecurityConfigurerAdapter重写configure(HttpSecurity http)方法的最后多写了一行代码

super.configure(http);

我在最后又去调用了WebSecurityConfigurerAdapterconfigure(HttpSecurity http)方法

protected void configure(HttpSecurity http) throws Exception {
   logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
   http
      .authorizeRequests().anyRequest().authenticated().and()
      .formLogin().and()
      .httpBasic();
}

这个是WebSecurityConfigurerAdapter.configure方法的源码,它默认会对所有请求进行过滤。有兴趣的同学可以跟踪源码会发现Spring SecurityURL拦截规则最后是存放在Map中,即在super的配置会覆盖掉自定义配置导致自定义配置失效,写的比较简洁可能不是很好理解。

要更改Spring Security OAuth 2.0的端点路径,您可以使用以下方法之一: 1. 更改默认的端点路径:您可以通过配置属性来更改默认的端点路径。例如,如果您想更改授权服务器的端点路径,可以使用以下配置: ```properties spring.security.oauth2.authorization-server.path=/your-custom-path ``` 2. 自定义端点路径:您可以通过自定义配置类来创建自定义端点,并将其映射到所需的路径。例如,假设您想更改令牌端点的路径,您可以创建一个自定义配置类,如下所示: ```java import org.springframework.context.annotation.Configuration; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.configurers.oauth2.server.authorization.OAuth2AuthorizationServerConfigurer; import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationEndpointFilter; @Configuration @EnableAuthorizationServer public class CustomAuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { @Override public void configure(OAuth2AuthorizationServerConfigurer oauth2) throws Exception { oauth2.tokenEndpoint() .path("/your-custom-path"); } } ``` 请注意,这只是一个示例,并且您需要根据特定的需求进行相应的配置。根据您想要更改的端点类型(例如:授权服务器、令牌端点等),您可能需要使用不同的配置方法。 这些方法都可以用来更改Spring Security OAuth 2.0的端点路径。根据您的需求选择最合适的方法,并相应地进行配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值