微服务用户登录认证授权设计

用户访问简单流程图:

图片描述

用户获取token:

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

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

通过用户ID删除Redis缓存中对应的token

用户访问资源:

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

资源访问资源:

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

说明:

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

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

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

  • 后台编辑角色与权限的关系只需要更新下缓存
  • 后台编辑用户与角色的关系时要根据用户ID移除Redis中对应的token,用户需要刷新token或重新登录。
  • 后台删除角色时通过角色与用户的关系数据获取拥有对应角色的用户集合,再根据用户集合移除token
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值