微服务用户登陆认证受权设计

用户访问简单流程图:

图片描述

用户获取token:

携带帐号密码访问认证中心,认证中心校验合法后经过jwt生成token(消息体包含用户ID,过时时间)
而且以用户ID为key,token为value缓存到Redis中缓存

用户退出、修改密码或后台强制用户退出:

经过用户ID删除Redis缓存中对应的token服务器

用户访问资源:

用户携带token访问统一API网关,网关经过过滤器解析token获取用户ID,判断过时时间,
经过用户ID查询Redis缓存是否存在,再生成新的token(消息体包含用户ID,过时时间,用于服务与服务之间调用使用,过时时间能够设置1分钟左右),将新的token添加到请求头中带去资源服务器spa

资源访问资源:

须要携带网关生成的token去访问jwt

说明:

认证中心生成的token与网关生成的token使用的签名不能相同,这样能够确保用户没法直接访问资源服务器,只能经过网关去访问。token

怎么处理用户角色权限(RBAC的)?

在认证中心生成的token消息体中包含用户拥有的角色ID集合,访问网关时从缓存中获取角色与权限的关系,而后校验是否有权限访问。图片

  • 后台编辑角色与权限的关系只须要更新下缓存
  • 后台编辑用户与角色的关系时要根据用户ID移除Redis中对应的token,用户须要刷新token或从新登陆。
  • 后台删除角色时经过角色与用户的关系数据获取拥有对应角色的用户集合,再根据用户集合移除token
相关文章
相关标签/搜索