我正在开发一个不应向公众开放的网站。我目前正在使用 manage.py 和 runserver 在本地计算机上进行开发。
但是,我想让该网站只对少数特定人员公开访问。这些人不是开发人员,因此他们不需要访问代码。此外,由于他们不是开发人员,因此这应该是一个对用户友好的解决方案。他们只需要全天 24 小时查看我当前的更改即可。
我考虑尝试使用 ALLOWED_HOSTS 做些什么,但这些人正在忙碌并从许多不同的 IP 登录,其中一些我确信是动态的。
我考虑将登录页面设置为登录页面,但该网站已经有一个复杂的登录系统,其中包含多种用户类型,这些人需要创建多个帐户才能查看和测试不同的网站功能。创建一个单独的登录页面只是为了访问整个网站,然后仍然能够登录以测试其他帐户,这似乎太过繁琐且不方便用户使用。我想一定有更好的解决方案。
那么,在开发过程中,将 Django 网站共享给有限的非开发人员受众的最佳方法是什么,同时确保随机公众无法访问? 是否有可以做到这一点的软件包或服务?
谢谢。
答案1
一个可能的想法是让测试人员客户端 X509 证书。
- 用户将证书和私钥输入到浏览器中。在我的 Firefox 中,它位于“首选项”->“隐私”-> 滚动到最底部 ->“查看证书”->“您的证书”选项卡 ->“导入”
- 您的 SSL/TLS 连接端(nginx 反向代理、haproxy、apache 等)虽然监听公共 443 端口,但不仅配置为提供通常的服务器端证书,而且还要求成功验证客户端证书(显然您配置为只接受测试人员的证书)。
- 这些是您端的高级 SSL/TLS 选项,因此例如 AWS ALB 对 https 的实现是不够的。
- 只有 https 使用才能通过这种方式授权,而不能使用纯文本 http。
- 这根本不影响 http GET/POST/cookie 的内容,因此不会影响这些级别的身份验证方案。
- 未经授权的浏览器将显示 SSL/TLS 错误 - 它们无法传递任何 GET/POST。