关于四种鉴权方式

概念

鉴权:验证用户是否拥有访问系统的权利。

传统的鉴权是通过密码来验证的,这种方式的前提是,每个获得密码的用户都已经被授权。在建立用户时,就为此用户分配一个密码,用户的密码可以由管理员指定,也可以由用户自行申请。这种方式的弱点十分明显:一旦密码被偷或用户遗失密码,情况就会十分麻烦,需要管理员对用户密码进行重新修改,而修改密码之前还要人工验证用户的合法身份。

鉴权方式

HTTP Basic Authentication

HTTP协议实现的基本认证方式,此方式在客户端会弹出一个登录窗口,由用户输入用户名和密码进行登录,安全性不高。

利用服务端的 Session(会话)和浏览器(客户端)的 Cookie 来实现的前后端通信认证模式。

当客户端第一次向服务器发送请求,服务器第一次接收到请求时,为此请求开辟一块内存空间(一个Session对象),服务器会为这个Session对象生成一个唯一的标识sessionID,并在HTTP响应头的 Set-Cookie:JSESSIONID=XXXXXXX 中设置这个sessionID(Session的实现依赖Cookie)。

客户端收到服务端的响应后会解析响应头,根据Set-Cookie将sessionID保存在本地Cookie中,当下次向服务器发送请求时,请求头会自动附上该域名下的 Cookie 信息,而服务端接收客户端请求时会去解析请求头 Cookie 中的sessionID,根据sessionID找到Session对象,从而获取用户信息。

这个 sessionID 一经创建,就在后面的每次 http 请求中,都带在请求头当中。服务器就是靠这种标识,来区别客户端是哪一个的。

但是 sessionID 是基于Cookie存储的方式保存,如果Cookie被截获,用户就容易受到跨站请求伪造的攻击,这是不安全的。

Token 验证

Token实际就是在计算机身份验证中的令牌(临时)的意思。当前端向后端发起数据请求的时候,后端需要对前端进行身份验证,但是我们又不想每次都输入用户名和密码,这是就需要一个标识来证明自己的身份,这个标识就是token。

这种验证是在 App 兴起以后发展起来的,因为在 App 里没有浏览器环境,没有Cookie,那么客户端在进行了权限验证以后,就把这个登录凭证,也就是 Token 直接存在了客户端,并且在每次请求服务器的时候都把它带上。最常用的 Token 验证方式,就是 JWT (Json Web Token) ,JWT是通过对带有相关用户信息的json进行加密,加密的方式比较灵活。

基于Token的身份验证流程:

客户端使用用户名和密码请求登录

服务端收到请求,验证登录是否成功

验证成功后,服务端会返回一个Token给客户端,反之,返回身份验证失败的信息

客户端收到Token后把Token用一种方式存储起来 ( cookie / localstorage / sessionstorage /... )

客户端每次发起请求时都会将Token发给服务端

服务端收到请求后,验证Token合法性,合法就返回客户端所需数据,反之,返回验证失败的信息

OAuth 验证

OAuth(开放授权)是一种开放标准,用于允许用户在不暴露其凭据(如用户名和密码)的情况下,让第三方应用程序访问其资源(如用户的照片、视频、联系人列表等)。OAuth 主要用于授权,而不是身份验证。如网站第三方登录,可以使用 QQ 或者微信登录,小程序微信一键登录。

Session、Cookie、Token

HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录,Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。

Cookie和Session是两种常见的用于跟踪使用者状态和实现使用者认证的机制。Cookies是一种存储在客户端的数据机制,而Session则是一种在服务器端存储使用者信息的机制。

客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录(用户在浏览网站时,记录用户从进入网站到关闭浏览器所经历的一系列状态和行为)。

Session工作原理:

Cookie工作原理:

Session与Token:作为身份认证,Token安全行比Session好; Session 认证只是简单的把User 信息存储到Session里,因为SID 的不可预测性,暂且认为是安全的,这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是认证和授权,认证是针对用户,授权是针对App ,其目的是让某App有权利访问某用户的信息。

Token与Cookie:Cookie是不允许垮域访问的,但是Token是支持的, 前提是传输的用户认证信息通过HTTP头传输;Token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;Cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用Cookie自动登录用户名。

Cookie与Session区别:Cookie数据存放在客户端上,Session数据放在服务器上;Cookie不是很安全,且保存数据有限;Session一定时间内保存在服务器上,当访问增多,占用服务器性能。

参考:

终于有人把前端鉴权讲明白了

鉴权的基本概念及session和cookie的入门认识

Session、Cookie、Token 【浅谈三者之间的那点事】

Cookie的工作原理和应用详解

session 详解:掌握客户端会话管理

Cookie vs Session:全面对比分析,探讨优点和适用场景

30s 看懂最基础的认证方式: Session-Cookie 认证

Token及Token验证流程

相关推荐
迪康Defender2 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
智塑未来4 小时前
直线编码器厂家资质怎么看?认证、合规与工况能力拆解
其他
2601_962132024 小时前
Mega安汇:欧洲气价回落观察承接
其他
水质在线监测仪厂家_慕迪科技5 小时前
讲述如何正确地处理汽车涂装废水!
其他·汽车
专注仿真6 小时前
Vapor框架构建及Swift for TensorFlow图像分析
java·其他
芯片封装工程师7 小时前
台式真空共晶机如何重塑电子封装工艺新格局
其他
执欣之手7 小时前
Privacy Policy for FreornDashn
其他
TorchWeiye8 小时前
小型真空共晶设备如何重构PCB封装工艺新格局
其他
工厂管理系统专业测评8 小时前
ERP适合什么制造行业?按生产模式理清适配性
其他
北京巨恒工业8 小时前
适合工业与洁净场景的人,通常会更看重安全与自限温
其他