2013-02-17 16 views
5

Jak mogę uwierzytelnić się w Firebase w rozszerzeniu chrome? Muszę określić dozwoloną listę domen w Forge. Domena Chrome dla rozszerzenia jest po prostu wielkim hash-like string.Uwierzytelnianie Firebase na tle rozszerzenia Chrome Strona

Czytałem to: authClient.login problems

Ale domeną opartą na zaszyfrowaną z rozszerzeniem Chrome nie jest akceptowana w Firebase kuźni. Czy istnieje inny sposób, aby to osiągnąć? Aktualnie czytam plik cookie firebaseSessionKey, aby założyć, że jestem zalogowany. Ale na pewno nie jest to tak bezpieczne, jak zezwolenie Firebase na walidację tego klucza sesji.

+0

Inżynier w Firebase tutaj. Ponieważ rozszerzenia Chrome pozwalają na bardziej rozbudowane modyfikacje żądań HTTP, możesz skonfigurować inne narzędzie odsyłające, co może nie być bezpiecznym rozwiązaniem. Jeśli masz szansę, chciałbym usłyszeć trochę więcej na temat twojego przypadku użycia i jakiego typu uwierzytelnienia chcesz użyć w swoim rozszerzeniu - napisz do mnie na adres [email protected] –

+0

Napisze do ciebie ludzie o tym. Mam długa kartkę z notatkami, które zrobiłem podczas pracy nad tym. Obecnie system ma kod na 3 różne platformy i rozszerzy się na około 12 platform. Myślę, że moglibyście uznać to za interesujące. –

Odpowiedz

8

Jak zaznacza Rob, uwierzytelnianie nie może działać w środowisku, które nie wymusza ograniczeń pochodzenia. Podstawowym problemem jest to, że każdy dostawca uwierzytelnienia (Facebook, Twitter, Persona lub Twoja własna usługa) nie może wystawić tożsamości przeglądarki - tj. Nie ma sensu używać Facebooka do logowania do przeglądarki (lub rozszerzenia).

Dodatek F1 do przeglądarki Firefox napotkał podobny problem (http://f1.mozillamessaging.com/) - w którym można zezwolić F1 na publikowanie na Twitterze/Facebooku w Twoim imieniu. Rozszerzenie zawierało stronę internetową, z której można by obsługiwać stronę logowania i postępować tak, jak zwykle na stronie internetowej. Będziesz potrzebował jakiegoś kodu do komunikacji między stroną internetową a twoim rozszerzeniem, chrom zapewnia niezbędne narzędzia.

Polecam to samo podejście - utwórz stronę internetową w prawdziwej domenie (strony Github są niesamowite), aby pasowało do twojego rozszerzenia. Oznacza to, że Twoje rozszerzenie nie działa offline, ale nie możesz zalogować się ani pisać w Firebase!

+0

Mam stronę internetową z deską rozdzielczą, na której można się zalogować i utrzymywać konto z niektórymi ustawieniami, które są bezpośrednio połączone z firebase (więc nawet ustawienia odzwierciedlają się wszędzie!). W końcu zamierzam to zrobić, aby zapewnić, że rozszerzenie chrome jest w stanie działać przynajmniej w jakimś autoryzowanym środowisku. Jak napisałem w moim komentarzu do Rob, chcę, żeby to działało na różnych platformach. –

+0

@Anant, jakiego rodzaju informacje musi przechodzić strona internetowa do rozszerzenia? Po zalogowaniu zmienna użytkownika ma obiekt użytkownika, ale nawet jeśli przekażemy ją do rozszerzenia, Firebase nadal będzie myślał, że użytkownik nie jest zalogowany – abinop

+2

Hej @abinop, musisz przekazać token uwierzytelniania Firebase ze strony internetowej do rozszerzenia. Możesz uzyskać do niego dostęp za pośrednictwem user.firebaseAuthToken, a następnie użyć firebaseRef.auth (token), aby zalogować się jako ten użytkownik. – Anant

1

Będzie to działać z wykorzystaniem funkcji logowania do logowania Google Plus, która według mnie jest jedyną, która umożliwia uwierzytelnianie krzyżowe, więc zakresy to Google Plus Zaloguj.

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

Więc co się tu dzieje to dostaniesz access_token z rozszerzenia, które będzie wysyłać do Firebase z prośbą wykorzystaniem authwihtoauthtoken określający google jako dostawcę wraz z access_token uzyskanym z chrome.identity.getAuthToken()!

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

Teraz jest fakt, że dostęp ten żeton może zostać wydany przez inną aplikację, więc musimy się upewnić, że jest on ważny i czy został wydany dla naszej aplikacji, po prostu musimy wiedzieć Nie nieprawdaż Mężczyzna w środku próbuje uzyskać dostęp do naszej bazy danych.

Ta weryfikacja jest przeprowadzana przez firebase.

Będą sprawdzać, czy token należy do tego samego wniosku, w którym został wydany token.

Musisz więc utworzyć inny zestaw poświadczeń w tej samej aplikacji w konsoli programistów google, jak w przypadku swojego rozszerzenia. Zasadniczo robimy to samo, co gdybyśmy zrobili to dla naszej strony internetowej, ale będziemy wstawiać ten nowy zestaw poświadczeń do oFeury goo firebase w ich sekcji bezpieczeństwa.

Zrobią to za nas tam. Będą weryfikować za pomocą google, jeśli token zostanie wysłany do tej samej aplikacji.

To wszystko.

Informacje dodatkowe.

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

przypadków użycia

Wysyłanie znaki identyfikacyjne z wniosków, które muszą być uwierzytelnione. Na przykład, jeśli chcesz przekazać dane do swojego serwera i chcesz upewnić się, że dane pochodzą od konkretnego użytkownika.

Kiedy zweryfikować dostęp Wszystkie żetony potrzebne do weryfikacji na serwerze, chyba że wiesz, że pochodzą bezpośrednio od Google. Każdy token otrzymany z aplikacji klienckich musi zostać zweryfikowany.

Google ma tutorial jak to zrobić dla pytona adresem:

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

Więc w zasadzie to, co się tu dzieje jest; zamiast tego przeprowadzasz weryfikację na swoim serwerze, firebase wykonuje tę weryfikację dla ciebie, kiedy wpisujesz CLIENT_ID i APP_SECRET do bazy ogniowej i włączasz Uwierzytelnianie Google.

Sposób wykonania tej czynności jest kombinacją lub takim samym stylem weryfikacji, dla której wystawiono atrybut client_secret. Chrome da ci access_token, a następnie ten access_token będzie sprawdzany na zapleczu firewallu.

+0

Dziękuję za odpowiedź w tej sprawie! Minęło trochę czasu, ale spróbuję tego trochę i wrócę. :) –

Powiązane problemy