如何使用Java中的Spring安全OAuth2在资源服务器中动态配置Httpsecurity?

时间:2016-01-21 04:43:23

标签: java spring spring-security oauth-2.0

我是Spring OAuth 2的新手。我想知道如何使用Spring OAuth 2.0动态配置资源服务器中的Httpsecurity。由于我有antMatchersscopes的列表,这些列表存储在数据库中(可能会在以后添加antMatchers并且可以添加scopes)。

对于单antMatchersscope我已经尝试过,如下所示,它按预期工作:

@Override
public void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/adminservice/")
        .access("#oauth2.hasScope('Products')");
}

如果存在数据库中存在antMatchersscopes的列表,我该如何配置它,如:

**antMatchers**     **scopes**
/adminservice/      products
/xxxx/              yyyy
/yyyy/              xxxx
/jkjlk/             uyuuy
/klklk/             hjkskjk

此处spring引导本身希望在资源服务器中动态地从数据库中配置antMatchers各自的scope

我怎样才能做到这一点?

1 个答案:

答案 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()+"')");
    }
}

现在,这将解决启动期间的配置问题。如果您希望能够在运行时动态更改此值,我建议您重新启动服务器(如果它是一个选项)。