这种授权方式是浏览器遵守http协议实现的基本授权方式。
401
。这时候浏览器会自动弹出让你输入用户名密码的弹窗。 HTTP/1.0 401 Unauthorised
Server: SokEvo/1.0
WWW-Authenticate: Basic realm=”google.com”
Content-Type: text/html
Content-Length: xxx
Authorization
上带上使用base64
加密后的用户名密码字符串。(加密过程是浏览器自己加密的) Get /index.html HTTP/1.0
Host:www.google.com
Authorization: Basic d2FuZzp3YW5n
优点
基本上所有流行的网页浏览器都支持基本认证。基本认证很少在可公开访问的互联网网站上使用,有时候会在小的私有系统中使用(如路由器网页管理接口)。后来的机制HTTP摘要认证是为替代基本认证而开发的,允许密钥以相对安全的方式在不安全的通道上传输。
程序员和系统管理员有时会在可信网络环境中使用基本认证,使用Telnet或其他明文网络协议工具手动地测试Web服务器。这是一个麻烦的过程,但是网络上传输的内容是人可读的,以便进行诊断。
缺点
虽然基本认证非常容易实现,但该方案创建在以下的假设的基础上,即:客户端和服务器主机之间的连接是安全可信的。特别是,如果没有使用SSL/TLS这样的传输层安全的协议,那么以明文传输的密钥和口令很容易被拦截。该方案也同样没有对服务器返回的信息提供保护。
现存的浏览器保存认证信息直到标签页或浏览器被关闭,或者用户清除历史记录。HTTP没有为服务器提供一种方法指示客户端丢弃这些被缓存的密钥。这意味着服务器端在用户不关闭浏览器的情况下,并没有一种有效的方法来让用户注销。
优缺点
session-cookie的缺点
(1)认证方式局限于在浏览器中使用,cookie
是浏览器端的机制,如果在app端就无法使用 cookie
。
(2)为了满足全局一致性,我们最好把 session
存储在 redis
中做持久化,而在分布式环境下,我们可能需要在每个服务器上都备份,占用了大量的存储空间。
(3)在不是 Https
协议下使用 cookie
,容易受到 CSRF 跨站点请求伪造攻击。
token
是一个令牌,当浏览器第一次访问服务端时会签发一张令牌,之后浏览器每次携带这张令牌访问服务端就会认证该令牌是否有效,只要服务端可以解密该令牌,就说明请求是合法的。一般
token 由用户信息、时间戳和由 hash 算法加密的签名构成。
优点 :
(1)token
认证不局限于 cookie
,这样就使得这种认证方式可以支持多种客户端,而不仅是浏览器。且不受同源策略的影响。
(2)不使用 cookie
就可以规避CSRF攻击。
(3)token
不需要存储,token
中已包含了用户信息,服务器端变成无状态,服务器端只需要根据定义的规则校验这个 token
是否合法就行。这也使得 token
的可扩展性更强。
缺点 :
(1)加密解密消耗使得 token
认证比 session-cookie
更消耗性能。
(2)token
比 sessionId
大,更占带宽。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。