39丨Staffjoy安全认证架构和SSO

在看完网站安全认证架构的演进历史和jwt的基本原理之后,今天来介绍Staffjoy的安全认证设计和SSO(Single Sign On,单点登录)。

  • Staffjoy项目的认证是一种基于jwt的无状态认证机制
  • 它的登录认证职责主要有WWW服务来承担,令牌集中校验的职责主要有Faraday网关来承担
  • 假设用户已经通过WWW服务注册为正式用户,他登录网站其实也是通过WWW服务来操作的。
    • 用户通过浏览器向WWW服务的/login端点Post一个登录请求,需要提供Email和PassWord,WWW服务接收到请求通过调用Account API来校验,Email和Password是否正确。
    • 校验通过WWW服务会生成对应的JWT令牌,并且以浏览器Cookie的形式将Jwt令牌种到用户浏览器中,而且Cookie是种在根域上面的。
    • 登录成功后,WWW服务还会向浏览器发送一个302跳转指令,跳转到默认应用或者原先试图访问的应用

  • 后续访问阶段,APP单页应用可以通过浏览器向Staffjoy发送HTTP请求
  • 假设,现在要请求Account API的数据,因为整个Staffjoy的所有应用服务都会在同一个根域下面,所以这个请求会自动的带上Cookie+JWT
  • Faraday网关会截获这个请求,提取出Cookie中的JWT,并且进行校验,同时提取出用户数据useID , 然后将请求向Account API进行转发,并且在HTTP head中会带上useID
  • Account API接收到带有useID的请求,相当于知道这个请求是哪个用户发起的,于是可以进行进一步的操作,最后将操作结果通过Faraday网关间接返回到用户的浏览器
  • 只有JWT令牌还没有过期,后续用户可以一直进行操作,直到JWT令牌自动过期,或者用户主动登出log out, log out很简单,只需要清除根域下对应的Cookie就可以了

posted @ 2020-03-30 15:18  bm小明  阅读(392)  评论(0编辑  收藏  举报