我創建了端點apis,但問題是任何人都可以使用我的項目id進入api explorer並執行這些apis。我只在終端類聲明的頂部放置了Android客戶端ID(使用調試密鑰庫),但仍可以進入隱身模式並執行apis。我怎樣才能限制apis,只有我的android應用程序有訪問權限,其他所有人都會拋出一些異常?只允許我的android應用程序執行java中的端點api
回答
可以通過添加必須正確調用API的關鍵參數來保護API。如果API的用戶不知道密鑰,那麼即使使用API Explorer,他也將無法使用該API。
這種方法的優點是操作簡單,如果您需要,您可以自己嘗試API。
缺點包括很容易被確定的用戶繞過,只是通過查看流量。
沒有任何標準的谷歌建議這樣做的方式? – user531069
您可以在每個API allowed_client_ids
上使用ANDROID_CLIENT_ID,這可能是一種可能的解決方法。
我認爲如果你沒有按照它尚未這可能幫助:https://cloud.google.com/appengine/docs/python/endpoints/auth#Python_Creating_OAuth_20_client_IDs
我的代碼中有clientIds = {
您可以在API端點裝飾器中使用'allowed_client_ids'和'audiences'來限制您的apis對特定客戶端id的使用,嘗試閱讀 - **在我上面共享的鏈接中指定API後端**中的授權客戶端 – Codetoend
可以看看這個[link](http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html)如果它解決了這個目的。 – Codetoend
你需要確保你已經正確編碼您的API /後端只接受你的應用程序中的clientId;確保你做不看到com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID
上的API類在@Api註釋中的clientId之一:
@Api(
name = "myApi",
version = "v1",
clientIds = {<your android clientId>},
)
public class myApi {
// your API code here
}
如果API Explorer客戶端ID存在,它會允許它執行你的來自API的API。我不是100%肯定的,但我認爲你仍然可以看到你的API形式的瀏覽器沒有客戶端ID,但執行將會阻止一個錯誤。
你可能要考慮把適當的權威性周圍的端點調用(大約每一種方法,即每個用戶的身份驗證檢查),如果它是特別敏感。只需將User參數添加到@ApiMethod就足以讓強制用戶在執行每個方法之前進行身份驗證。
希望有所幫助。
正如我所提到的,我已經有了clientIds = {
爲此,使用對稱密鑰加密和數字簽名。不過,您需要先與Android應用分享密鑰。
下面是它的工作原理。
每當Android應用正在網絡請求,你把網址&的參數,那麼你哈希,然後使用共享的私有密鑰加密。然後您將簽名作爲另一個參數追加到URL中。
在接收端,您的Web API將驗證請求是否來自您的Android應用程序。
請注意,這將只適用於您的應用程序。這將無法正常工作,以此來捕獲所有通用的Android請求/
以下是一些值得考慮的要點:
雲端點一直支持Android客戶端ID和 包簽名,所以應該ATLEAST採取關心的事實, 只有簽署從你身邊的Android應用程序可以訪問 端點
。
如果您想從接入刪除Web客戶端,那麼我會 可能考慮的HTTP頭和代理,看看是否有識別這些網站clients.However的 肯定的方式,這將 要求你寫你自己的授權邏輯的方法 ,因爲我不相信端點的基礎設施可以爲您
自動利用這一 照顧。如果你想使用API瀏覽器來測試 了API的快捷方式通過註解爲大家
刪除訪問可能是 問題。所以請保持API Explorer訪問可用。
- 1. 只允許從我自己的應用程序訪問我的REST API?
- 2. 如何只允許我自己的應用程序訪問我的API
- 3. 允許使用execvp執行程序
- 4. 允許通過移動應用程序和我的域只能訪問REST API
- 5. iframe只允許我的應用程序(英特爾XDK)
- 6. 如何啓用/允許Java在CefSharp應用程序中運行
- 7. 只允許在某些設備上安裝Android應用程序
- 8. 用戶允許我的應用程序的許可權
- 9. 如何僅允許API訪問android或ios應用程序(laravel)?
- 10. Android - 允許其他應用程序啓動應用程序
- 11. 爲什麼CASPol允許我的.NET應用程序運行?
- 12. CanExecute斷點不允許我使用應用程序
- 13. 應用程序切入點 - 子操作不允許執行重定向操作
- 14. 僅限我的端點訪問我的Android應用程序
- 15. 如何鎖定Android平板電腦只允許一個應用程序運行
- 16. Heroku只允許開發人員的客戶端訪問websocket應用程序
- 17. 如何只允許Android的
- 18. 應用程序驗證程序不允許啓動我的應用程序
- 19. 如何獲得Java應用程序中的確切執行點?
- 20. 我的應用程序不允許我打開任何其他應用程序
- 21. 允許Android應用程序中的所有字符
- 22. 只允許我的域內的特定節點端點的請求
- 23. Javascript onfocus事件處理程序將只允許我執行一個函數
- 24. 允許onclick函數只執行一次
- 25. 只允許某個UIGestureRecognizer一次執行
- 26. 只允許我的服務器執行PHP腳本
- 27. libGDX安裝程序允許我使用在Android中崩潰的Java 8
- 28. 允許Wget只下載應用程序類型的PDF
- 29. 只允許1個應用程序連接到特定的WiFi
- 30. 只允許oracle db登錄到特定的應用程序?
您可否詳細說明以下幾點: 您正在使用哪個Google API? 您將訪問哪些數據? (用戶數據與應用數據) –
看看Dropbox等如何處理認證。需要初始登錄才能獲取API密鑰並鎖定https通信。 – zaph