【发布时间】:2015-05-22 04:29:38
【问题描述】:
在我的应用程序中,我实现了oauth2 AuthorizationServer 和 ResourceServer。我系统中的每个用户都有一组他的角色(权限)。
我想使用 oauth2 和基于用户角色的安全性来保护我的 Spring MVC REST 端点。
是否可以将 oAuth2 身份验证/授权与 UserDetails.getAuthorities() 方法中定义的不同角色(权限)一起使用?
我的配置:
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;
}
}
和
@Configuration
@EnableResourceServer
protected static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(ResourceServerSecurityConfigurer resources) {
resources
.resourceId(RESOURCE_ID);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/profile/*").hasRole("PERMISSION_ADMIN")
.and().csrf()
.disable().sessionManagement().sessionCreationPolicy(STATELESS);
}
}
@RestController
@RequestMapping("/api/v1.0/profile")
public class ProfileController {
@PreAuthorize("hasRole('PERMISSION_ADMIN')")
@RequestMapping("/currentUser")
public User currentUser(@AuthenticationPrincipal User user) {
return user;
}
}
我想为拥有PERMISSION_ADMIN 的用户保护/profile/* 路径。但是现在任何拥有 accessToken 的人都可以访问这个端点。我哪里错了?
【问题讨论】:
标签: java spring rest oauth-2.0 spring-security-oauth2