博客园  :: 首页  :: 管理

对于nginx认证方式,有基于客户端IP地址和用户名的身份认证,这里笔者主要讲解一下,如何实现基于用户名的认证方式,有如下两种实现方式

【Basic】  和 【Digest】,Digest认证是为了修复基本认证协议的严重缺陷而设计的,秉承“绝不通过明文在网络发送密码”的原则,通过“密码摘要”进行认证,大大提高了安全性。

基于Basic的实现方式

Basic Auth 的优缺点

优点:提供简单的用户验证功能,其认证过程简单明了,适合于对安全性要求不高的系统或设备中。

缺点:输入的用户名,密码 base64编码后会出现在Authorization里,很容易被解析出来。

1、 需要保证操作系统中,有htpasswd 命令,如果没有这个命令,需要先安装 httpd-tools 软件包

[root@qq-5201351 ~]# yum install httpd-tools -y

注:htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件。

2、使用htpasswd命令,创建用户,生成密码文件

[root@qq-5201351 ~]# htpasswd -c /usr/local/nginx/conf/htpasswd zhangsan
New password:
Re-type new password:
Adding password for user zhangsan
[root@qq-5201351 ~]#
[root@qq-5201351 ~]# cat /usr/local/nginx/conf/htpasswd
zhangsan:$apr1$Bg./nKo0$nocHbJHtXFbp1aivp4Be90

3、开启Basic的认证方法,及指定用户名-密码文件

        location / {
            root   html;
            index  index.html index.htm;
            auth_basic "My-Nginx-Server";
            auth_basic_user_file  /usr/local/nginx/conf/htpasswd;
        }

注意:关于auth_basic后面的内容可以自己定义,但这个选项必须要有,如果去掉,或者值为off ,就无法实现用户名名密码认证了

4、最后重启nginx,再次登录时,就可以看到效果了,访问时,要求需要输入用户名和密码信息了

如果不输入用户名和密码,将返回 HTTP/1.1 401 Unauthorized 的错误代码

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17741140.html