簡體   English   中英

設計:將Google Open ID遷移到Google OAuth

[英]Devise: Migrate Google Open ID to Google OAuth

有沒有人有關於如何做到這一點的線索? 我基本上試圖將OpenID中的“與Google連接”策略替換為OAuth。 當用戶在新的OAuth方案下登錄時,挑戰是識別舊用戶(Google開放ID上的用戶)。

我有一個工作實現,它依賴於電子郵件地址作為主鍵,因為開放ID策略捕獲了這一點。 問題是,我不想在OAuth流程中要求提供電子郵件。 理想的價值僅僅是Google用戶ID,但Open ID策略似乎沒有捕獲到它。

所以我有https://www.google.com/accounts/o8/id?id=AfSCwGQ4PUaidXSQddJugXKLqU5V0MrXFhJM6UHybPw這樣的開放式ID令牌,並嘗試了解我是否可以從中獲取Google ID。

更新:我在這里解釋了我最終如何進行遷移 - http://softwareas.com/migrating-user-accounts-from-google-openid-to-google-oauth-to-google-plus

我們今天沒有准備好的策略可以避免用戶看到另一個批准頁面。

但是,我建議您只關聯電子郵件地址並轉到OAuth2登錄,而不是嘗試執行基於OAuth1的混合流並且必須將所有遺留代碼添加到您的服務器。 我假設你像大多數網站最終要求電子郵件地址,因為他們通常希望它用於帳戶恢復。 只需確保從OpenId獲取電子郵件地址作為簽名參數之一。

然后使用userinfo.email范圍和OAuth2 https://developers.google.com/accounts/docs/OAuth2Login ,您應該能夠以更少的開發人員痛苦進行遷移。

此外,我們正在添加對OpenIDConnect的支持,並且它支持login_hint的參數,因此您將&login_hint=bob@gmail.com添加到您的授權URL,它將引導批准到正確的帳戶。 現在沒有記錄,但它可能對您有用。 用戶的瀏覽器可能會使用多個帳戶登錄到Google,您希望嘗試使用正確的帳戶。 始終檢查您從OAuth2流程獲得的電子郵件,以確保它匹配,因為這只是一個“提示”。

用戶仍然需要重新授權OAuth2,但我們計划在將來跳過此重新授權。 重點是計划使用OAuth2,我們希望盡快提供無縫遷移,您將獲得支持的協議。

Google使用OpenID的定向標識符 ,每個依賴方都是唯一的,並明確設計為隱藏用戶的任何相關標識符。 所以簡短的回答是,沒有辦法獲得與給定的Google OpenID相對應的Google ID。

但是,一種選擇可能是使用Google的OpenID + OAuth混合流程。 這允許您將OAuth令牌作為普通OpenID流的一部分獲取,然后可以使用該令牌從OAuth2登錄 API獲取用戶的ID,然后您可以將其與其現有帳戶關聯。 完成所有現有用戶的操作后,請直接切換到使用OAuth2登錄。

當然,使用這種方法的訣竅是讓所有用戶再次登錄,以便您可以通過新流程發送它們。 這將取決於您願意等待多長時間遷移帳戶,以及您是否願意通過向他們發送電子郵件並要求他們再次登錄來刺激現有用戶(類似於強制密碼重置)。

暫無
暫無

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

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