Basic Auth

一、简介

在HTTP中,基本认证Basic access authentication)是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式

优点

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

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

缺点

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

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

使用场景

要知道 Basic Auth 的使用场景,它是最简单的一种认证方式,说白了就是用户名 + 密码, 这种方式有很多问题, 比如它通过网络发送用户名和密码, 而这些都是以一种很容易解码的形式表示的。 虽然它是用 base64_encode 加密过了, 但这种加密的作用也仅仅是让可信任的用户不太可能在进行网络观测时无意中看到密码, 而不能防止恶意用户。 所以也仅限在一些安全要求不是那么高的场景下使用。

原理和实现

简单来说,它是检查你的Headers中的Authorization. 从中解析出usernamepassword, 和服务器保存的进行对比,如果一致则通过.

其名称与值的形式是这样的:
Authorization: Basic base64encode(username+":"+password)