2014-02-17 18 views
0

這是一個比代碼錯誤更多的過程問題問題,所以如果我在錯誤的位置發佈請注意善意。gplus在提交到我的網絡應用程序之前驗證客戶端用戶

我已成功驗證gplus用戶客戶端,所以瀏覽器持有谷歌id準備好供我使用。我現在想發佈一些數據到我的網站與該用戶ID爲id,但我想保護它,這意味着我不希望任何人與其他人的gplus id能夠張貼到我的網絡應用程序(它必須是當時經過驗證的用戶)。

我應該安裝php serverside sdk並使用它嗎?如果是這樣,我如何合併客戶端數據?

感謝

回答

1

你是絕對正確想要得到的ID以安全的方式,以使其難以模仿。有兩個主要選項,回調到登錄回調的authResult對象的兩個屬性:

  1. 將「代碼」發送到服務器。這是OAuth 2.0流程的一部分,可以在服務器端交換訪問令牌。從中您可以作爲用戶進行API調用,並檢索用戶標識和其他詳細信息。您可以確信用戶是誰,因爲只有Google可以生成該代碼。這將涉及使用其中一個客戶端庫來處理令牌交換。

  2. 使用'id_token'。這是一個base64編碼的JSON數據塊,其中包含用戶標識(如果您請求「電子郵件」範圍,則使用電子郵件地址)。使它安全的是它包含一個加密簽名,服務器可以驗證該簽名,因此它不能由Google以外的人創建。 id標記用於獲取用戶標識,因此可用於在服務器上查找用戶,但不提供API調用訪問權限。好處是它只需要最新的驗證證書而不會經常改變,所以大多數電話不需要來自服務器的進一步網絡通信來驗證用戶。

您使用的是由您決定的,但兩者都需要服務器上的一些代碼。一般來說,如果您不需要從服務器調用任何Google API,或者擔心最大的登錄性能,請使用id_token。這裏有更多關於這樣的架構:http://www.riskcompletefailure.com/2013/11/client-server-authentication-with-id.html

你甚至可以將兩者結合起來。用戶第一次登錄(當他們看到同意屏幕時),代碼交換不僅會返回訪問令牌(用於撥打電話),還會返回一個長期存在的刷新令牌,您可以將其安全地存儲在數據庫中。如果存儲了該標記,則可以使用id_token快速查找用戶,但仍然使用刷新標記來幫助進行API訪問。

+0

我想我會選擇1,但我可以做一些更詳細的信息。如果我在我的服務器上安裝PHP SDK,是否將我的請求從瀏覽器發送到我的服務器,在那裏使用Google進行身份驗證,並且(如果成功)將數據發佈到我的數據庫? – khany

相關問題