前后端分离之SpringSecurity做JWT认证

前后端分离为何需要用户认证

HTTP协议是无状态的,前一步请求认证,后一步请求忘记
为了保证系统安全,就要验证用户是否处于登陆状态

传统认证方式

前后端分离项目中,在通过Restful API进行交互时,如何验证用户 登陆状态和权限??
》前端登陆,后端生成token并保存用户数据到redis或者Session中,然后将token存入前端
》前端发请求并携带token,后端通过token查询用户信息是否过期
缺点:请求劫持 https
XSS注入 设置httpOnly,使得cookie不被js读取,设置secure,使得cookie只能https传输。替换敏感字符
XSRF攻击,增加存储负担:对称加密,非对称加密

JWT认证实现

概念:以json对象进行传输,是一种简洁,自包含的标准前后端分离之SpringSecurity做JWT认证_第1张图片
作用:使用带签名的token进行用户和权限的验证
后端直接通过jwt获取用户信息,通过header的Authorization位进行效验
实现:
1)用户登录时做用户名密码校验;
2)用户登录后收到请求时 做token和权限的校验;
3)进行token的定时刷新
流程:
前后端分离之SpringSecurity做JWT认证_第2张图片
注:

  1. 后端登陆成功,将用户信息作为jwt负载,将头部和负载分别进行base64编码,拼接后进行签名,拼接后形成JWT
  2. 前端每次请求将jwt放入HTTP的header的Authorization位,防止了token泄露:::解决了XSS,XSRF问题
    优点:将用户状态分散到客户端,减轻服务端压力

你可能感兴趣的:(前后端分离之SpringSecurity做JWT认证)