簡體   English   中英

保護我的Google App Engine API端點

[英]Protecting my Google App Engine API Endpoints

我最近在保護我的應用引擎方面做了很多研究。 目前,我一直在閱讀以下問題以及該問題中的鏈接:

如何限制Google App Engine端點API只能訪問我的Android應用程序?

但是,它沒有回答我的問題。 我的問題類似於上面的問題,將我的端點API訪問權限僅限於我的應用。 當他在憑證中輸入正確的電子郵件時,這家伙似乎已經開始工作了。

我的問題是,如果我可以在不輸入任何憑據的情況下獲得相同的結果。 我想要它,以便只有我的應用程序可以使用我的端點API,以防止其他應用程序濫用它並使用我的配額。 我已經為我的Android應用程序獲得了一個客戶端ID,並將其放在我的@API注釋中。 為了測試它是否有效,我在另一個api類的@API表示法中為客戶端id創建了一個隨機值。 但是,我的應用程序仍然可以使用這兩個類中的方法。 有幫助嗎?

-編輯-

從閱讀文檔和進一步研究,授權應用程序的端點方式是通過驗證用戶和我的API來檢查用戶是否為空。 我的問題是,在驗證用戶的過程中,Google是否能夠以某種方式讀取我的應用程序的SHA1指紋並將其授權給其客戶ID列表? 如果是這樣,我如何在我的端點中復制此過程,以便檢查發出請求的應用程序的SHA1指紋並將其與設定值進行比較? 我不太了解端點背后的機制,所以如果我理解這個錯誤,請糾正我。

如果Android應用程序具有訪問權限,則用戶可以訪問。 一個有動力的派對有很多選擇來檢查您的協議,包括將設備放在透明代理后面或只是通過調試器運行應用程序。 我建議在發布之前通過ProGuard運行你的應用程序,因為這會使這個過程變得更加困難。

最終,您需要使您的appengine API能夠抵御不受信任的各方。 這只是網絡的狀態。

您可以在此處描述如何保護端點API: http//android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html

秘訣是您使用以下范圍從Google Play請求令牌:audience:server:client_id:9414861317621.apps.googleusercontent.com其中9414861317621.apps.googleusercontent.com是您的ClientId。

Google Play會在您的終端應用中查找ID,如果找到了ID,則會返回Google簽名的JSON Web令牌。 然后根據您的請求傳遞該ID。 上面的文章說你應該把它傳遞給身體。 我可能寧願為此添加另一個參數,因為否則你不能再傳遞自己的實體了。 無論如何,您的服務器后端會收到令牌,並且在您處理API請求之前,您會向Google詢問其是否可信。

如果使用額外參數傳入令牌,則可以通過將HttpServletRequest添加到端點簽名,然后使用request.getHeader(“Yourname”)將其讀出來在服務器端捕獲它。 確保永遠不要將參數添加為URL參數,因為它可能會記錄在某處。

public void endpointmethod(

        // ... your own parameters here

        final HttpServletRequest request
) throws ServiceException, OAuthRequestException {
    request.getHeader("YourHeaderName") // read your header here, authenticate it with Google and raise OAuthRequestException if it can't be validated

在Android端,您可以在構建端點api時傳遞令牌,就像這樣,因此您不必對每個請求執行此操作:

    Yourapiname.Builder builder = new Yourapiname.Builder(AndroidHttp.newCompatibleTransport(), getJsonFactory(), new HttpRequestInitializer() {
        public void initialize(HttpRequest httpRequest) {
            httpRequest.setHeader(...);
        }})

希望這有助於您確保端點API安全。 這應該。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM