基础认证简介:
在某些情况下,我们希望对服务器上的一些资源进行限制,例如服务器 /fakerealm
路径下的所有资源或域,必须先进行身份验证然后才能访问资源。
客户端以 :
连接用户名和密码后,再经 Base64 编码,通过 Authorization 请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文;
可见Basic认证过程简单,安全性也低,存在泄露个人账号信息以及其他诸多安全问题,最好在实现了Transport Layer Security (TLS)的情况下去使用。
对于这个需求我们可以通过 HTTP Basic authentication 协议来完成,Nginx 使用 ngx_http_auth_basic_module 模块支持 HTTP基本身份验证功能 。
1. 安装
yum -y install httpd
2. 添加配置
server {
listen 80;
server_name www.demo.com;
#..其它配置项目省略
location ~ ^/fakerealm {
auth_basic "authentication";
auth_basic_user_file /etc/nginx/realmdir/htpasswd;
}
#..其它配置项目省略
}
其中有几个注意点:
- auth_basic:随便填,有就行,会显示在输入用户名密码的弹框中;
- auth_basic_user_file:告诉服务器去哪个文件中匹配访问者输入的用户名和密码;
如果是配合 HTTPS 使用,一般会将 80 端口的 HTTP 请求转发到 443 的 HTTPS 请求中,所以上述配置应该写在 HTTPS 的 443 配置中:
配合HTTPS另外,也可以全局配置基础认证,然后排除一些域。即该端口下,除被排除的域,所有的请求都需要输入用户名和密码进行认证,详细配置见官方文档;
3. 添加账户
// 进入相关文件夹
cd /etc/nginx/realmdir
// 文件名:htpasswd,用户名:user 密码password
htpasswd -bdc htpasswd user password
其中 htpasswd
需要和上一步中的文件名匹配,意思是在 htpasswd
这个文件中搜索账户是否匹配;
可以在一个文件中配置多个账户:
添加多个账户4. 重启Nginx
nginx -s -reload
效果:
效果官方文档:
https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
网友评论