总结分享10种常用前后端鉴权方法,让你不再迷惘头条

一顿连问下来,我是焦头又烂额,欲言而又止.......

其实鉴权的方法有很多,下面我总结了常用的10种鉴权方法,那么哪一种是最适合你的系统呢?哪一种又最安全呢?

那就让我们从下文慢慢探索寻找答案吧~

白话文的意思就是:你需要用身份证证明你自己是你自己。

比如我们常见的认证技术:

在现实生活领域:门禁卡需要通过门禁卡识别器,银行卡需要通过银行卡识别器;

在互联网领域:校验session/cookie/token的合法性和有效性

权限控制(Access/PermissionControl)将可执行的操作定义为权限列表,然后判断操作是否允许/禁止

对于权限控制,可以分为两部分进行理解:一个是权限,另一个是控制。权限是抽象的逻辑概念,而控制是具体的实现方式。

在现实生活领域中:以门禁卡的权限实现为例,一个门禁卡,拥有开公司所有的门的权限;一个门禁卡,拥有管理员角色的权限,因而可以开公司所有的门。

在互联网领域:通过web后端服务,来控制接口访问,允许或拒绝访问请求。

需要说明的是,这四个环节在有些时候会同时发生。例如在下面的几个场景:

既然我们已经了解了他们之间的关系,那么我们应该好好讲讲关于前端鉴权有哪些?以及他们之间存在的差异点又在哪里呢?

在HTTP中,基本认证方案(BasicAccessAuthentication)是允许客户端(通常指的就是网页浏览器)在请求时,通过用户提供用户名和密码的方式,实现对用户身份的验证。

因为几乎所有的线上网站都不会走该认证方案,所以该方案大家了解即可

1.1认证流程图

1.2认证步骤解析

1.3优点

简单,基本所有流行的浏览器都支持

1.4缺点

1.5使用场景

内部网络,或者对安全要求不是很高的网络。

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

在理解这句话之前我们先简单了解下什么是Cookie以及什么是Session?

2.1什么是Cookie

众所周知,HTTP是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息);

所以为了让服务器区分不同的客户端,就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态可以通过Cookie去实现。

特点:

2.2什么是Session

Session的抽象概念是会话,是无状态协议通信过程中,为了实现中断/继续操作,将用户和服务器之间的交互进行的一种抽象;

具体来说,是服务器生成的一种Session结构,可以通过多种方式保存,如内存、数据库、文件等,大型网站一般有专门的Session服务器集群来保存用户会话;

原理流程:

与Cookie的差异:

看到这里可能就有同学想到了,Session-Cookie是不是就是把Session存储在了客户端的Cookie中呢?

Bingo,的确是这样的,我们接着往下看

2.3Session-Cookie的认证流程图

2.4Session-Cookie认证步骤解析

2.5Session-Cookie的优点

2.6Session-Cookie的缺点

2.7使用场景

2.8前端常用的Session库推荐

现在我们已经得知,Session-Cookie的一些缺点,以及Session的维护给服务端造成很大困扰,我们必须找地方存放它,又要考虑分布式的问题,甚至要单独为了它启用一套Redis集群。那有没有更好的办法?

那Token就应运而生了

3.1什么是Token(令牌)

Token是一个令牌,客户端访问服务器时,验证通过后服务端会为其签发一张令牌,之后,客户端就可以携带令牌访问服务器,服务端只需要验证令牌的有效性即可。

一句话概括;访问资源接口(API)时所需要的资源凭证

一般Token的组成:

Token的认证流程图:

Token认证步骤解析:

Token的优点:

Token的缺点:

3.2什么是RefreshToken(刷新Token)

业务接口用来鉴权的Token,我们称之为AccessToken。

为了安全,我们的AccessToken有效期一般设置较短,以避免被盗用。但过短的有效期会造成AccessToken经常过期,过期后怎么办呢?

另外一种办法是:再来一个Token,一个专门生成AccessToken的Token,我们称为RefreshToken;

RefreshToken的认证流程图:

RefreshToken认证步骤解析:

3.3Token和Session-Cookie的区别

Session-Cookie和Token有很多类似的地方,但是Token更像是Session-Cookie的升级改良版。

如果你的用户数据可能需要和第三方共享,或者允许第三方调用API接口,用Token。如果永远只是自己的网站,自己的App,用什么就无所谓了。

通过第三节,我们知道了Token的使用方式以及组成,我们不难发现,服务端验证客户端发送过来的Token时,还需要查询数据库获取用户基本信息,然后验证Token是否有效;

这样每次请求验证都要查询数据库,增加了查库带来的延迟等性能消耗;

那么这时候业界常用的JWT就应运而生了!!!

4.1什么是JWT

4.2JWT的组成

JWT由三部分组成:Header头部、Payload负载和Signature签名

它是一个很长的字符串,中间用点(.)分隔成三个部分。列如:

在Header中通常包含了两部分:

除了官方字段,你还可以在这个部分定义私有字段,下面就是一个例子。

Signature部分是对前两部分的签名,防止数据篡改。

首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用Header里面指定的签名算法(默认是HMACSHA256),按照下面的公式产生签名。

客户端收到服务器返回的JWT,可以储存在Cookie里面,也可以储存在localStorage。

此后,客户端每次与服务器通信,都要带上这个JWT。你可以把它放在Cookie里面自动发送,但是这样不能跨域,所以更好的做法是放在HTTP请求的头信息Authorization字段里面。

其实JWT的认证流程与Token的认证流程差不多,只是不需要再单独去查询数据库查找用户用户;简要概括如下:

4.5JWT的优点

4.6JWT的缺点

4.7前端常用的JWT库推荐

5.1同域下的SSO(主域名相同)

当百度网站存在两个相同主域名下的贴吧子系统tieba.baidu.com和网盘子系统pan.baidu.com时,以下为他们实现SSO的步骤:

5.2跨域下的SSO(主域名不同)

到这里客户端就可以跟系统A愉快的交往啦~

(PS:脚踏两只船,感觉有点渣呀~)

6.1什么是OAuth2.0?

令牌与密码的差异:

令牌(Token)与密码(Password)的作用是一样的,都可以进入系统,但是有三点差异。

6.3隐藏式模式(ImplicitGrant)

注意:

6.4用户名密码式模式(PasswordCredentialsGrant)

如果你高度信任某个应用,OAuth2.0也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)。

一句话概括:用户在客户端提交账号密码换token,客户端使用token访问资源。

6.5客户端模式(ClientCredentialsGrant)

主要适用于没有前端的命令行应用。

一句话概括:客户端使用自己的标识换token,客户端使用token访问资源。

注意:这种方式给出的令牌,是针对第三方应用的,而不是针对用户的,即有可能多个用户共享同一个令牌。

7.1什么是联合登陆

这样的概念其实与上面所讲的OAuth2.0的用户名密码式模式认证方式类似。

—身为优秀的程序员的我们当然是满足他啦!!

用户在客户端A操作:

用户在客户端B操作:

9.2什么是二维码

二维码又称二维条码,常见的二维码为QRCode,QR全称QuickResponse,是一个近几年来移动设备上超流行的一种编码方式,它比传统的BarCode条形码能存更多的信息,也能表示更多的数据类型。

待扫码阶段:

已扫码待确认阶段:

已确认阶段:

缺点:

直到手机卡的强制实名制才得以解决!

随着无线互联的发展以及手机卡实名制的推广,手机号俨然已成为特别的身份证明,与账号密码相比,手机号可以更好地验证用户的身份,防止恶意注册。

我们想一下,为什么我们需要验证码?验证码的作用就是确定这个手机号是你的,那除了使用短信,是否还有别的方式对手机号进行认证?

THE END
1.有不需要手机验证码的借钱软件吗?贷款问答若连实名手机号都没有、不能接收验证码,那么以后发放贷款、提醒还款就无法联系上借款人本人,肯定是不https://www.csai.cn/wenda/1024646.html
2.开发程序时除了短信验证码,还有哪些替代方案可以考虑?行为式验证码: 采用验证码展示-采集用户行为-分析用户行为流程,用户只需要产生指定的行为轨迹,不需要键盘手动输入,极大优化了传统验证码用户体验不佳的问题。这种验证方式利用用户的“行为特征”来做验证安全判别,通过机器学习和深度学习对人的行为特征进行大量的分析,建立安全模型去区分人与机器程序。 https://blog.csdn.net/aoxiangchina/article/details/143814301
3.2024年免费验证码识别软件:解锁验证码难题的利器在安装爱码验证码客户端之后,需要注册一个帐号并进行登录。在“请输入关键字”的地方输入关键词进行搜索,在下拉箭头处选取项目和获得号码的数量,并选择好之后点击获取。勾上自动获取验证码后,在服务器响应的第一时间返回数据。爱码验证码客户端是一款功能强大、操作简便、效率高的全自动接受手机验证码的软件。它能够https://app.zol.com.cn/jiqiao/161810.html
4.SIM认证移动认证免密码登录打通不同系统之间的账号壁垒,降低用户和企业的账号管理成本。 免记密码 摆脱各类应用的密码记忆困扰,可灵活配置手机免密或PIN码两种登录方式。 安全保障 与硬件绑定,唯一身份保障,解决密码撞库风险,加密数据短信传输。 产品功能 开发者可配置免密认证方式,应用端输入手机号码并点击登录按钮,手机端弹出授权页面,一键授权https://ecloud.10086.cn/portal/product/simverify
5.无需手机号码发短信软件免费安装不需要验证码的广告平台免费版用户不可以群发,正式版用户可以群发短信。 以上就是小编根据无需手机号码发短信软件,给您推荐的几款软件,希望符合您的要求。更多靠谱软件可以在多特下载站进搜索下载。<上一篇:手机检测软件_手机检测软件哪个好_手机检测软 下一篇:火影忍者手游为什么霸体释放完就没了 > https://www.duote.com/tech/rjxz/379246.html
6.手机不停接收验证码是怎么回事?需要怎么处理?行业新闻需要怎么处理? 手机接收验证码是常用的操作,可是有些时候,并没有在手机上执行其他操作,但是手机会收到某某软件、网站或平台的验证码。下面我们先来了解一下手机为何会不停的收到验证码 1.误操作导致,手机号都是挨着的,而国内手机用户较多,用户在注册或登录某些平台的帐号时,如果输入错误,恰巧错误的帐号是自己的,http://www.use5.com/View-6712AD550DAC19B385B41D5BB084B411.html
7.留手机号广告不需要验证码的广告平台深秋雨网络小编来了!今天给大家介绍一款不需要验证码的广告平台——留手机号广告。 不少人应该都遇到过需要注册、登录、下单、领券等等操作时,都要输入验证码的情况。随着人们对信息安全的越来越重视,验证码的使用频率也越来越高。在这种情况下,一些不法分子就利用验证码进行诈骗,给我们带来很多麻烦。 https://shenqiuyu.net/yyzs/9857.html
8.办银行卡要手机号验证码吗办银行卡要手机号验证码吗银行 2024-09-29 53阅读 用户去银行开卡,如果只开卡,不需要验证手机号码,只预留手机号码,但如果是办理网上银行,就需要验证手机号码,用户需要携带上身份证件,并且还需要用户个人亲自去办理。以上就是办银行卡要手机号验证码吗相关内容。 办银行卡需要多长时间 1、储蓄卡:假如用户办理的是https://cadforex.com/yinhk/84454.html
9.建行手机银行4.0版本转账怎么不要求输入支付密码?只需要验证短信验证码,这是最新的手机银行转账规则。 建行这样做真的好吗? 不好!带来了安全隐患。以前是需要登录密码+手机验证码+支付密码三层验证,现在减少了一层, 相当于把银行卡的安全验证转移给了第三方的移动通讯公司,如果手机病毒拦截并转发了验证码,存在资金被盗的风险。 https://blog.51cto.com/u_15545168/5158729
10.APP「登录注册模块」详解较适合填写信息较少(往往不包含关于用户个人信息的设置),注册流程简洁的产品,这类产品的注册所需的信息往往只包含:手机号、验证码、密码等最简单的信息。 在同一页面中完成注册,能够能够让用户对整个注册流程有个心理预期,对填写的信息能够进行预判,整个注册过程给用户的操控感比较强。 https://www.jianshu.com/p/359e5dccbdd4
11.抖音登录要验证码怎么办手机号没用了,之前手机号码不用了怎么登录摘要:手机成了空号,抖音上不了,需要验证码,有什么办法登录,大家好,魏清安来为大家解答手机成了空号,抖音上不了,需要验证码,有什么办法登录抖音教程及疑惑。手机成了空号,抖音上不了,需要验证码,有什么办法登录,手机成了空号,抖音 手机成了空号,抖音上不了,需要验证码,有什么办法登录 https://edu.xinpianchang.com/article/baike-411911.html
12.手机号过户网贷是不是会继续催款?作用怎样?逾期资讯以上就是关于花呗分期手机交易是不是会收到短信的回答。期待这个回答对您有所帮助。若您还有其他疑惑,欢迎继续提问。 微粒贷贷款需要手机验证码吗 微粒贷是一款在线借贷平台,为采用者提供小额贷款服务。在微粒贷贷款进展中,需要实手机验证码验证是很常见的操作,这是为了确信借款过程的安全性,保护客户的个人信息以及避免https://www.hezegd.com/lawnews/zixun/715577.html
13.怎么去掉淘宝账号登录时需要使用手机验证码?浏览下载软件教程登陆淘宝的时候,总是需要手机验证码。万一手机不在身边就麻烦了,该怎么取消手机验证码呢?下面我们来看看详细的介绍方法,需要的朋友可以参考下 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用! 【如果你想靠AI翻身,你先需要一个靠谱的工具!】 现在我们在淘宝上购物都会有自己的一些账号,那么这些账号或多或少你https://www.jb51.net/softjc/434692.html
14.小米手机防盗及挂失的那些事儿Q:手机丢失以后,再登录支付宝,微信需要验证码怎么办? A:补卡啊,不会手机丢了以后还傻傻的让别人用你的手机号码对外打电话吧,浪费话费不说,不怕别人用你的号码去诈骗么? Q:手机丢失以后,对方强制关机怎么办,怎么不设置关机密码呢? 这个~~~没用啊 ,你可以拦住他不按关机键,总不能拦住他耗电自动关机吧,总拦http://www.miui.com/thread-3725611-1-1.html
15.smscode:专为需要手机短信验证码使用嘲而设计的微服务专为需要【手机短信验证码】使用场景而设计的微服务(Micro service),如:用户注册、找回密码、用户身份验证、验证码登录等等。 为什么要造这个轮子 首先我没有找到已实现这些基本功能合一的轮子,至少开源的没有。而实际上我们很多项目开发时经常需要用到手机验证码功能。然而每次重复造轮子又觉得太繁琐且不容易集中控制。https://gitee.com/oss/smscode/
16.奖励,注册时需要手机号和验证码这是真的吗?免费法律咨询关于我有一个微信朋友,他说让我注册下载一个APP参加活动领现金红包奖励,注册时需要手机号和验证码这是真的吗?的律师回答 李世英律师 已帮助 16956人· 综评5.0 咨询我 你好,建议不要轻信。 2023.03.29 17:54 · IP属地:江苏 祝晶晶律师 已帮助 10930人· 综评5.0 咨询我 你好,不建议这样弄 https://m.66law.cn/question/44009927.aspx
17.原神怎么设置密码登录不需要手机验证2024原神设置密码登录方法是:首先进入游戏在游戏的设置内,点击用户中心,然后来到用户中心点击修改密码,按要求获取并填入验证码,最后页面跳转后,设置密码就可以了。详细答案:https://ol.3dmgame.com/gl/252691.html