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

Spring Boot 2不会忽略permitAll上的授权标头

穆鸿波
2023-03-14

我的Spring安全配置如下:

@EnableWebSecurity
@Order(1)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().authorizeRequests()
      .antMatchers("/rest/app/health").permitAll()
      .antMatchers("/*/app/**").authenticated()
      .antMatchers("/**").permitAll().and().httpBasic();
  }

  @Override
  public final void configure(final WebSecurity web) throws Exception {
    super.configure(web);
    web.httpFirewall(new DefaultHttpFirewall());
  }

}

我只包括了spring security,而不是oauth2。由于某些原因,如果有人使用授权头访问任何允许的url,例如/rest/app/health,他将获得401未授权。没有头部的情况下工作正常。

我怎么能忽略授权头,因为我需要这个头作为请求参数来将我的请求委托给第三方服务。

共有1个答案

贡正诚
2023-03-14

将对通过HttpSecurity配置的所有endpoint执行筛选器。如果不希望筛选器应用于某些endpoint,请将其包含在配置Web安全性的方法中。

你需要改变这种方法

 @Override
  public final void configure(final WebSecurity web) throws Exception {
    super.configure(web);
    web.httpFirewall(new DefaultHttpFirewall());
  }

自:

@Override
    public void configure(WebSecurity web) {
        web.ignoring()
            .antMatchers(HttpMethod.POST, "/rest/app/health");
    }
 类似资料:
  • 我有我的OAuth服务器和客户端,它是由Oauth2授权的。 现在,如果我需要呼叫我的服务,我需要: > 使用以下API从服务器生成访问令牌: < code > localhost:9191/oauth/token?grant _ type =密码 其给出如下响应: 现在我正在传递访问令牌,以运行客户端服务,如下所示: 我需要跳过控制器的身份验证。我该怎么做?有人能帮忙吗 我的WebSecurit

  • MyControllerTest.java ApplicationContext-test.xml MyController.java

  • 授权策略 必须 使用 授权策略 类来做用户授权。 使用基类 所有 Policy 授权策略类 必须 继承 app/Policies/Policy.php 基类。基类文件如下: <?php namespace App\Policies; use Illuminate\Auth\Access\HandlesAuthorization; class Policy { use HandlesA

  • 这个问题看起来可能重复,但以下答案都没有解释何时使用: 和 HttpSecurity、WebSecurity和AuthenticationManagerBuilder Spring Security中Web忽略和Http允许的区别 通过阅读StackOverflow asnwers和几篇文章,我了解到: configure(HttpSecurity)允许在资源级别配置基于web的安全性。 conf

  • 我的异步方法有问题。它工作正常,但线程数一直在增加。 下面是我的代码示例: 位于GitHub的完整项目:https://github.com/rublin/KarboMarketplaceExplorer 直接链接到类 下面是一个测试,涵盖了这种行为。

  • http://${host}:${port}/auth/realms/${realm_name}/authz/protection/resource_set 但是我没有看到一个API来CRUD授权策略和权限。 我试图通过protection/resource_setendpoint创建策略,但失败了: