2016-09-19 64 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