JWT&Spring Security知识点记录

149 阅读3分钟

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」 Wireshark模块介绍


Spring Security是一个强大的安全验证框架,但难上手。 应用领域:身份验证 权限验证

OAuth2

是一种授权机制,它的最终目的是为第三方应用颁发一个有时效性的令牌 token,使得第三方应用能够通过该令牌获取相关的资源。

Token认证的优势

1.服务器不需要存储session信息 缺点:后端在有效期内销毁token或者更改权限,不会立即生效,一般等到有效期之后生效;用户登出后,token仍然有效。 2.有效避免CSRF攻击 CSRF:跨站请求伪造 一般token存放在local storage中,前端请求后端会通过某种方式带上token,这样不会出现CSRF漏洞的问题。但是会存在XSS攻击,为了避免XSS攻击,将token存储在标记为httpOnly的cookie中,这样必须自己提供CSRF 3.适合移动端应用 4.单点登录友好

Token常见问题 退出登录、注销登录、修改密码、修改用户角色的权限、用户账号被删、用户被管理员注销等情况下token还有效。 解决方法: 1.token存入数据库 实现失效删除token 2.黑名单机制 数据库维护黑名单,实现失效将token存入黑名单 3.修改密钥(不推荐) 为用户创建单独的密钥

  • 分布式 每次新的token都要在多台机器同步密钥,为此密钥需要存储在数据库或服务器中
  • 若浏览器有两个用户,手机端1个用户会导致一个账号退出,其他的账号都会退出登录。 4.token有效期缩短

修改密码后token还有效,使用用户密码的哈希值对token进行签名

token续签 session认证中,session有效期30分钟,如果30分钟内有用户访问,就把session有效期被延长至30分钟。 解决方案: 1.检查token是否过期,如果快马上快过期了,生成新的token。客户端每次请求都检查新旧token是否一致,不一致更新本地token。 2.每次请求都生成新的token,开销大

JWT最适合的场景是不需要服务端保存用户状态。

什么是Spring Security 基于Spring AOP和Servlet过滤器的安全框架,在web请求级和方法调用级处理身份确认和授权。

在Spring Framework基础上,Spring Security充分利用了依赖注入(DI)和面向切面编程(AOP)功能

核心功能 1.认证 2.验证(权限)3.攻击防护

原理技术 Filter、Servlet、Spring DI、SpringAOP

常用安全框架 主要是Spring Security和Apache Shiro 都支持1.认证 2.授权 3.加密 4.会话 5.缓存支持 6.remberMe功能 ......

  • 区别

1.Spring Security基于Spring,项目若以Spring作为基础,配合Spring Security更加方便。 Apache Shiro需要和Spring进行整合。 2.Spring Security功能比Shiro更加丰富,如安全防护 3.Spring Security社区资源更加丰富 4.Spring Security可以和Spring Boot、Spring Cloud无缝集成

1.Shiro使用配置简单 2.Shiro依赖性低,不需要任何框架、容器,独立运行。Spring Security依赖Spring容器。