Spring Cloud Zuul权限集成
1.自定义权限认证Filter
由于Zuul对请求转发全程的可控性,我们可以在 RequestContext的基础上做任何事情,设置一个执行顺序靠前的Filter,就可专门 用于对请求特定内容做权限认证。
这种方式的优点是实现灵活度高,可整合已有权限 系统,对原始系统微服务化特别友好;缺点是需要开发 一套新的逻辑,维护增加成本,而且也会使得调用链路 变得紊乱。
2.OAuth2.0+JWT
Oauth2.0的运行原理如图
在整个流程中,用户是资源拥有者,其关键还是在 于客户端需要资源拥有者的授权,这个过程就相当于键 入密码或者是其他第三方登录,触发了这个操作之后, 客户端就可以向授权服务器申请Token,拿到后再携带 Token到资源所在服务器拉取相应资源。
JWT(JSON Web Token)是一种使用JSON格式来 规约Token或者Session的协议。由于传统认证方式免不 了会生成一个凭证,这个凭证可以是Token或者 Session,保存于服务端或者其他持久化工具中,这样一 来,凭证的存取就变得十分麻烦,JWT的出现打破了这 一瓶颈,实现了“客户端Session”的愿景。
JWT通常由三 部分组成:
OAuth2.0+JWT的意义就在于,使用OAuth2.0协议 的思想拉取认证生成Token,使用JWT瞬时保存这个 Token,在客户端与资源端进行对称或非对称加密,使 得这个规约具有定时、定量的授权认证功能,从而免去 Token存储所带来的安全或系统扩展问题。