2013-02-17 92 views
5

如何使用Chrome擴展中的Firebase進行身份驗證?我需要在Forge中指定允許的域列表。適用於擴展程序的Chrome網域只是一個很大的哈希式字符串。Chrome擴展程序後臺中的Firebase身份驗證頁面

我看過這樣的:authClient.login problems

但Chrome擴展程序的哈希基於域未在火力地堡鍛造接受。還有其他方法可以解決嗎?目前,我只是在閱讀Cookie firebaseSessionKey以假設我已登錄。但肯定無法像讓Firebase驗證此會話密鑰那樣安全。

+0

Firebase工程師在這裏。由於Chrome擴展程序允許對HTTP請求進行更廣泛的修改,因此您可以在此處配置不同的引薦來源可能不是安全的解決方案。如果您有機會,我想更多地瞭解您的使用案例以及您希望在您的擴展中使用哪種類型的身份驗證 - 請隨時通過電子郵件[email protected]給我發送電子郵件。 – 2013-02-18 19:07:26

+0

會寫信給你關於它的人。在做這件事時,我做了一大堆筆記。目前該系統有3種不同平臺的代碼,並將擴展到大約12個平臺。我想你們可能會覺得它很有趣。 – 2013-02-19 05:47:57

回答

8

正如Rob指出的那樣,身份驗證在不強制原始限制的環境中無法使用。這裏的根本問題是任何身份驗證提供者(Facebook,Twitter,Persona或您自己的服務)都無法向瀏覽器發佈身份,即使用Facebook登錄您的瀏覽器(或擴展程序)是沒有意義的。

Firefox的F1加載項遇到類似問題(http://f1.mozillamessaging.com/) - 您將授權F1在您的twitter/facebook上發佈您的代碼。該擴展有一個網站,以及它將從哪裏服務的登錄頁面,並繼續像你通常在網頁中。你需要一些代碼在網頁和你的擴展之間進行通信,chrome提供了必要的工具。

我會推薦相同的方法 - 創建一個真正的域(Github頁面是真棒這個)的網頁去與你的擴展。這意味着您的擴展程序無法離線工作,但您的登錄信息或寫入Firebase的程序也無法使用!

+0

我確實有一個帶有儀表板的網站,用戶可以使用一些直接鏈接到Firebase的設置來登錄和維護帳戶(即使設置反映到處都是!)。這最終是我計劃要做的,以確保chrome擴展能夠至少在某種授權環境中工作。正如我在對Rob的評論中所寫的,我希望這可以在各種平臺上工作。 – 2013-02-19 05:49:00

+0

@Anant,網頁必須傳遞什麼類型的信息給擴展?登錄後,用戶變量具有用戶對象,但即使我們將其傳遞給擴展,Firebase仍會認爲用戶未登錄 – abinop 2013-08-30 13:02:28

+2

嘿@abinop,您需要從Web頁面傳回Firebase身份驗證令牌到擴展。你可以通過user.firebaseAuthToken來訪問它,然後使用firebaseRef.auth(token)以該用戶身份登錄。 – Anant 2013-08-30 22:16:08

1

這將使用谷歌加登錄流程,我相信是唯一一個允許交叉認證,因此範圍是谷歌加登錄。

「萬維網[點] googleapis [點] com/auth /中plus.login」

那麼,什麼是這裏發生的事情是,你會從中你會被髮送使用請求火力延伸拿到的access_token authwihtoauthtoken指定google作爲提供者以及從chrome.identity.getAuthToken()獲取的access_token!

https://www.firebase.com/docs/web/api/firebase/authwithoauthtoken.html

現在的事實是,這個訪問令牌可以由任何其他應用程序發行的,所以我們需要確保它是有效的,並已發佈了我們的應用程序,基本上我們需要知道有ISN中間的人試圖訪問我們的數據庫。

此驗證由Firebase進行。

他們將檢查此令牌是否屬於與令牌已頒發給同一應用程序。

因此,您需要在Google開發者控制檯的相同應用程序下爲您的擴展程序創建另一組憑據。我們將基本上做同樣的事情,就好像我們要在我們的網頁上那樣做,但我們將在其安全部分中將這組新的憑據插入到Firebase的Google oAuth中。

他們會爲我們做檢查。他們將驗證與谷歌,如果令牌發佈到同一個應用程序。

就是這樣。

背景信息。

https://developers.google.com/identity/protocols/OAuth2UserAgent#validatetoken

使用情況

發送ID令牌與需要進行身份驗證請求。例如,如果您需要將數據傳遞到服務器,並且希望確保特定數據來自特定用戶。

當驗證訪問 所有令牌需要,除非你知道它們直接來自谷歌將在服務器上進行驗證。您從客戶端應用程序收到的任何令牌都必須經過驗證。

谷歌有一個教程如何爲蟒蛇做在發現:

「的github [點] com/GOOGLEPLUS/gplus-verifytoken-蟒蛇」

所以基本上這裏發生了什麼是;相反,您需要在服務器上進行驗證,但是當您將FireClient_ID和APP_SECRET輸入Firebase並啓用Google身份驗證時,Firebase會爲您進行驗證。

正確執行此操作的方式是驗證client_secret發給誰的組合或相同樣式。 Chrome會給你一個access_token,然後這個access_token將在firebase的後端進行檢查。

+0

謝謝你對此的迴應!它已經有一段時間了,但我會嘗試一些這個並回來。 :) – 2015-06-08 06:33:54