因为 http 协议,它是一种无状态的协议,在服务器端并不知道客户端的那一头,是谁在请求服务器。而服务器上的资源,有时候并不是向所有人开放的,而是仅对部分人开放的,在这种情况下,实现用户的登陆鉴权,就成了一种必要的需求。目前,我们在开发中主要使用过 4 种鉴权方式。
第 1 种方式,是最简单的 Authentication,这种方式,在客户端会弹出一个登录窗口,由用户输入用户名和密码,进行登录。但这种方式使用基本的 base64 加密,账号很容易泄露。在十几年前还能看到有人使用,现在已经很少使用了。
第 2 种方式,是使用 session-cookie 机制。这种方式 session 是在服务器端创建的,可以存在内存里面,也可以持久化到数据库里面。而 cookie 是存在用户浏览器里的 sessionId。这个 sessionId 一经创建,就在后面的每次 http 请求中,都带在请求头当中。服务器就是靠这种标识,来区别客户端是哪一个的。
第 3 种方式,就是 Token 验证。在这里 Token 是令牌的意思。这种验证是在 App 兴起以后发展起来的,因为在 App 里没有浏览器环境,没有 cookie,那么客户端在进行了权限验证以后,就把这个登录凭证,也就是 Token 直接存在了客户端,并且在每次请求服务器的时候都把它带上。最常用的 Token 验证方式,就是 JWT,它是 Json Web Token 的简写。
第 4 种方式,就是 OAuth 验证。这种方式在今天是非常常见了。我们经常看到一些网站登录的时候,可以使用 QQ 或者微信登录,这种登录方式本身就是 OAuth 验证。还有我们在小程序里面,使用微信一键登录的时候,就是这种验证方式。
在第 4 种方式中,我们先向鉴权服务器请求,拿到了一个 code。这个 code 代表的是用户的许可,然后再以这个 code,加上开发者自己的 appId 与 appSecret,再请求鉴权服务器拿到一个 Access Token,这个才是一个真正的 Token。有了这个 Token,才可以把加密的用户信息解密出来。
其实在手机上除了以上 4 种验证方式,还有人脸识别、声纹识别、指纹验证等新的验证方式。但这些方式,和前面的第 4 种方式其实并没有本质区别。
这 4 种方式,反映了互联网的发展历程。
第 1 种方式,这是一种最简单的用户名密码验证方式,反映了人们对信息私有化的需求,这是在互联网出现以后产生的需求。
第 2 种方式,以及加密算法的出现,反映了在公开的互联网上,人们对隐私、对信息保密的重视。这个时期单点登陆技术的出现,标志着互联网向分布式发展,开始出现海量用户产品。
第 3 种方式代表了移动互联网的崛起。
第 4 种方式代表了大平台作为基础账号存在,已经变成了一种事实,像 QQ、微信、Facebook 等等。
接下来随着 5G 网络的发展,随着物联网的崛起,可能会出现一种新的验证方式。
这种新的鉴权方式,可能是一种综合的生物验证。当你进入一个环境,你的容貌、声音、气味等生物特征,自动为你完成了权限验证,这种验证是无感知的,无打扰的和无阻塞的。
2020 年 6 月 2 号
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。