Basic Auth认证, Session/Cookie认证,JWT Token认证使用场景和优缺点分析
一. 为什么要认证授权
http协议是一种无状态协议,每用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每一次请求都是一次新的请求(浏览器与服务器是使用socket套接字进行通信,服务器将请求结果返回给浏览器之后,会关闭当前的socket链接,而且服务器也会在处理页面完毕之后销毁页面对象)。
为了使后台应用能识别是哪个用户发出的请求,我们必须做一些事情。
二. Basic Auth
简单点说明就是每次请求API时都提供用户的username和password。
缺点很明显,安全性低,每次都需要传递用户名和密码,用户名和密码很大程度上存在被监听盗取的可能;
完全不建议使用!
三. 传统Session/Cookie认证
实现状态保持主要两种方式:
1. 在客户端存储信息使用Cookie:安全性不高,个人不建议使用。
2. 在服务端存储信息使用Session:服务器开销大,扩展性低(分布式场景需要解决session共享问题:可以使用绑定ip访问或者Redis共享session信息)。中小型单体架构网站可以使用session认证。
session认证流程: