身份认证(身份验收、鉴权)是指通过一定的手段()、完成对用户的身份的确认
- 服务端渲染推荐使用Session认证机制
- 前后端分离推荐使用JWT认证机制
Session认证机制
HTTP协议的无状态性,指的是客户端的每次HTTP请求都是独立的,连续多个请求之间没有直接关系,服务器不会主动保留HTTP请求的状态 (类似超市收银员不会记住客户的账号)
突破HTTP的无状态性(cookie类似客户向超市收银员提供会员卡(身份标识)):当客户端登录成功后,服务器可以主动给客户端发身份标识——客户端在第二次或第三次请求的时候可以携带身份标识,只要服务器收到这个身份标识,服务器就知道要登录了——专业术语叫Cookie
Cookie:存储在用户浏览器中的一段不超过4KB的字符串,由一个名称(Name)一个值(Value)和其他几个用于控制Cookie有效性、安全性、使用范围的可选属性组成
- 不同域名下面的Cookie是各自独立的,每当客户端发起请求的时候,会自动将当前域名下所有未过期的Cookie一同发送到服务器,也就是百度的域名不可以访问其他域名的cookie,cookie是有个有效期(expires)
- cookie自动发送——全部=未过期
- 域名独立(自己的域名用自己的cookie访问)
- 过期时限
- 4KB限制(键值对的形式)
Cookie在身份认证中起的作用: 当客户端第一次请求服务器的时候,服务器通过响应头的形式,向客户发送一个身份认证的cookie,客户端就会自动将cookie保存在浏览器中
当客户端浏览器再次请求服务器的时候,浏览器会自动将身份认证相关的cookie,通过请求头的形式发送给服务器,服务器就可以验明客户端的身份
是一样的, 说明保存在浏览器的Cookie通过请求头的形式,(自动)发送到服务器,进行客户端的身份验证
Cookie:不具有安全性(由于Cookie是存储在浏览器中的,而浏览器也提供了读写Cookie的API,因此Cookie很容易被伪造,不具有安全性,因此不建议服务器将重要的隐私数据,通过Cookie的形式发送给浏览器)——我们在浏览器使用伪造的Cookie去访问服务器也有可能认证成功,所以Cookie不具有任何安全性,不要使用Cookie存储重要的隐私信息:比如用户的身份信息、密码等
提高身份认证的安全性:(会员卡:Cookie+刷卡认证:服务器端认证客户端的Cookie——是Session认证机制的精髓)
Session工作原理(隐私数据保存在服务器内存中,cookie没有隐私数据,身份认证获取隐私信息)
首先客户端浏览器登录(提交账号和密码)——> 服务器验证账号和密码(将登录成功的信息存在服务器的内存中,同时生成对应的cookie字符串)——>服务器响应头的形式将生成的cookie响应给客户端——>浏览器自动将cookie存储在当前域名下面
客户端浏览器第二次发送请求的时候,通过请求头自动把当前域名下所有可用的cookie发送给服务器——>服务器根据请求头中携带的cookie信息,从内存中查找对应的用户信息(用户的身份认证成功后,服务器针对当前用户生成特定的响应内容)——>服务器响应:把当前的用户对应的页面内容响应给浏览器