我有一個Web應用程序,我想通過API或Web服務訪問某些功能。我的問題是我想控制我的API可以從哪裏訪問,也就是說,我只想讓我創建或批准的應用程序可以訪問我的API。該API將是一個基於Web的REST服務。我的用戶不會登錄,因此沒有用戶身份驗證。最有可能的用例和現在使用的用例是應用程序將是iOS應用程序。 API將用django/python編碼。控制訪問Web服務/ API的安全措施
鑑於無法查看iOS應用程序的源代碼(我認爲,糾正我,如果我錯了),我最初的想法是,我可以只是有一些祕密密鑰傳入API的參數。然而,任何聽到連接的人都能看到這個鍵,並從世界其他任何地方使用它。
我的下一個雖然是我可以添加一個先前的步驟。在應用程序使用API之前,它必須通過挑戰。在第一次請求時,我的API將創建一個隨機短語並使用某個密鑰(RSA?)對其進行加密。原始未加密的短語將被髮送到應用程序,該應用程序還必須使用相同的密鑰對短語進行加密,並將加密的文本與其請求一起發回。如果加密匹配,應用程序可以訪問,但如果不是,他們不會。
我的問題是:這聽起來像一個很好的方法,如果有的話,是否有任何現有的庫可以做這些類型的東西?我現在將在Python服務器端和客戶端客戶端工作。