swagger系列三:结合Nginx访问控制及swagger常见问题解决

1. 用HTTP基本身份验证限制访问

swagger生成的文档放在公网上的时候,就暴露了接口,有了安全隐患。nginxngx_http_auth_basic_module模块为我们提供了方便。再结合Apache模块htpasswd来增强安全性。需安装Apache服务,这里不赘述。

htpasswd: htpasswd建立和更新存储用户名、密码的文本文件, 用于对HTTP用户的basic认证。

创建一个密码文件和第一个用户。htpasswd使用该-c标志(创建一个新文件,如果文件存在则不用-c),文件路径名作为第一个参数,并将用户名作为第二个参数运行该实用程序,按Enter并在提示中输入user1的密码。如:
$ sudo htpasswd -c /etc/apache2/.htpasswd user1
查看结果:
$ cat /etc/apache2/.htpasswd
user1:$ APR1 $ / woC1jnP $ KAh0SsVn5qeSMjTtn0E9Q0
user2:$ APR1 $ QdR8fNLT $ vbCEEzDj7LyqCMyNpSoBh /

基本认证与IP地址访问限制相结合。配置Nginx:

location /docs {
              satisfy all; 
             
              deny  192.168.31.2; 
              allow 192.168.31.0/24;
              allow 127.0.0.1;
              deny  all;
              
              auth_basic          "Administrator's area";
              auth_basic_user_file /usr/local/etc/nginx/.htpasswd;
          }

swagger系列三:结合Nginx访问控制及swagger常见问题解决

重启Nginx: nginx -s reload,访问
swagger系列三:结合Nginx访问控制及swagger常见问题解决
不输入账户密码或账户密码错误访问:

swagger系列三:结合Nginx访问控制及swagger常见问题解决

2.常见问题

  1. 右下角 ERR 错误

swagger系列三:结合Nginx访问控制及swagger常见问题解决

点击可见

{"schemaValidationMessages":[{"level":"error","message":"Can't read from file swagger.json"}]}
解决方法:在使用swagger-ui时它会调用一个远程验证,在index.html中添加 validatorUrl:false关闭远程验证即可。

swagger系列三:结合Nginx访问控制及swagger常见问题解决

相关推荐