前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用鉴权方式

常用鉴权方式

原创
作者头像
大发明家
发布2021-12-06 14:02:28
1.7K0
发布2021-12-06 14:02:28
举报
文章被收录于专栏:技术博客文章

一、HTTP Basic Authentication鉴权

这种授权方式是浏览器遵守http协议实现的基本授权方式。

  1. 当客户端向服务端请求数据时,若客户端未成功被验证,服务端将会向客户端发送验证请求代码401。这时候浏览器会自动弹出让你输入用户名密码的弹窗。
代码语言:txt
复制
  HTTP/1.0 401 Unauthorised 
代码语言:txt
复制
  Server: SokEvo/1.0 
代码语言:txt
复制
  WWW-Authenticate: Basic realm=”google.com” 
代码语言:txt
复制
  Content-Type: text/html 
代码语言:txt
复制
  Content-Length: xxx
  1. 输入用户名密码后,客户端会发起一个ajax请求,在请求头的Authorization上带上使用base64加密后的用户名密码字符串。(加密过程是浏览器自己加密的)
代码语言:txt
复制
  Get /index.html HTTP/1.0 
代码语言:txt
复制
  Host:www.google.com 
代码语言:txt
复制
  Authorization: Basic d2FuZzp3YW5n
  1. 验证成功后,每次发起请求都会在请求头里带上这个加密字符串。

优点

基本上所有流行的网页浏览器都支持基本认证。基本认证很少在可公开访问的互联网网站上使用,有时候会在小的私有系统中使用(如路由器网页管理接口)。后来的机制HTTP摘要认证是为替代基本认证而开发的,允许密钥以相对安全的方式在不安全的通道上传输。

程序员和系统管理员有时会在可信网络环境中使用基本认证,使用Telnet或其他明文网络协议工具手动地测试Web服务器。这是一个麻烦的过程,但是网络上传输的内容是人可读的,以便进行诊断。

缺点

虽然基本认证非常容易实现,但该方案创建在以下的假设的基础上,即:客户端和服务器主机之间的连接是安全可信的。特别是,如果没有使用SSL/TLS这样的传输层安全的协议,那么以明文传输的密钥和口令很容易被拦截。该方案也同样没有对服务器返回的信息提供保护。

现存的浏览器保存认证信息直到标签页或浏览器被关闭,或者用户清除历史记录。HTTP没有为服务器提供一种方法指示客户端丢弃这些被缓存的密钥。这意味着服务器端在用户不关闭浏览器的情况下,并没有一种有效的方法来让用户注销。

session-cookie 机制

  1. Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。(cookie在浏览器关闭后就会被清除)
  2. Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。(session不会在浏览器退出后就删除,需要服务端发送删除的指令才会被删除)

优缺点

session-cookie的缺点

(1)认证方式局限于在浏览器中使用,cookie 是浏览器端的机制,如果在app端就无法使用 cookie

(2)为了满足全局一致性,我们最好把 session 存储在 redis

中做持久化,而在分布式环境下,我们可能需要在每个服务器上都备份,占用了大量的存储空间。

(3)在不是 Https 协议下使用 cookie ,容易受到 CSRF 跨站点请求伪造攻击。

token安全令牌机制

token

是一个令牌,当浏览器第一次访问服务端时会签发一张令牌,之后浏览器每次携带这张令牌访问服务端就会认证该令牌是否有效,只要服务端可以解密该令牌,就说明请求是合法的。一般

token 由用户信息、时间戳和由 hash 算法加密的签名构成。

优点

(1)token 认证不局限于 cookie ,这样就使得这种认证方式可以支持多种客户端,而不仅是浏览器。且不受同源策略的影响。

(2)不使用 cookie 就可以规避CSRF攻击。

(3)token 不需要存储,token 中已包含了用户信息,服务器端变成无状态,服务器端只需要根据定义的规则校验这个 token

是否合法就行。这也使得 token 的可扩展性更强。

缺点

(1)加密解密消耗使得 token 认证比 session-cookie 更消耗性能。

(2)tokensessionId 大,更占带宽。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、HTTP Basic Authentication鉴权
  • session-cookie 机制
  • token安全令牌机制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档