2016-09-19 31 views
0

我有一个在django中创建的web应用程序,运行在nginx web服务器/反向代理后面的gunicorn应用程序服务器中。我需要有外部应用程序来访问一些处理过的数据(csv/json),为此我需要某种认证。基本的django auth/login不是最优的,因为简单的脚本需要通过一个简单的请求来提取数据,而不是cookie等(不是由我创建的)。API访问认证/应用程序密钥(django/nginx/gunicorn)

现在,我有

  1. 设置服务是可用以https/TLS仅

  2. 创建IP过滤器在Django,以减少 “受攻击面” 有:

request.META['HTTP_X_REAL_IP']

,并使用nginx的转发IP与:

proxy_set_header X-Real-IP $remote_addr; 

接下来,我就在想,包括和需要被列入请求,并针对数据库检查有效键列表应用程序键(伪线什么的哈希值)。

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

回答

1

除了基于会话/ cookie的身份验证方法之外,还有很多身份验证方法。为你的情况,我会建议简单的令牌认证。只要保存同样的道理在你的Django应用程序和外部应用程序,并从外部应用到Django的每个请求,发送额外的头:

Authentication: Token YOUR_TOKEN_KEY 

现在你需要在Django做的是获取该令牌并检查是否匹配一个本地保存。

如果您想获得API的更多身份验证选项,请检查Django Rest Framework documentation

+0

听起来正是我在找的东西,去试试这个。谢谢! – vltrrr