2014-09-01 87 views
4

我無法理解認證標準流程和授權谷歌+,而無需使用護照沒有Passport.js谷歌+認證

要求:

  1. 沒有passport.js(我知道這使用它很簡單,但我不想使用它)
  2. 沒有會話(不會使用任何會話,我想維護無狀態)

當前架構:

  • 我有一個REST API服務器,智威湯遜(JSON網絡令牌),
  • 用戶會從我的服務器,獲得訪問令牌時,他們做了POST /登錄
  • 我的服務器,將檢查用戶名和密碼並訪問令牌返回
  • 需要爲未來的API查詢,我的服務器,該令牌

問題:

i)我該如何用Google +取代我目前的認證?

ii)當我使用Google +按鈕登錄時,我在客戶端有一個訪問令牌,是否將令牌發送回我的服務器?

iii)但是,我的服務器沒有這個用戶的信息嗎?我需要先在我的服務器上創建這個用戶,當它發送一個訪問令牌給我的服務器時,我會檢查這個用戶是否有效並返回它與我的服務器訪問令牌? (所以對於這個用戶,我的服務器數據庫沒有密碼信息,並且這個來自谷歌的訪問令牌將被存儲在我的服務器中?)

iv)我閱讀了他們的文檔https://developers.google.com/+/web/signin/server-side-flow 他們使用會話時用戶第一次訪問頁面,我不想用sessiosn

我想知道一般流程,我自己可以實現的代碼, 我只想知道解決這個問題的通用架構!

這將是偉大的,如果你能告訴我一般的概念來處理這個!:)

回答

1

這是落實登入Google+

Google Hybrid server side signin procedure

概括起來,有2部分最推薦的方式;

  1. 從谷歌
  2. 檢索身份驗證令牌發送谷歌身份驗證令牌從服務器

1)交換另一種令牌來獲取來自谷歌的身份驗證令牌,你可以使用其現有的軟件開發工具包

2)一旦你得到了從谷歌身份驗證令牌,再次發送回從客戶到您的服務器

3)在你的服務器,交換ŧ他從Google獲取來自Google的令牌以訪問令牌,以允許您代表用戶使用Google API。你可以檢索用戶信息,發佈的Google+信息

4)生成自己的服務器訪問令牌,並將其發送回客戶端

5)在你的客戶,節省您的服務器生成的訪問令牌用於CRUD從你的服務器