Basic身份认证,是HTTP 1.0中引入的认证方案之一,也被称为基本身份认证。 在Basic身份认证中,用户名和密码由冒号“:”连接,用Base64编码并发送。因此,它具有易于窃听和篡改的缺点,但由于它几乎与所有Web服务器和浏览器兼容,因此被广泛使用。为了防止窃听和篡改,后来出现的Digest身份认证技术对Basic身份认证的安全缺陷做了一定的改进。
认证流程Basic身份认证的典型流程如下图所示:
1. 用户访问受限资源 HTTP请求例:
GET /employee/index.html HTTP/1.1 Host: psteam.co.jp2. 服务端返回401要求身份认证
HTTP回复例:
HTTP/1.1 401 Authorization Required Date: Wed, 11 May 2014 07:50:26 GMT Server: Apache/1.3.33 (Linux) WWW-Authenticate: Basic realm="SECRET AREA" Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-13. 用户发送认证请求 客户端提示用户输入用户名密码,发送认证请求给服务器端 HTTP请求例:
/employee/index.html HTTP/1.1 Host: psteam.co.jp Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==4. 服务端验证请求 HTTP回复例:
HTTP/1.1 200 OK Date: Wed, 11 May 2014 07:50:26 GMT补充说明:
如果第3步用户选择取消输入用户名密码,认证流程则当即中止如果第4步用户名密码错误,服务器将再次返回401错误,认证流程重回第3步 认证实现 ApacheApache里实现Basic认证包含以下两大步骤:
创建用户管理文件要执行基本身份验证,需要创建一个由用户名和密码组成的管理文件。可以使用一个名为htpasswd的程序来创建文件和用户注册。配置htaccess文件
在需要Basic认证的目录下,创建.htaccsss文件,内容大致如下: AuthUserFile /home/webadmin/.htpasswd AuthGroupFile /dev/null AuthName "Please Enter Your Password" AuthType Basic Require valid-user
包含以下设置项目:
指定步骤1里创建的用户管理文件名。AuthGroupFile
指定群组文件AuthName
指定客户端用户名密码输入对话框里显示的提示信息AuthType
指定认证方式为BasicRequire
指定允许访问的用户或群组,「valid-user」表示、允许用户管理文件包含的所有用户。 个别指定的时候,多个用户或群组名可用空格区分。 NodeJS
如果使用Express,利用express-basic-auth中间件可以很简单的就能实现Basic认证。