Django Rest Framework - 阻止访问 API?

5 authentication api django rest django-rest-framework

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

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

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

我错过了什么吗?我按照指示进行操作,并且:

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

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

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

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

还在学习中,谢谢。

Den*_*ehl 1

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

是的,如果您添加到您的 urlconfig(您不必这样做) ,那么在您的应用程序中拥有用户名和密码的每个人都可以创建令牌。obtain_auth_token

所以你可以:

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

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

希望这有所帮助。