Spring 安全 OAuth2 实现
Posted
技术标签:
【中文标题】Spring 安全 OAuth2 实现【英文标题】:Spring security OAuth2 implementation 【发布时间】:2017-08-06 01:17:40 【问题描述】:使用 Spring Boot 1.5.2.RELEASE
和 Java 8
我试图了解,public void configure(HttpSecurity http)
的 WebSecurityConfigurerAdapter
和 ResourceServerConfigurerAdapter
的方法是什么?
使用以下代码,ResourceServerConfigurerAdapter
的 configure(HttpSecurity http)
方法优先于 WebSecurityConfigurerAdapter
。我在ResourceServerConfiguration
中所做的所有更改都正在生效,看来WebSecurityConfigurerAdapter
被完全忽略了。
我们什么时候使用这些方法(用例)?而且,即使是授权类型password
也需要覆盖WebSecurityConfigurerAdapter.configure(..)
方法
使用security.oauth2.resource.filter-order = 3
如果没有这个属性,我会不断收到403 Access Denied
OAuth2 资源过滤器的默认顺序已从 3 更改为 SecurityProperties.ACCESS_OVERRIDE_ORDER - 1
网络安全配置
@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter
@Override
public void configure(HttpSecurity http) throws Exception
http.csrf().disable()
.authorizeRequests()
.antMatchers("/unsecured").permitAll()
.antMatchers("/users").hasRole("USER")
.antMatchers("/api/secured").hasRole("ADMIN")
.antMatchers("/api/admin").authenticated()
.antMatchers("/greeting").authenticated();
资源服务器
@Configuration
@EnableResourceServer
protected static class ResourceServerConfiguration extends
ResourceServerConfigurerAdapter
public void configure(HttpSecurity http) throws Exception
http.csrf().disable()
.authorizeRequests()
.anyRequest().permitAll();
【问题讨论】:
【参考方案1】:我想你在这里有答案,请查看给出的解决方案 Spring Security OAuth2, which decides security?
【讨论】:
以上是关于Spring 安全 OAuth2 实现的主要内容,如果未能解决你的问题,请参考以下文章
使用Spring Security和OAuth2实现RESTful服务安全认证
spring cloud gateway + oauth2 实现网关统一权限认证
使用 Spring Boot 的角色层次结构和 OAuth2 安全性
在 Spring OAuth2 中配置安全性:身份验证请求的访问被拒绝