是否可以将django用户帐户绑定到一个特定的工作站?

时间:2017-07-04 08:50:18

标签: python django python-3.x

我的目标是每个用户只能从特定的工作站登录我的Django Web应用程序。

如果用户尝试从其他工作站登录,则应拒绝登录。

是否可以在Django中实现这样的许可模式,可能是通过识别工作站的主机名?

我正在使用Django 1.10 / Python 3.5。

1 个答案:

答案 0 :(得分:3)

通过IP地址或仅通过HTTP提供的其他方式识别工作站非常容易出错且不可靠。相反,我要求用户安装您生成的client certificate

这假设您可以控制证书的安装(有两个部分,私钥和证书本身),因此您可以确保证书仅安装在一个工作站上。您的安装程序可以在此处进行验证,因为它可以收集有关工作站的更多信息,在本地运行。

安装证书后,您需要对此进行验证。让前端服务器执行此操作,例如NGINX具有full support for handling certificate exchange and validation,向您传递DN或甚至是您的应用程序(Django)的完整证书以在授权中使用。有关允许您处理经NGINX验证的证书信息的项目,请参阅https://github.com/kimvais/django-ssl-client-auth

在Windows和OS X上,私钥可以导入为“不可导出的”'。这个标志仍然可以被规避,但没有软件许可方案是不可破解的。确保您具有适当的许可,记录主机信息(IP地址,用户代理字符串等),如果您看到从多个IP地址使用相同的证书,或者有其他证据证明他们使用的证书来自多个一台机器,终止许可证并撤销证书。换句话说:采取合理的预防措施,让自己更愿意违反许可证,无论如何,你都有理由撤销许可证。