使用Spring启动和JWT安全REST Api

时间:2015-11-21 09:43:29

标签: java spring rest jwt

我试图使用@Component来保护我的REST服务器,我已经实现了自己(意味着JWT中没有弹簧处理它自己,其他一切当然是JWT

我有这门课:Spring

我有一个过滤器,负责在JWTToken implements Authentication设置JWTToken个实例:

SecurityContextHolder

我也有调试这个的资源:

public class JwtFilter extends GenericFilterBean {
public void doFilter(...) {
     ....
     JWTToken token = new JWTToken(jwt); // this init the Authentication object with all the jwt claims
     SecurityContextHolder.getContext().setAuthentication(token);
     ....
}

我错过了一个我在网上任何资源中找不到的难题,这就是如何实现@RequestMapping( value = "/protected_resource", method = RequestMethod.POST ) @RolesAllowed("admin") public RESTResponse<String> debugJwt() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // here I can see that the context is the right one return new RESTResponse<>("This was successful", "feedback message", true); } ,特别是WebSecurityConfigurerAdapter metohd。

当我尝试这样做时,例如:

configure(HttpSecurity http)

请求没有通过此请求,资源未被调用。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您的JWTToken课程应该实施该方法:

Collection<? extends GrantedAuthority> getAuthorities();

实现应返回用户授予角色的集合,其中一个将是&#34; admin&#34;角色,如:

public Collection<? extends GrantedAuthority> getAuthorities() {
    return Collections.singletonList(new SimpleGrantedAuthority("admin"));
}

当然,在您的情况下,您将查询数据库或JWT令牌并解析用户角色。