Django Rest Framework API 的令牌认证或 OAuth 2(或两者?)

mli*_*ner 4 authentication oauth-2.0 django-rest-framework

我正在使用 Django REST Framework 设置一个新的 API,但我对如何设置身份验证感到有些困惑。我正在设置的 API 由公众使用,我希望他们拥有最大的灵活性。

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

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

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

mli*_*ner 6

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

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

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