纯RESTful Spring资源服务器:是否需@EnableWebSecurity及WebSecurityConfigurerAdapter
关于Spring资源服务器是否需要额外WebSecurity配置的解答
先给你一个明确的结论:对于你的纯RESTful API资源服务器,你不需要额外添加@EnableWebSecurity注解,也不需要单独继承WebSecurityConfigurerAdapter——也就是对应你列出的选项4。
为什么不需要额外配置?
你观察到的@EnableResourceServer源码细节是关键:
@EnableResourceServer注解会自动导入ResourceServerConfiguration类,而这个类本身就继承了WebSecurityConfigurerAdapter。WebSecurityConfigurerAdapter的底层已经整合了@EnableWebSecurity的核心逻辑,也就是说,当你使用@EnableResourceServer时,相当于已经间接启用了Web Security的功能,完全满足官方文档里提到的“必须添加@EnableWebSecurity”的要求,不需要重复配置。
官方文档里的那段说明,其实是针对不使用OAuth2资源服务器/授权服务器注解的普通Web应用场景。对于纯资源服务器来说,@EnableResourceServer已经帮你把Web Security的初始化工作做了。
你的现有配置是有效的
看你贴出来的HGResourceServerConfigurerAdapter代码,这个配置完全符合纯RESTful API的需求:
- 你通过
configure(HttpSecurity)关闭了所有不需要的会话管理、表单登录、HTTP Basic等功能,设置了STATELESS的会话策略,这正是RESTful API无状态的要求。 - 配置了
RemoteTokenServices来远程验证令牌,同时覆盖了默认的UserDetailsService和PasswordEncoder,避免了Spring Security自动生成默认用户的问题,这一点做得很到位。
什么时候需要单独用@EnableWebSecurity?
只有当你的应用同时需要处理普通Web页面安全(比如登录页面)和资源服务器API时,才需要单独添加@EnableWebSecurity并继承WebSecurityConfigurerAdapter来配置全局的Web安全规则。但你的场景是纯RESTful API,完全不需要这种操作。
总结一下:你现在的配置已经足够,不需要再做选项1、2、3中的任何操作。
内容的提问来源于stack exchange,提问作者Daniel Donev
相关产品推荐
相关产品推荐

