我正在使用Django Rest框架和令牌認證。到目前爲止,一切都很好。Django Rest框架 - 阻止訪問API?
http://www.django-rest-framework.org/api-guide/authentication#tokenauthentication
但我意識到,任何人都可以創建一個第三方應用程序,掛鉤到我的API。我無法檢測到它或停止它。
我錯過了什麼嗎?我跟着指示,和我:
- 發送「用戶名=等等&密碼=嗒嗒」到https://example.com/api/auth/,並接收返回的令牌。任何人都可以從第三方應用程序做到這一點。
- 該令牌在身份驗證頭中傳遞以從API檢索數據。任何人都可以做到這一點,如果他們有用戶令牌。
即使用戶知道他們自己的令牌,我也只希望他們能夠通過官方原生應用訪問API。
1.我如何保護我的API(使用令牌認證)並確保只有我的應用可以連接到它?
2.我可以在頭文件中包含某種密鑰嗎?我在生產中使用HTTPS,標題以及表單數據(用戶名/密碼)可以截取/可讀嗎? (由運行應用程序的人員)。
還在學習,謝謝。
每個用戶都需要一個令牌來識別,以便我不必在每個api調用中發送用戶名/密碼,所以我不認爲我可以刪除'obtain_auth_token'。 (也許我是誤解)。 「只給你的應用程序用戶名和密碼」是什麼意思? HTTPS,你說他們無法發現api網址?如果是這種情況,那可能足以阻止第三方應用程序。 – user2616836
當您的API用戶應該能夠生成自己的令牌時,您需要'obtain_auth_token'。當然,他們需要使用用戶名和密碼進行身份驗證才能獲得令牌。 如果您只是爲每個用戶創建一個有效的標記(例如使用信號或自定義用戶模型或..),則不需要'obtain_auth_token',只需要爲用戶提供一種方法來獲取它們自己的令牌。 –
我明白了,謝謝澄清。我瞭解生成令牌的不同方法,但還有什麼其他方法可以在不使用'obtain_auth_token'的情況下爲用戶獲取令牌? – user2616836