我想写一篇最简洁的web权限

基础概念

RBAC(role-base access control) -基于角色的访问控制。其意思简单概括为权限与角色相关。因此会衍生出两种权限校验,一种是认证-你能不能进来 ,一种是鉴权-你进来干什么。

jwt(json web token)-服务端颁发给客户端,用来做身份认证的令牌。他可以携带一些不敏感的用户信息.jwt由header【声明类型和加密算法】、payload【用户信息】、signature【加盐,用于验证信息】

jwt认证流程

我想写一篇最简洁的web权限

  1. 携带用户信息:没啥好讲的,最普通的就是携带用户名密码,你也可以加验证码或者其他的东西
  2. 认证用户信息:根据客户端信息查询服务端对应的用户信息,并与客户端信息做校验,校验通过则生成token。token信息中要携带用户角色【我们之前讲过RBAC】。需考虑的问题如下
    1. 用户信息脱敏,包括客户端传过来的敏感信息,token的加密方式。
  3. 返回token:这里token需要存在客户端,以便后续访问时携带token。
    1. token的客户端储存方案
    2. 如何防止token被盗用
    3. token失效时间,它不能一旦生成永久有效
  4. 携带token请求资源接口:没啥好说的,一般走请求头就好了。
  5. 认证token与角色:解析token,获取角色信息,先校验当前token是否有效,再校验当前token是否有权利访问该资源
  6. 数据返回。

编码思路

使用io.jsonwebtoken包解决token生成,校验,失效。

使用spring-security解决认证与鉴权。

使用配置中心统一token配置。如失效时间,秘钥。

前端使用localStorage储存token。

为什么 选择token

以往总是使用表单校验-即你用户信息传过来,我就校验你用户信息对不对。但在微服务环境下,所有请求都要走一遍校验就显得费劲了,而token,你只要带上它就可以了,通过加密方式也使得token的安全性有了一定的保障,目前唯一的问题还是在于token盗用。所以使用token,它的生效时间最好短一点。

再如像单点登入,其实单点不单点无所谓,你再加一个认证中心服务,请求发送前都走一道认证中心就好了,只是有点没必要而已。

peace and love

展开阅读全文

页面更新:2024-04-14

标签:单点   权限   令牌   表单   用户信息   服务端   安全性   简洁   客户端   加密算法   敏感   角色   方式   时间   资源   科技   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top