关于四种鉴权方式

概念

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

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

鉴权方式

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验证流程

相关推荐
快鲸AI-seo6 小时前
提升网站流量的必备利器 SEO工具使用指南
其他
清涔秋风1 天前
当AI遇上时尚:未来的衣橱会由机器人来打理吗?
其他
快鲸AI-seo2 天前
数据分析反馈:提升决策质量的关键指南
其他
D-海漠3 天前
PDS的主要部件
其他
快鲸AI-seo3 天前
关键词研究与布局的重要性与实施策略
其他
哲伦贼稳妥3 天前
什么是网络安全?
网络·经验分享·其他
北京天拓四方4 天前
边缘计算网关在生产设备数据采集中的创新应用-天拓四方
物联网·其他·边缘计算
北京天拓四方4 天前
5G工业网关的主要功能有哪些?天拓四方
物联网·其他·5g·边缘计算·iot
清涔秋风5 天前
自动驾驶革命:从特斯拉到百度,谁将主宰未来交通?
其他
清涔秋风5 天前
智能家居的未来:AI让生活更智能还是更复杂?
其他