【发布时间】:2011-02-08 23:54:44
【问题描述】:
我正在规划一个新项目。我希望能够通过互联网从我的安卓手机控制多个继电器。我需要使用基于 HTTP 的服务器作为电话和中继之间的中间人。 Django 是我的首选平台,因为 Python 是我最强的技能组合。这将不是一个“网络应用程序”(用于管理用户及其对中继的访问的管理界面除外)。相反,服务器将简单地以 HTTPS 请求和 JSON 编码的形式提供 API。不过,我应该注意,我一生中从未做过任何 Web 开发,所以我还不知道最佳实践。身份验证方法应满足以下条件:
- 通过 HTTPS(自签名 SSL)工作
- 提供多因素身份验证(以您拥有和知道的形式)
- 相当安全(很难被愚弄、猜测或以其他方式绕过)
- 对于服务器运营商和移动客户端上的最终用户而言,实施起来很简单
-
在 CPU 周期和带宽方面都是轻量级的
我打算用下面的方案来解决这个问题:
- 管理员登录 Web 界面,创建用户并设置他/她的权限(包括用户选择的用户名和密码)。
- 用户启动客户端,选择添加服务器,然后输入服务器 URL 和他/她的凭据。
- 客户端尝试通过 HTTP auth 对用户进行身份验证 (通过 SSL)。如果认证成功,服务器将生成一个 UUID 形式的 API 密钥并发送给客户端。客户端将保存此密钥并在所有通过 HTTPS 的 API 调用中使用它。 HTTP 身份验证仅用于恢复密钥之前的初始身份验证过程,因为此应用程序不需要会话方案。正确的?仅当手机配置为在短暂超时后使用 PIN 或图案自动锁定时,客户端才能工作。服务器将只允许每个用户生成一个密钥,除非管理员重置密钥。因此,简单、移动、多因素身份验证。
从安全的角度来看,这是否合理?另外,谁能指出一个如何使用 Django 内置的 HTTP 身份验证的示例?从谷歌搜索中,我可以找到很多代码片段一起破解该功能。但是,它们都没有以it was added to Django in 1.1 的方式实现 HTTP 身份验证。 The official documentation for REMOTE_AUTH can be found here,但由于我对 Django 非常陌生,因此我很难理解文档。
【问题讨论】:
标签: android django http authentication