【问题标题】:Token Authentication or OAuth 2 for Django Rest Framework API (Or Both?)用于 Django Rest Framework API 的令牌身份验证或 OAuth 2(或两者?)
【发布时间】:2015-09-22 01:06:13
【问题描述】:

我正在使用 Django REST 框架设置一个新的 API,但我有点困惑如何设置身份验证。我正在设置的 API 由公众使用,我希望他们拥有尽可能多的灵活性。

开箱即用,DRF 提供基本身份验证、会话身份验证和令牌身份验证。使用另一个包,您还可以添加 OAuth2 身份验证。

如果我将我的 API 设置为具有令牌身份验证(开箱即用),我为什么需要设置 OAuth2?我已经阅读了一些关于此的内容,但由于 DRF 的 Token Auth 是相当定制的,因此我无法找到太多比较这两种方法的内容。

据我所知,OAuth 只是 Token Auth 的一种高级形式,那么为什么还要安装和配置它呢?

【问题讨论】:

  • Oauth 让用户无需创建新的用户名和密码即可方便地登录您的网站。他们登录谷歌(或脸书,或任何人),谷歌告诉你他们就是他们所说的人。这意味着他们不必为您的网站创建和记住新密码(最好的情况),或者他们最大限度地减少您的安全处理密码的责任(密码重用..)。如果破解者攻击您的网站,他们只能访问您的网站,因为他们只有从 google 到您网站的令牌。不是用户重复使用密码的所有网站的用户名和密码。
  • 这似乎是 OAuth 的一个用例,是的,但是在 API 的上下文中,我不确定这是否正确。不过,根据我目前的理解,我已经在下面发布了一个答案。

标签: authentication oauth-2.0 django-rest-framework


【解决方案1】:

我对 OAuth2 稍有熟悉,但必须做一些功课才能考虑清楚这一点。 OAuth 相对于内置令牌身份验证的优势在于 OAuth 可以由计算机协商,为每个客户端提供不同的令牌,并且可以轻松撤销。

因此,如果我将 OAuth 设置为我的 API 上的身份验证,那么您就可以委托第三方使用您的数据。例如,Twitter 具有 OAuth,因此您可以使用可用于访问您的数据的 OAuth 令牌设置第三方客户端(Tweetie 或其他客户端)。但是,如果您停止使用 Tweetie,或者您不再信任 Tweetie,您可以在不重置密码的情况下撤销其 OAuth 访问权限,从而撤销已配置的每个客户端的访问权限。

因此,就我而言,我有一个主要是读取的 API,并且(还)没有特定用户私有的资源。因此,我们不需要 OAuth,因为我们预计人们不需要将密码提供给第三方客户端。

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2015-12-15
    • 2019-04-22
    • 2019-01-18
    • 2021-05-22
    • 2020-09-12
    • 2019-05-18
    • 2018-03-25
    • 2023-03-08
    相关资源
    最近更新 更多