然而,当我尝试运行以下代码时,我正在尝试一个使用Spring Boot 2.1.1和SpringSec5作为OAuth2资源服务器的演示项目
ENV
- Spring Boot 2.1.1版本
- Spring安全核心5.1.2
- Java 8
代码
@RestController
@SpringBootApplication
// @EnableResourceServer
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@GetMapping("/hello")
public String sayHello() {
return "Hello World";
}
@Configuration
static class MyWebSecurityConfigurerAdapter extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests().anyRequest().authenticated()
.and()
.oauth2ResourceServer().jwt(); // <--- throws error
}
}
}
这会抛出错误
工厂方法“springSecurityFilterChain”引发异常;嵌套异常为java.lang.NoClassDefFoundError:org/springframework/security/oauth2/server/resource/web/access/BearerTokenAccessDeniedHandler
构建
我的依赖项如下所示
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.springframework.boot:spring-boot-starter-security')
implementation(group: 'org.springframework.security.oauth.boot', name: 'spring-security-oauth2-autoconfigure', version: '2.1.1.RELEASE')
implementation(group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.3.4.RELEASE')
}
4条答案
按热度按时间nuypyhwy1#
添加
spring-boot-starter-oauth2-resource-server
依赖项时,异常消失ycggw6v22#
我也是。
但我是在
org.springframework.boot:spring-boot-starter-oauth2-resource-server
里找到的顺便说一下,我导入了
org.springframework.boot:spring-boot-starter-oauth2-resource-server
包并使用:如果您想启用
oauth2ResourceServer
,可能需要等待Spring Security 5.3.x。可能与next-generation-oauth-2-0-support-with-spring-security有关
bq9c1y663#
我把其他答案都改了,但在我的build.gradle文件中用的是“实施”
为什么要用“实施”?
以上引述自:((https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation))
我的完整文件如下
另请参阅
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa
用于实施与API的讨论
zazmityj4#
我面临着同样的问题,希望我找到的解决方案能帮助一些人。
当您使用Spring-Security-OAuth2并启用资源服务器时,请使用
WebSecurityConfigurerAdapter
进行端点安全配置并覆盖方法public void configure(HttpSecurity security) throws Exception{}