【问题标题】:Authenticate Generated API Key in accessing Django Rest API在访问 Django Rest API 时验证生成的 API 密钥
【发布时间】:2021-02-18 09:30:03
【问题描述】:

我需要让第三方用户访问我拥有的一些 REST API。我创建了一个APIkey 模型,它将存储生成的密钥,可用于访问 API。

我只是还不知道如何将 API 密钥添加到我的应用程序的身份验证中,因为我的 auth.py 中已经有一个 BearerTokenAuthentication

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    通常在 Django 中,身份验证对应于特定的用户,而 API 密钥可以识别 客户端应用程序 或其他用户代理。您可能决定向每个用户分发一个唯一的 API 密钥 - 在这种情况下,这只是验证用户的另一种方式 - 但您通常可以为应用分配一个 API 密钥,甚至第三方组织/系统。您的其中一个 API 可能需要识别用户和客户端应用程序,在这种情况下,您需要用户身份验证和 API 密钥。另一个 API 可能只需要知道客户端应用程序,在这种情况下,只需 API 密钥就足够了。

    API 密钥通常作为“x-api-key”HTTP 标头传递。您必须在视图中检索此标头并查找 APIkey 的模型实例。

    【讨论】:

    • 在 auth.py 中,是否可以同时拥有 BearerTokenAuthenticationApiKeyTokenAuthentication?那就是我要验证令牌的地方吗?
    • 乍一看,这似乎是一条显而易见的路线,但问题是 API-key 不能识别单个用户,而是客户端应用程序/系统/组织,所以你不能将 API 密钥的检查包装为 Django 身份验证器:如果成功通过身份验证,后者必须始终返回一个 User 实例。相反,您想创建一个代表 API 密钥的 Django permission。但最好使用现有的解决方案,例如:florimondmanca.github.io/djangorestframework-api-key/guide
    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多