Spring Security Spring Authorization Server公开其余端点

shstlldc  于 2023-08-05  发布在  Spring
关注(0)|答案(1)|浏览(138)

我使用spring-boot-starter-oauth2-authorization-server实现了一个授权服务器。一切似乎都很完美。但是,我需要公开一些端点来创建用户,获取用户权限等,因此我需要将auth服务器配置为同时充当资源服务器。
我需要“POST /users”是公共的,没有授权,而“GET /users/{userId}/permissions”需要一个有效的JWT令牌出现在头中。
我尝试创建一个SecurityFilterChain bean,它允许访问/users端点,但它会破坏授权服务器:

@Bean
  public SecurityFilterChain configureSecurityFilterChain(HttpSecurity http) throws Exception {
    http.authorizeHttpRequests(authorizeRequests -> authorizeRequests
        .requestMatchers(HttpMethod.POST, "/users").permitAll()
        .anyRequest().authenticated());
    http.csrf(AbstractHttpConfigurer::disable);
    return http.build();
  }

字符串
我确信可以为特定端点创建授权自定义,但是如何创建呢?

kkbh8khc

kkbh8khc1#

一旦你超越了入门体验,同一个文档页面将介绍如何定义Sping Boot 提供的相同组件,这样你就可以开始自定义配置了。由于Sping Boot ,每个组件都是可选的。特别是,注意它定义了两个SecurityFilterChain@Bean,带有@Order注解,还注意第一个包括:

OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);

字符串
如果没有这一行(或将其中包含的代码复制到您自己的代码中),则不会设置授权服务器的协议端点,这就是您观察到
但会破坏授权服务器

相关问题