Django Rest Framework - 阻止访问API?

时间:2014-06-11 20:22:22

标签: django api rest authentication django-rest-framework

我正在使用Django Rest Framework和令牌认证。到目前为止一切都很好。

http://www.django-rest-framework.org/api-guide/authentication#tokenauthentication

但我意识到任何人都可以创建一个挂钩我的API的第三方应用。我无法检测到它或阻止它。

我错过了什么吗?我按照指示行事,而且我:

  • 发送"用户名= blah& password = blah"到https://example.com/api/auth/,并获得一个令牌作为回报。任何人都可以通过第三方应用程序执行此操作。
  • 该标记在身份验证标头中传递,以从API检索数据。任何人都可以这样做,如果他们有他们的用户令牌。

即使用户知道自己的令牌,我也希望他们能够通过官方原生应用访问API。

1。如何保护我的API(使用令牌身份验证)并确保只有MY应用可以连接到它?

2。我可以在标题中包含某种秘密密钥吗?我在生产中使用HTTPS,标题和表单数据(用户名/密码)是否可截获/可读? (由运行应用程序的人员)。

还在学习,谢谢。

1 个答案:

答案 0 :(得分:0)

也许我完全不了解你的问题,但是:

是的,在你的应用程序中,每个使用用户名和密码可以创建令牌,如果你将obtain_auth_token添加到你的urlconfig (你不是不得不)。

所以你可以:

  • 仅提供您的应用用户名和密码
  • 或停用obtain_auth_token视图并在管理员中或手动创建令牌。

要回答您的HTTPS问题: HTTPS加密位于客户端和服务器之间,位于 TCP和HTTP之间。因此,介于两者之间的每个人(中间的人)都看不到任何标题,数据甚至路径。使用SNI时,主机名(Host标题)可见,但没有其他内容。

希望这会有所帮助。