Java RESTAPI、oAuth2、spring安全性和角色

Java RESTAPI、oAuth2、spring安全性和角色,java,spring,rest,oauth-2.0,spring-security-oauth2,Java,Spring,Rest,Oauth 2.0,Spring Security Oauth2,在我的应用程序中,我实现了oauth2AuthorizationServer和ResourceServer。我的系统中的每个用户都有一组角色(权限) 我希望使用oauth2和基于用户角色的安全性来保护我的Spring MVC REST端点 是否可以对UserDetails.getAuthories()方法中定义的不同角色(权限)使用oAuth2身份验证/授权 我的配置: private final static class DBUserDetails extends User implement

在我的应用程序中,我实现了
oauth2
AuthorizationServer和ResourceServer。我的系统中的每个用户都有一组角色(权限)

我希望使用oauth2和基于用户角色的安全性来保护我的Spring MVC REST端点

是否可以对UserDetails.getAuthories()方法中定义的不同角色(权限)使用oAuth2身份验证/授权

我的配置:

private final static class DBUserDetails extends User implements UserDetails {

    private static final long serialVersionUID = 1L;

    private DBUserDetails(User user) {
        super(user);
    }

    public Collection<? extends GrantedAuthority> getAuthorities() {
        return AuthorityUtils.createAuthorityList("ROLE_USER");
    }

    public String getUsername() {
        return getName();
    }

    public boolean isAccountNonExpired() {
        return true;
    }

    public boolean isAccountNonLocked() {
        return true;
    }

    public boolean isCredentialsNonExpired() {
        return true;
    }

    public boolean isEnabled() {
        return true;
    }

}
我想保护具有
权限的用户的
/profile/*
路径。但是现在任何拥有accessToken的人都可以访问这个端点。我错在哪里?

我想您可以在ResourceServerConfiguration中为我使用它,它的工作原理如下:

http
.requestMatchers().antMatchers("/oauth/api")
.and()
.authorizeRequests()
.antMatchers("/oauth/api").access("#oauth2.hasRole('ADMIN')")...

谢谢,我将在近几个小时内试一试!有没有机会通过注释而不是方法以同样的方式工作?@alexanoid说实话,我没有尝试。调查的要点很好这是行不通的。没有方法#oauth2.hasRole。正确的方法是hasRole:.antMatchers(“/oauth/api”).access(“hasRole('ADMIN')”)
http
.requestMatchers().antMatchers("/oauth/api")
.and()
.authorizeRequests()
.antMatchers("/oauth/api").access("#oauth2.hasRole('ADMIN')")...