基于jwt和角色的访问控制解决方案

0,主要解决两个问题:1身份验证(防止httpclient拼接请求),2权限控制

1,身份验证使用jwt,在java就是jjwt

  jwt可以比较好的整合restful,对无状态客户端比较友好,(用session和cookie是有状态的,session由服务器维护,如果项目大了使用了分布式,

  就一个session绑在一台特定的服务器上,不能很好的均衡负载

流程图:

jwt  quick start

Key key = MacProvider.generateKey();

String compactJws = Jwts.builder()
  .setSubject("Joe")
  .signWith(SignatureAlgorithm.HS512, key)
  .compact();

上面的compactJws就会产生下面的token

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJKb2UifQ.yiV1GWDrQyCeoOswYTf_xvlgsnaVVYJM0mU6rkmRBf2T1MBl3Xh2kZii0Q9BdX5-G0j25Qv2WF4lA6jPl5GKuA

验证:

try {

    Jwts.parser().setSigningKey(key).parseClaimsJws(compactJws);

    //OK, we can trust this JWT

} catch (SignatureException e) {

    //don't trust the JWT!
}

2,基于角色权限控制

 

posted on 2017-12-02 11:34  Kooing  阅读(4127)  评论(0编辑  收藏  举报

导航