14

我創建了端點apis,但問題是任何人都可以使用我的項目id進入api explorer並執行這些apis。我只在終端類聲明的頂部放置了Android客戶端ID(使用調試密鑰庫),但仍可以進入隱身模式並執行apis。我怎樣才能限制apis,只有我的android應用程序有訪問權限,其他所有人都會拋出一些異常?只允許我的android應用程序執行java中的端點api

+0

您可否詳細說明以下幾點: 您正在使用哪個Google API? 您將訪問哪些數據? (用戶數據與應用數據) –

+0

看看Dropbox等如何處理認證。需要初始登錄才能獲取API密鑰並鎖定https通信。 – zaph

回答

3

可以通過添加必須正確調用API的關鍵參數來保護API。如果API的用戶不知道密鑰,那麼即使使用API​​ Explorer,他也將無法使用該API。

這種方法的優點是操作簡單,如果您需要,您可以自己嘗試API。

缺點包括很容易被確定的用戶繞過,只是通過查看流量。

+1

沒有任何標準的谷歌建議這樣做的方式? – user531069

1

您可以在每個API allowed_client_ids上使用ANDROID_CLIENT_ID,這可能是一種可能的解決方法。

我認爲如果你沒有按照它尚未這可能幫助:https://cloud.google.com/appengine/docs/python/endpoints/auth#Python_Creating_OAuth_20_client_IDs

+0

我的代碼中有clientIds = {}。這是同樣的事情嗎? – user531069

+0

您可以在API端點裝飾器中使用'allowed_client_ids'和'audiences'來限制您的apis對特定客戶端id的使用,嘗試閱讀 - **在我上面共享的鏈接中指定API後端**中的授權客戶端 – Codetoend

+0

可以看看這個[link](http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html)如果它解決了這個目的。 – Codetoend

2

你需要確保你已經正確編碼您的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,但執行將會阻止一個錯誤。

這篇文章有詳細信息:https://cloud.google.com/appengine/docs/java/endpoints/auth#Specifying_authorized_clients_in_the_API_backend

你可能要考慮把適當的權威性周圍的端點調用(大約每一種方法,即每個用戶的身份驗證檢查),如果它是特別敏感。只需將User參數添加到@ApiMethod就足以讓強制用戶在執行每個方法之前進行身份驗證。

希望有所幫助。

+0

正如我所提到的,我已經有了clientIds = {}代碼 – user531069

1

爲此,使用對稱密鑰加密和數字簽名。不過,您需要先與Android應用分享密鑰。

下面是它的工作原理。

每當Android應用正在網絡請求,你把網址&的參數,那麼你哈希,然後使用共享的私有密鑰加密。然後您將簽名作爲另一個參數追加到URL中。

在接收端,您的Web API將驗證請求是否來自您的Android應用程序。

請注意,這將只適用於您的應用程序。這將無法正常工作,以此來捕獲所有通用的Android請求/

0

以下是一些值得考慮的要點:

雲端點一直支持Android客戶端ID和 包簽名,所以應該ATLEAST採取關心的事實, 只有簽署從你身邊的Android應用程序可以訪問 端點

如果您想從接入刪除Web客戶端,那麼我會 可能考慮的HTTP頭和代理,看看是否有識別這些網站clients.However的 肯定的方式,這將 要求你寫你自己的授權邏輯的方法 ,因爲我不相信端點的基礎設施可以爲您

自動利用這一 照顧。如果你想使用API​​瀏覽器來測試 了API的快捷方式通過註解爲大家

刪除訪問可能是 問題。所以請保持API Explorer訪問可用。

相關問題