Basic认证与Digest认证在http服务的配置与测试

发布时间 2023-09-22 14:17:09作者: 网测小李

一、Apache支持basic认证

1. 确定Apache服务器是否有这2种模块

服务器装的apche一般会默认带这两个模块:auth_basic_module modules/mod_auth_basic.so、auth_digest_module modules/mod_auth_digest.so

在http.conf中看能否找到 LoadModule auth_digest_module modules/mod_auth_digest.so

LoadModule auth_digest_module modules/mod_auth_digest.so,把digest注释掉

2.增加basic认证的用户的密码

htpasswd -c /etc/httpd/webpasswd user

第一次需加-c选项

3.在httpd.conf中找到 DocumentRoot,并在下面填上

<Directory /var/www/html> //html存放路径

AuthType Basic //示认证方式,这里是 basic 认证

AuthName Hello //表示弹出框给出的提示文字,可随机填写

AuthUserFile "/etc/httpd/webpasswd" //basic表示认证用户文件的路径

require user user //定义哪些用户或组才能被授权访问,valid-user文件所有用户都可以访问

</Directory>

 

4.可以通过浏览器来访问,查看是否配置正确

  1. basic认证的过程

当请求的资源需要 BASIC 认证时,服务器会随状态码 401 Authorization Required,返回 WWW-Authenticate 首部字段(响应头)的响应。该字段内包含认证的方式(BASIC)及Request-URI 安全域字符串(realm)

接收到状态码 401 的客户端为了通过 BASIC 认证,需要将用户ID及密码发送给服务器。发送的字符串内容是由用户名 ID 和密码构成,两者中间以冒号(:)连接后,再经过 Base64 编码处理。

注:测试仪在发送请求的时候已经带上了用户和密码,所以不存在返回401的情况

二、Apache支持digest认证

  1. 在httpd.conf文件中支持digest模块

LoadModule auth_digest_module modules/mod_auth_digest.so

注 要把basic认证的模块注释掉

2.增加digest认证的用户的密码

htdigest -c digest realm user1

在当前目录下增加一个digest的文件,里面用户是user1

3.在httpd.conf修改配置

注:AuthName要与realm相同

  1. 修改后重启httpd服务

Systemctl restart httpd

  1. 可以通过浏览器或测试仪来访问是否配置成功

注:第一次请求时一定回401

  1. 交互过程

(1)请求需认证的资源时,服务器会随着状态码 401Authorization Required,返回带WWW-Authenticate 首部字段的响应。该字段内包含质问响应方式认证所需的临时质询码(随机数,nonce)。首部字段 WWW-Authenticate 内必须包含realm 和nonce 这两个字段的信息。

 

(2)接收到401状态码的客户端,返回的响应中包含 DIGEST 认证必须的首部字段 Authorization 信息。首部字段 Authorization 内必须包含 username、realm、nonce、uri 和response的字段信息。其中,realm 和 nonce 就是之前从服务器接收到的响应中的字段。

 

(3)接收到包含首部字段 Authorization 请求的服务器,会确认认证信息的正确性。认证通过后则返回包含 Request-URI 资源的响应。并且这时会在首部字段 Authentication-Info 写入一些认证成功的相关信息