我使用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();
}
字符串
我确信可以为特定端点创建授权自定义,但是如何创建呢?
1条答案
按热度按时间kkbh8khc1#
一旦你超越了入门体验,同一个文档页面将介绍如何定义Sping Boot 提供的相同组件,这样你就可以开始自定义配置了。由于Sping Boot ,每个组件都是可选的。特别是,注意它定义了两个
SecurityFilterChain
@Bean
,带有@Order
注解,还注意第一个包括:字符串
如果没有这一行(或将其中包含的代码复制到您自己的代码中),则不会设置授权服务器的协议端点,这就是您观察到
但会破坏授权服务器