我是Spring OAuth 2的新手。我想知道如何使用Spring OAuth 2.0动态配置资源服务器中的Httpsecurity
。由于我有antMatchers
和scopes
的列表,这些列表存储在数据库中(可能会在以后添加antMatchers
并且可以添加scopes
)。
对于单antMatchers
和scope
我已经尝试过,如下所示,它按预期工作:
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/adminservice/")
.access("#oauth2.hasScope('Products')");
}
如果存在数据库中存在antMatchers
和scopes
的列表,我该如何配置它,如:
**antMatchers** **scopes**
/adminservice/ products
/xxxx/ yyyy
/yyyy/ xxxx
/jkjlk/ uyuuy
/klklk/ hjkskjk
此处spring引导本身希望在资源服务器中动态地从数据库中配置antMatchers
各自的scope
。
我怎样才能做到这一点?
答案 0 :(得分:3)
根据您的数据库访问机制,只需自动装配您的jdbcTemplate,entityService并执行:
@Override
public void configure(HttpSecurity http) throws Exception {
List<Matcher> matchers=matchersService.getAll();
for(Matcher m : matchers) {
http.authorizeRequests()
.antMatchers(m.getMapping())
.access("#oauth2.hasScope('"+m.getScope()+"')");
}
}
现在,这将解决启动期间的配置问题。如果您希望能够在运行时动态更改此值,我建议您重新启动服务器(如果它是一个选项)。