spring security中使用用户角色的方法级别安全性oauth2

时间:2016-07-18 12:38:58

标签: spring spring-security spring-boot spring-security-oauth2 oauth2

如何使用spring security oauth2在资源服务器中获得方法级安全性?我知道客户端范围和角色,我说的是使用用户角色的方法级安全性,如 -

 @PreAuthorize("hasRole('ROLE_ADMIN')")
 @RequestMapping("/accessibleByAdminOnly")
 public String accessibleByAdminOnly() {
    return "Welcome Admin!";
}

我的资源服务器配置如下所示 -

@SpringBootApplication
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class DemoAPIServiceApp extends GlobalMethodSecurityConfiguration {

    @Autowired
    private ApplicationContext applicationContext;

    @Override
    protected MethodSecurityExpressionHandler createExpressionHandler() {
        DefaultMethodSecurityExpressionHandler methodSecurityExpressionHandler = new DefaultMethodSecurityExpressionHandler();
        methodSecurityExpressionHandler.setRoleHierarchy(roleHierarchy());
        methodSecurityExpressionHandler.setApplicationContext(applicationContext);
        return methodSecurityExpressionHandler;
    }

    @Bean
    public RoleHierarchy roleHierarchy() {
        RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
        roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_USER");
        return roleHierarchy;
    }
    @Bean
    public RoleVoter roleVoter() {
        return new RoleHierarchyVoter(roleHierarchy());
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoAPIServiceApp.class, args);
    }
}

我正在使用带有自定义用户详细信息的标准spring oauth2 auth服务器配置。我有一个客户端和一个范围。

请帮忙。方法级别安全性不适用于此配置。

0 个答案:

没有答案