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

Spring安全和火柴允许所有都不工作

元景天
2023-03-14

我知道存在这个问题,但我所做的配置是正确的,我将其与一个正确工作的项目进行了比较。我想为JWT安全性“取消保护”/loginendpoint,但AuthenticationFilter仍然会在到达/loginendpoint之前运行。我很困惑为什么它不起作用。

我的代码如下:

@Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .csrf().disable()

                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()

                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()

                .authorizeRequests()

                .antMatchers("/login").permitAll()
                .anyRequest().authenticated();

        http
                .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

        http.headers().cacheControl();

    }

共有1个答案

闻修筠
2023-03-14

Duplicate:如何只为一个特殊路径添加过滤器WebSecurityConfigurerAdapter

不能使用单个配置类执行此操作。看看这个问题:如何仅在安全endpoint上应用 Spring 安全过滤器?

在这种情况下,我认为更好的解决方案是配置多个HttpSecurity。

我们可以配置多个HttpSecurity实例,就像我们可以有多个块一样。关键是多次扩展WebSecurityConfigurationAdapter。例如,以下示例对以 /api/.开头的URL进行了不同的配置

该文档有一个完整的示例,其中包含完成此操作的必要步骤:

  1. 将身份验证配置为正常
  2. 创建一个包含@Order的WebSecurityCo
  3. http.ant匹配器声明此HttpSecurity将仅适用于以 /api/
  4. 开头的URL
  5. 创建WebSecurityConfigrerAdapter的另一个实例。如果URL不以 /api/将使用此配置。此配置在ApiWebSecurityConfigurationAdapter之后考虑,因为它在1之后有一个@Order值(没有@Order默认为最后一个)。

祝你好运!

 类似资料:
  • 在过去的几天里,我一直在和Spring保安公司战斗,所以我希望有人能在这里帮助我。 我正在使用Spring Boot 1.2.5 我使用的是Spring Actuator和Spring Remote Shell,它们已经从类路径中删除,认为它们可能会引起问题 我排除了SecurityAutoConfigsion,因为它可能会导致我的问题 这是我的主要课程 这是我的安全配置 我的问题/问题是 > C

  • 我有一个使用调用的进程。此任务被提交给executor服务。我允许进程在尝试取消它之前有x秒的运行时间。但是,当我调用并且任务在方法中等待时,线程/任务不会被取消。 我已经对代码进行了测试,如果将替换为,则会得到。但是,当任务位于内时,不会出现中断。在face中,直到Restful调用完成,该方法才返回。 我看到了这篇文章,取消、中止、中断一个spring android resttemplate

  • 我试着给多个URL全部许可,但我得到了403。当我禁用csrf时,所有请求都在没有身份验证的情况下工作。请在下面找到我的安全配置。 请指正我遗漏的地方。谢谢你...

  • 这里有一个简单的endpoint,存在于/api/v1/jwt中 返回一个有效的JWT令牌。 但我的安全配置不再起作用,现在所有endpoint似乎都受到保护, Edit:antPathRequestMatcher没有为configure启动,但我甚至添加了websecurity configure的路径,我得到了以下日志记录

  • 验证:我只需要文本框中的数字空间和加号

  • 我有多种服务。他们都使用jwt进行授权。但是,当我的服务相互通信时,我不希望它们进行身份验证。当客户端向serviceA发送请求,serviceA需要serviceB提供数据时,serviceA验证令牌就足够了(当客户端向serviceB发送请求时也是如此)。我使用eureka作为注册表,使用openfeign在服务之间进行通信。现在我总是收到这样的401回复: 更具体地说,我的authservi

  • https://docs.databricks.com/spark/latest/spark-sql/language-manual/alter-table-or-view.html#replace-columns

  • 我的Spring Boot执行器healthCheck被阻止,因为丢失了一个(pre_authenticated)令牌。 有很多答案可用,但这是一个问题有干扰预认证的安全性。据我查,这不是复制品。 如何允许在预先验证的安全环境中进行健康检查?