一、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 qinken
第一次需加-c选项
3.在httpd.conf中找到 DocumentRoot,并在下面填上
<Directory /var/www/html> //html存放路径
AuthType Basic //示认证方式,这里是 basic 认证
AuthName Hello //表示弹出框给出的提示文字,可随机填写
AuthUserFile "/etc/httpd/webpasswd" //basic表示认证用户文件的路径
require user qinken //定义哪些用户或组才能被授权访问,valid-user文件所有用户都可以访问
</Directory>
4.可以通过浏览器来访问,查看是否配置正确
- basic认证的过程
当请求的资源需要 BASIC 认证时,服务器会随状态码 401 Authorization Required,返回 WWW-Authenticate 首部字段(响应头)的响应。该字段内包含认证的方式(BASIC)及Request-URI 安全域字符串(realm)
接收到状态码 401 的客户端为了通过 BASIC 认证,需要将用户ID及密码发送给服务器。发送的字符串内容是由用户名 ID 和密码构成,两者中间以冒号(:)连接后,再经过 Base64 编码处理。
注:测试仪在发送请求的时候已经带上了用户和密码,所以不存在返回401的情况
- Apache支持digest认证
- 在httpd.conf文件中支持digest模块
LoadModule auth_digest_module modules/mod_auth_digest.so
注 要把basic认证的模块注释掉
2.增加digest认证的用户的密码
htdigest -c digest realm qinken
在当前目录下增加一个digest的文件,里面用户是qinken
3.在httpd.conf修改配置
<Directory /var/www/html>
Options Indexes FollowSymLinks
AuthType Digest
AuthName realm
AuthUserFile "/etc/httpd/digest"
require user qinken
AllowOverride None
</Directory>
注:AuthName要与realm相同
- 修改后重启httpd服务
Systemctl restart httpd
- 可以通过浏览器或测试仪来访问是否配置成功
注:第一次请求时一定回401
- 交互过程
(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 写入一些认证成功的相关信息
标签:httpd,http,auth,认证,应用服务,basic,realm,digest From: https://www.cnblogs.com/123456likun/p/18036478