0

我看到一些與此問題相關的類似問題,但這些問題太舊無法考慮,因此我會再次詢問。適用於Google App Engine和Android應用程序的Oauth2.0流程

我有一個Android應用程序,需要對Web服務進行身份驗證才能交換將存儲在Google App Engine上的數據。爲此,我想使用OAuth2.0在我的應用程序和Web服務之間提供身份驗證機制,如下所示:https://developers.google.com/identity/protocols/OAuth2WebServer?hl=en和這裏https://developers.google.com/identity/protocols/CrossClientAuth

我已經在Web服務端驗證令牌如文檔所示。我沒有清楚的唯一部分是在Android上獲取刷新令牌並在Web服務上驗證後,如何在GAE Web服務和Android上執行此操作。

的問題是:

  • 我必須交換該令牌的所有時間,每個通信應用程序和Web服務之間 ?它安全嗎?
  • 保持通信向前發展的最佳途徑是什麼?
+0

這是覆蓋在有關流動的oauth2幫助。請參閱3條腿oauth2 –

+0

Google Developers上的3條腿oauth2的文檔已達到您獲得令牌的地步,但我的問題依然如此。 –

+0

不,它走得更遠。例如它規定獲得的訪問令牌的到期時間。看樣品和Turorials例如驅動器API示例 –

回答

1

研究有關在此之後,該認證流程我使用:

  1. 登錄上的應用程序如下所示:https://developers.google.com/identity/sign-in/android/sign-in
  2. 登陸後,獲得令牌。
  3. 發送令牌通過HTTPS後端服務器
  4. 驗證與GoogleIdTokenVerifier驗證後端服務器上的令牌(你也可以撥打tokeninfo端點),如下所示:https://developers.google.com/identity/sign-in/android/backend-auth

當您收到令牌上你後端服務器,您應該:

在通過HTTPS POST收到ID令牌後,必須驗證令牌的完整性。要驗證令牌是有效的,確保滿足下列標準:

  • 的ID令牌是正確與合適的谷歌公共密鑰(提供JWK或PEM格式)簽訂了JWT。
  • ID令牌中的aud值等於您應用程序的一個客戶端ID。此檢查對於防止發給用於訪問應用程序後端服務器上同一用戶的數據的惡意應用程序的ID令牌是必需的。
  • ID令牌中的iss值等於accounts.google.com或https://accounts.google.com
  • ID令牌的到期時間(exp)未通過。 如果您的身份驗證請求指定了託管域,則該ID令牌具有與您的Google Apps託管域匹配的hd聲明。
  • 用戶認證。爲了與後端服務器進行每次通信,令牌必須在請求標頭上發送,然後後端服務器需要每次都驗證它。
  • 相關問題