2013-02-17 25 views
5

Come si autentica con Firebase in un'estensione di Chrome? Devo specificare l'elenco dei domini consentiti nella Forgia. Il dominio Chrome per l'estensione è solo una grande stringa simile a un hash.Autenticazione Firebase in una pagina di sfondo estensione di Chrome

ho letto questo: authClient.login problems

Ma il dominio basato hash di un'estensione Chrome non viene accettato nella fucina Firebase. C'è un altro modo per farlo? Attualmente sto solo leggendo il cookie firebaseSessionKey per dare per scontato che io abbia effettuato l'accesso. Ma sicuramente non può essere così sicuro come permettere a Firebase di convalidare questa chiave di sessione.

+0

Ingegnere presso Firebase qui. Poiché le estensioni di Chrome consentono una modifica più ampia delle richieste HTTP, consentendo di configurare un referente diverso qui potrebbe non essere la soluzione sicura. Se ne hai la possibilità, mi piacerebbe sentire un po 'di più sul tuo caso d'uso e sul tipo di autenticazione che vorresti usare nella tua estensione - non esitate a scrivermi a [email protected] –

+0

Scriverò a voi gente a riguardo. Ho un lungo foglio di appunti che ho fatto mentre stavo lavorando a questo. Attualmente il sistema ha il codice per 3 diverse piattaforme e si estenderà a circa 12 piattaforme. Penso che voi ragazzi potreste trovarlo interessante. –

risposta

8

Come Rob sottolinea, l'autenticazione non può funzionare in un ambiente che non impone restrizioni di origine. Il problema fondamentale qui è che qualsiasi provider di autenticazione (Facebook, Twitter, Persona o il proprio servizio) non può rilasciare un'identità a un browser - cioè non ha senso usare Facebook per accedere al browser (o estensione).

Il componente aggiuntivo F1 per Firefox ha riscontrato un problema simile (http://f1.mozillamessaging.com/) - in cui autorizzi F1 a pubblicare su Twitter/Facebook per tuo conto. L'estensione aveva un sito Web con esso, da dove si dovrebbe servire la pagina di accesso e procedere come si farebbe normalmente in una pagina web. Avrai bisogno di un codice per comunicare tra la pagina web e la tua estensione, chrome fornisce gli strumenti necessari.

Vorrei raccomandare lo stesso approccio: creare una pagina web su un dominio reale (le pagine di Github sono fantastiche per questo) per accompagnare la tua estensione. Ciò significa che la tua estensione non può funzionare offline, ma nessuno dei due può accedere o scrivere a Firebase!

+0

Ho un sito Web con una dashboard in cui è possibile accedere e mantenere l'account con alcune impostazioni collegate direttamente a Firebase (quindi anche le impostazioni si riflettono ovunque!). Questo è alla fine ciò che ho intenzione di fare per garantire che l'estensione chrome sia in grado di funzionare almeno in una sorta di ambiente autorizzato. Come ho scritto nel mio commento a Rob, voglio che funzioni su piattaforme diverse. –

+0

@Anant, che tipo di informazioni deve passare la pagina Web all'estensione? Dopo aver registrato la variabile utente ha l'oggetto utente, ma anche se lo passiamo all'estensione Firebase penserà ancora che l'utente non abbia effettuato il login – abinop

+2

Ehi @abinop, dovrai passare il token di autenticazione Firebase dalla pagina web all'estensione. È possibile accedere a questo tramite user.firebaseAuthToken, quindi utilizzare firebaseRef.auth (token) per accedere come tale utente. – Anant

1

Funzionerà utilizzando il flusso di accesso di Google Plus, che ritengo sia l'unico che consente l'autenticazione incrociata, quindi gli ambiti sono Login Google Plus.

"www [dot] googleapis [dot] com/auth/plus.login"

Così che cosa sta accadendo qui è si otterrà l'access_token dall'estensione che vi sarà l'invio di Firebase con la richiesta utilizzando authwihtoauthtoken che specifica google come un fornitore insieme al token_accesso acquisito da chrome.identity.getAuthToken()!

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

Ora, il fatto è che questo token di accesso potrebbe essere rilasciato da qualsiasi altra applicazione, quindi abbiamo bisogno di assicurarsi che sia valido ed è stato rilasciato per la nostra applicazione, in fondo abbiamo bisogno di sapere là isn 't uomo nel mezzo cercando di accedere al nostro database.

Questa verifica viene eseguita dal firebase.

Verificheranno se questo token appartiene alla stessa applicazione in cui è stato rilasciato il token.

Quindi sarà necessario creare un altro set di credenziali nella stessa applicazione nella console di Google Developer come per la propria estensione. Fondamentalmente faremo la stessa cosa come se dovessimo farlo per la nostra pagina Web, ma inseriremo questo nuovo set di credenziali nella pagina di sicurezza di google oAuth di Firebase.

Faranno questo controllo per noi lì. Verificheranno con google se il token viene rilasciato per la stessa app.

Questo è tutto.

Informazioni di base.

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

Caso d'uso

Invio token ID con le richieste che devono essere autenticati. Ad esempio, se è necessario passare i dati al server e si desidera garantire che determinati dati provengano da un utente specifico.

Quando verificare l'accesso Tutti i token devono essere verificati sul server a meno che non si sappia che provengono direttamente da Google. Tutti i token che ricevi dalle tue app client devono essere verificati.

Google ha un tutorial su come fare questo per python trovato in:

"github [dot] com/googleplus/gplus-verifytoken-python"

Quindi, in pratica ciò che sta accadendo qui è; invece tu fai la verifica sul tuo server, Firebase fa questa verifica per te quando inserisci CLIENT_ID e APP_SECRET nel firebase e abiliti l'autenticazione di Google.

Il modo per farlo correttamente è una combinazione o lo stesso stile di verifica a chi è stato emesso il client_secret. Chrome ti fornirà un access_token e quindi questo access_token verrà controllato sul back-end di Firebase.

+0

Grazie per la risposta su questo! È passato un po 'di tempo, ma proverò qualcosa di questo e tornerò. :) –

Problemi correlati