HTTP基本认证

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

在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是open sesame,则拼接后的结果就是Aladdin:open sesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串。

虽然对用户名和口令的Base64算法编码结果很难用肉眼识别解码,但它仍可以极为轻松地被计算机所解码,就像其容易编码一样。编码这一步骤的目的并不是安全与隐私,而是为将用户名和口令中的不兼容的字符转换为均与HTTP协议兼容的字符集。

最初,基本认证是定义在HTTP 1.0规范(RFC 1945)中,后续的有关安全的信息可以在HTTP 1.1规范(RFC 2616)和HTTP认证规范(RFC 2617)中找到。

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

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

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

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

这一个典型的HTTP客户端和HTTP服务器的对话,服务器安装在同一台计算机上(localhost),包含以下步骤:

注意:客户端有可能不需要用户交互,在第一次请求中就发送认证消息头。

Apache

htpasswd -c /etc/apache2/.htpasswd Aladdin
New password: **********
Re-type new password: **********
Adding password for user Aladdin

vi /etc/apache2/sites-enabled/000-default.conf

<Directory "/var/www/html/protected>
    AuthType Basic
    AuthName "Username and password"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

systemctl restart apache2

Nginx

htpasswd -c /etc/nginx/.htpasswd Aladdin
New password: **********
Re-type new password: **********
Adding password for user Aladdin

vi /etc/nginx/sites-available/default

location /protected {
    auth_basic "Username and password";
    auth_basic_user_file /etc/nginx/.htpasswd; 
}

systemctl restart nginx

聖經

东京数据中心

聖經-cmn-cu89s.epub

聖經-cmn-ncvs.epub

聖經-CNET_S.epub

聖經-CUV-S.epub

香港数据中心

聖經-cmn-cu89s.epub

聖經-cmn-ncvs.epub

聖經-CNET_S.epub

聖經-CUV-S.epub