【问题标题】:API access authentication/application key (django/nginx/gunicorn)API访问认证/应用密钥(django/nginx/gunicorn)
【发布时间】:2016-09-19 09:05:58
【问题描述】:

我在 django 中创建了一个 web 应用程序,在 nginx webserver/reverse-proxy 后面的 gunicorn 应用程序服务器中运行。我需要有外部应用程序来访问一些处理过的数据(csv/json),为此我需要某种身份验证。基本的 django auth/login 不是最佳的,因为一个简单的脚本需要通过一个简单的请求来提取数据,没有 cookie 等(不是我创建的)。

现在,我有

  1. 设置仅可使用 https/tls 的服务

  2. 在 django 中创建了一个 IP 过滤器以减少“攻击面”:

request.META['HTTP_X_REAL_IP']

并使用 nginx 转发 ip:

proxy_set_header X-Real-IP $remote_addr;

接下来我正在考虑包含需要包含在请求中的应用程序密钥(pw 或其他内容的哈希),并针对 db 检查有效密钥列表。

这是一个合适的 api 身份验证还是有其他可以使用/推荐的东西?某种应用程序关键框架?

【问题讨论】:

    标签: python django nginx


    【解决方案1】:

    除了基于会话/cookie 的身份验证方法之外,还有许多身份验证方法。对于您的情况,我将建议进行简单的令牌身份验证。只需在您的 django 应用程序和外部应用程序中保存相同的令牌,并且在从外部应用程序到 django 的每个请求中,发送额外的标头:

    Authentication: Token YOUR_TOKEN_KEY
    

    现在您在 django 中需要做的就是获取该令牌并检查它是否与本地保存的令牌匹配。

    如果您需要 API 的更多身份验证选项,请查看 Django Rest Framework documentation

    【讨论】:

    • 听起来正是我想要的,我要试试这个。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2020-06-05
    • 2012-02-05
    • 2013-03-25
    • 2013-03-01
    相关资源
    最近更新 更多