从2.7.6升级到Sping Boot 3.0.0后,无法访问公共API。
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.csrf(CsrfConfigurer::disable)
.authorizeHttpRequests(requests -> requests
.anyRequest().authenticated())
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
.build();
}
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return web -> web
.ignoring()
.requestMatchers(CorsUtils::isPreFlightRequest)
.requestMatchers("/actuator/**", "/graphiql/**", "/voyager/**", "/vendor/**", "/rest/**",
"/swagger-ui/**", "/v3/api-docs/**");
}
2条答案
按热度按时间11dmarpk1#
你就快到了:将带有
permitAll
的requestMatchers
移动到SecurityFilterChain
定义(并删除WebSecurityCustomizer
):注意事项:
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
会话,则永远不要禁用CSRF保护http.cors().configurationSource(corsConfigurationSource())
oauth2ResourceServer
配置器提供您自己的jwtAuthenticationConverter
,将角色、组或授权服务器作为私有声明填充的任何内容Map到Spring授权您可以在没有Java conf的情况下(只有几个属性)使用thin wrappers围绕
spring-boot-starter-oauth2-resource-server
完成以上所有操作我写道:x一个一个一个一个x一个一个二个一个x一个一个三个一个
完整的(简短的)教程(仅包含spring库或"my" Package 器):https://github.com/ch4mpy/spring-addons/tree/master/samples/tutorials
e0bqpujr2#
方法没有太大变化。
样品:
由https://docs.spring.io/spring-security/reference/servlet/authorization/authorize-http-requests.html提供
编辑:要完成我的回答,您可以访问所有方法,因此要设置资源服务器,您需要添加以下内容:
请记住添加与OAuth2提供程序对应的变量
链接取决于您的oauth2提供程序。
有关资源所有者服务器的详细信息:https://docs.spring.io/spring-security/reference/servlet/oauth2/resource-server/index.html