2017-04-21 299 views
1

我想寫一個web應用程序,它使用登錄谷歌。我對應該遵循的步驟順序有些困惑。據谷歌文檔,爲用戶簽署正常的流程是:編程流程與谷歌登錄

recommended flow for signing in a user

我打算搞清楚的是:

1)我應該與每一位發送IdToken後續的API請求從網絡到我的服務器。

2.)如果有人竊取了此訪問令牌並用它向我的服務器發送了呼叫,該怎麼辦?

回答

0

從草圖典型的信息顯示在谷歌的official publications

enter image description here

  1. 揮發性令牌生成,由發行人(谷歌)簽署,並通常 相當短的壽命到期後(而不是谷歌登錄專用:What is intent of ID Token expiry time in OpenID Connect?)。該Google docs描述瞭如何通過https發送令牌XYZ123到 https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

    正如@伊恩 - 理髮寫道here:「一定要始終通過HTTPS發送ID令牌 - 儘管他們不會被惡意本身使用,攻擊者如果他們可以攔截它,可以使用其中一個建立與應用程序服務器的會話,所以它的重要性不是以純文本形式發送。「

    (刷新)令牌將用於驗證用戶。然後你的後端邏輯(藍色服務器部分)可以授予進一步的特權或例如在後期響應中傳輸數據。 The API(JavaScript版本)提供了一個工具集來監視用戶的會話狀態。

  2. 如陳述here,您必須指定「授權原點」。只有獲得授權的 來源才能通過Google身份驗證 API驗證其客戶用戶。請注意,即使端口 很重要,即如果您允許本地主機:8080作爲授權來源, 那麼localhost:9999不包括在內!此外,客戶端ID本身並不是祕密,並且自然暴露在您的html文檔或應用程序中。但只有授權的來源纔有資格遍歷登錄工作流並將令牌傳輸到後端,在後端通過調用API進行驗證。