【问题标题】:Django internal API Client/Server Authentication or not?Django 内部 API 客户端/服务器身份验证与否?
【发布时间】:2014-01-04 22:08:22
【问题描述】:

我有一个 django 项目,在其中我公开了一些 api 端点(api 端点 = 获取/发布的答案,返回 json 响应,如果我的定义有误,请纠正我)。我在前端使用这些端点,例如更新计数或获取更新的内容,或无数其他事情。我在服务器端,在模板中处理表示逻辑,并且在某些情况下将渲染到字符串模板发送到客户端。

以下是我试图回答的问题:

  1. 我需要在客户端和服务器之间进行某种身份验证吗?
  2. django 跨域保护是否足够?
  3. 在这张图片中,像django-oauth-toolkit 这样的包在哪里安装?还有django-rest-framework?
  4. 如果我不在客户端和服务器之间添加任何身份验证,我是否会让我的服务器处于开放状态以受到攻击?

此外,服务器到服务器的连接是什么?两台服务器都在我的控制之下。

【问题讨论】:

  • 如果您要问 - 我是否应该实施 oauth/openid/something 身份验证来保护我的服务器免受 GET 请求的影响,那么我会说不。是的,服务器将打开,但如果所有视图都不允许对任何对象进行任何更改并且您已遵循 django 部署指南 (djangobook.com/en/2.0/chapter12.html),那么一切都应该没问题。
  • @OdifYltsaeb 是的,这就是我想知道的,我应该为客户实施 oauth 等。邮局电话呢? csrf 够用吗?那么服务器到服务器呢?
  • 好吧,我尽量保护我的每一个观点。这意味着我需要登录保护大多数视图和 API 视图通常需要 API 密钥。所以只要你有 API 密钥——你可以做任何视图允许的事情:P

标签: python django api rest oauth


【解决方案1】:

我强烈建议使用django-tastypie 进行服务器到客户端的通信。 我已经在服务器到服务器或服务器到客户端的许多应用程序中使用它。 这允许您应用 django 安全性以及有关授权过程的更多逻辑。 它还提供开箱即用的功能:

  • 节流
  • json、xml等格式的序列化
  • 身份验证(基本、apikey、自定义等)
  • 验证
  • 授权
  • 分页
  • 缓存

因此,作为一个总体概述,我建议在这样一个框架上构建,这将使您的内部 api 对未来的扩展更具互操作性并且更安全。

现在要具体回答您的问题,如果没有至少一些基本的身份验证/授权,我永远不会启用任何服务器 api。

希望我能回答您关于如何使用框架解决上述所有问题的问题。

您要求的 django-rest-framework 也非常先进且易于使用,但出于我解释的原因,我更喜欢 sweetpie。

希望我能帮上一点忙!

【讨论】:

  • 谢谢,这确实解决了我的问题。是时候以适当的方式重新建模我的 api 了。我仍然想知道您如何将 api 密钥传递给不暴露它的客户?客户端的身份验证/授权是否会减慢页面速度?
  • 身份验证/授权不会影响响应(关于您使用的是标准工作流程)。我不明白你在这里的意思“我仍然想知道你如何将 api 密钥传递给客户而不暴露它”。我很乐意提供帮助,因此请帮助我更深入地了解您的问题。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多