当前位置: 首页 > 知识库问答 >
问题:

如何灵活地配置Spring Web安全性

马朝斑
2023-03-14

我目前正在使用Spring security建立一个反向代理安全域,其想法是默认情况下要求所有请求上都有承载令牌,除了一些例外情况,如注册等。当前我的配置功能如下所示:

 @Override
protected void configure(HttpSecurity http) throws Exception {
    http.cors().and().csrf().disable().authorizeRequests()
            .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
            .anyRequest().authenticated()
            .and()
            .addFilter(new JWTAuthenticationFilter(authenticationManager()))
            .addFilter(new JWTAuthorizationFilter(authenticationManager()))
            // this disables session creation on Spring Security
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}

Ant Matcher非常有用,但您必须单独传递所有URL。有没有办法让我传入一个字符串数组,这样我就可以将配置分开?

共有1个答案

周苑博
2023-03-14
http.cors().and().csrf().disable().authorizeRequests()
        .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()

在上述代码中,antMatchers也将接受字符串数组。下面是spring security中anyMatcher方法的实现。释放。根据方法签名,您应该能够传递包含所需路径的字符串数组。

    /**
 * Maps a {@link List} of
 * {@link org.springframework.security.web.util.matcher.AntPathRequestMatcher}
 * instances that do not care which {@link HttpMethod} is used.
 *
 * @param antPatterns the ant patterns to create
 * {@link org.springframework.security.web.util.matcher.AntPathRequestMatcher} from
 *
 * @return the object that is chained after creating the {@link RequestMatcher}
 */
public C antMatchers(String... antPatterns) {
    return chainRequestMatchers(RequestMatchers.antMatchers(antPatterns));
}

如果深入研究实现,spring会将此参数转换为所有路径的ArrayList。

此外,还有另一种方法。如果您正在扩展spring的WebSecurity配置适配器类,要忽略Spring Security性不应保护的路径,请再次重写相同的方法。

@Override
public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("path":);
}

我想这样很好。

 类似资料:
  • 一、简介 此配置,可设置后台登陆最大失败次数,以防密码被试出。 其它配置相对简单不在详述。 二、功能演示 如图:

  • 若要配置安全性设置,请前往“配置”->“安全性”。 你可以更改用户密码的复杂性要求以提高密码强度,以及强制注销所有其他用户会话。 如果要在 Navicat Monitor 和客户端之间使用加密连接(HTTPS 会话),你可以将 Navicat Monitor 配置为使用 SSL/TLS 协议。请点击“+ 添加证书”并配置以下信息: 名 輸入证书的名。 证书 粘贴证书文件的内容。 私钥 粘贴私钥文件

  • 本任务将演示如何通过使用Istio认证提供的服务账户,来安全地对服务做访问控制。 当Istio双向TLS认证打开时,服务器就会根据其证书来认证客户端,并从证书获取客户端的服务账户。服务账户在source.user的属性中。请参考Istio auth identity了解Istio中服务账户的格式。 开始之前 根据quick start的说明在开启认证的Kubernetes中安装Istio。注意,应

  • 我们有一个OData兼容的API,它将一些全文搜索需求委托给一个Elasticsearch集群。由于OData表达式可能会变得相当复杂,我们决定简单地将它们转换为等效的Lucene查询语法,并将其提供给查询。 我们确实支持一些文本相关的OData过滤器表达式,比如: 我们匹配的字段可以是、或两者(即通过多字段)。所搜索的文本可以是单个令牌(例如)、仅是其一部分(例如)、或多个令牌(例如、等)。搜索

  • 安全性错误配置在安全性设置被定义,实现和维护为默认设置时出现。良好的安全性要求为应用程序,Web服务器,数据库服务器和平台定义和部署安全配置。使软件保持最新同样重要。 威胁代理 - 匿名外部攻击者以及拥有自己帐户的用户可能会试图破坏系统。 攻击者的方法 - 访问默认帐户,未使用的页面,未修补的漏洞,未受保护的文件和目录以获得未经授权的访问。 安全弱点 - 可以发生在任何级别 - 平台,Web服务器