2013-02-17 46 views
5

क्रोम एक्सटेंशन में फ़ायरबेस के साथ मैं कैसे प्रमाणित करूं? मुझे फोर्ज में अनुमत डोमेन सूची निर्दिष्ट करने की आवश्यकता है। एक्सटेंशन के लिए क्रोम डोमेन सिर्फ एक बड़ी हैश-जैसी स्ट्रिंग है।क्रोम एक्सटेंशन पृष्ठभूमि में फ़ायरबेस प्रमाणीकरण पृष्ठ

मैं इस पढ़ा है: authClient.login problems

लेकिन एक क्रोम विस्तार के टुकड़ों में बंटी आधारित डोमेन Firebase फोर्ज में स्वीकार नहीं किया जा रहा है। क्या इसके बारे में जाने का कोई और तरीका है? वर्तमान में यह केवल यह मानने के लिए कुकी firebaseSessionKey पढ़ रहा है कि मैं लॉग इन हूं। लेकिन निश्चित रूप से यह सुरक्षित नहीं हो सकता है कि फायरबेस इस सत्र कुंजी को मान्य करने के लिए सुरक्षित हो।

+0

यहां फायरबेस पर अभियंता। चूंकि क्रोम एक्सटेंशन HTTP अनुरोधों के अधिक व्यापक संशोधन की अनुमति देता है, जिससे आप यहां एक अलग रेफरर को कॉन्फ़िगर करने की अनुमति दे सकते हैं, यह सुरक्षित समाधान नहीं हो सकता है। यदि आपको मौका मिलता है, तो मैं आपके उपयोग के मामले के बारे में कुछ और सुनना चाहता हूं और आप अपने एक्सटेंशन में किस प्रकार का प्रमाणीकरण करना चाहते हैं - मुझे [email protected] पर ईमेल करने के लिए स्वतंत्र महसूस करें। –

+0

आपको इसके बारे में लोगों को लिख देगा। मेरे पास नोट्स की एक लंबी शीट है क्योंकि मैंने इस पर काम किया था। वर्तमान में सिस्टम में 3 अलग-अलग प्लेटफार्मों के लिए कोड है और लगभग 12 प्लेटफॉर्म तक विस्तारित होगा। मुझे लगता है कि आप लोग इसे दिलचस्प लग सकते हैं। –

उत्तर

8

जैसे रोब बताते हैं, प्रमाणीकरण ऐसे वातावरण में काम नहीं कर सकता है जो मूल प्रतिबंधों को लागू नहीं करता है। यहां मौलिक समस्या यह है कि कोई भी प्रमाणीकरण प्रदाता (फेसबुक, ट्विटर, पर्सनो, या आपकी खुद की सेवा) किसी ब्राउज़र को पहचान जारी नहीं कर सकता है - यानी फेसबुक का उपयोग अपने ब्राउज़र (या एक्सटेंशन) में लॉगिन करने के लिए करना व्यर्थ है।

फ़ायरफ़ॉक्स के लिए F1 ऐड-ऑन एक समान समस्या में चला गया (http://f1.mozillamessaging.com/) - जहां आप अपनी तरफ से ट्विटर/फेसबुक पर पोस्ट करने के लिए एफ 1 को अधिकृत करेंगे। विस्तार के साथ एक वेबसाइट थी, जहां से आप लॉगिन पेज की सेवा करेंगे और आगे बढ़ेंगे क्योंकि आप आमतौर पर एक वेब पेज में होंगे। वेब पेज और आपके एक्सटेंशन के बीच संवाद करने के लिए आपको कुछ कोड की आवश्यकता होगी, क्रोम आवश्यक टूल प्रदान करता है।

मैं एक ही दृष्टिकोण की अनुशंसा करता हूं - एक वास्तविक डोमेन पर एक वेब पेज बनाएं (जीथ्यूब पेज इसके लिए शानदार है) आपके एक्सटेंशन के साथ जाने के लिए। इसका मतलब है कि आपका एक्सटेंशन ऑफ़लाइन काम नहीं कर सकता है, लेकिन न ही आपका लॉगिन या फायरबेस में लिख सकता है!

+0

मेरे पास एक डैशबोर्ड वाली वेबसाइट है जहां कोई भी लॉगिन कर सकता है और कुछ सेटिंग्स के साथ खाते को बनाए रख सकता है जो सीधे फायरबेस से जुड़े होते हैं (इसलिए सेटिंग हर जगह प्रतिबिंबित होती है!)। आखिर में यह सुनिश्चित करने के लिए मैं क्या करने की योजना बना रहा हूं कि क्रोम एक्सटेंशन कम से कम किसी अधिकृत वातावरण में काम करने में सक्षम है। जैसा कि मैंने रोब को अपनी टिप्पणी में लिखा था, मैं चाहता हूं कि यह विभिन्न प्लेटफार्मों पर काम करे। –

+0

@ अंटेंट, वेब पेज एक्सटेंशन को किस प्रकार की जानकारी पास करनी चाहिए? उपयोगकर्ता चर में लॉगिंग करने के बाद उपयोगकर्ता ऑब्जेक्ट होता है, लेकिन अगर हम इसे एक्सटेंशन में पास करते हैं तो भी फ़ायरबेस को लगता है कि उपयोगकर्ता – abinop

+2

हे @ किबिनॉप में लॉग इन नहीं है, आपको वेब पेज से फायरबेस प्रमाणीकरण टोकन वापस पास करना होगा विस्तार के लिए। आप user.firebaseAuthToken के माध्यम से इसका उपयोग कर सकते हैं, फिर उस उपयोगकर्ता के रूप में लॉगिन करने के लिए firebaseRef.auth (टोकन) का उपयोग करें। – Anant

1

यह Google Plus लॉगिन फ़्लो का उपयोग करके काम करेगा जो मुझे विश्वास है कि केवल एक ही है जो क्रॉस प्रमाणीकरण की अनुमति देता है ताकि स्कॉप्स Google प्लस लॉगिन हो।

"www [dot] googleapis [dot] com/प्रमाणन/plus.login"

तो तुम विस्तार है जो आप का उपयोग कर अनुरोध के साथ firebase को भेज देंगे से ACCESS_TOKEN मिल जाएगा यहाँ क्या हो रहा है authwihtoauthtoken chrome.identity.getAuthToken() से प्राप्त access_token के साथ Google को प्रदाता के रूप में निर्दिष्ट करते हुए!

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

अब तथ्य यह है कि यह पहुँच टोकन किसी अन्य अनुप्रयोग द्वारा जारी किया जा सकता है, तो हम है कि यह वैध है और हमारे ऐप्लिकेशन के लिए जारी किया गया है सुनिश्चित करने की आवश्यकता, मूल रूप से हम वहाँ isn पता करने की जरूरत मध्य में आदमी हमारे डेटाबेस तक पहुंचने की कोशिश कर रहा है।

यह सत्यापन फ़ायरबेस द्वारा किया जा रहा है।

वे जांच करेंगे कि यह टोकन उसी एप्लिकेशन से संबंधित है जैसे टोकन जारी किया गया है।

तो आपको अपने एक्सटेंशन के लिए Google डेवलपर कंसोल में उसी एप्लिकेशन के तहत प्रमाण-पत्रों का एक और सेट बनाना होगा। हम मूल रूप से वही काम करेंगे जैसे कि हम इसे अपने वेबपृष्ठ के लिए करना चाहते थे, लेकिन हम अपने सुरक्षा अनुभाग में फायरबेस के google oAuth को प्रमाण-पत्रों के इस नए सेट को शामिल करेंगे।

वे हमारे लिए यह जांच करेंगे। यदि टोकन उसी ऐप पर जारी किया जाता है तो वे Google के साथ सत्यापित करेंगे।

यही है।

पृष्ठभूमि जानकारी।

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

मामले उपयोग

अनुरोध प्रमाणीकृत करने की आवश्यकता है के साथ आईडी टोकन भेजा जा रहा है। उदाहरण के लिए, यदि आपको अपने सर्वर पर डेटा पास करने की आवश्यकता है और आप यह सुनिश्चित करना चाहते हैं कि विशिष्ट डेटा किसी विशिष्ट उपयोगकर्ता से आया हो।

एक्सेस सभी टोकन को आपके सर्वर पर सत्यापित करने की आवश्यकता है जब तक कि आप नहीं जानते कि वे सीधे Google से आए हैं। आपके क्लाइंट ऐप्स से प्राप्त होने वाले किसी भी टोकन को सत्यापित किया जाना चाहिए।

गूगल ट्यूटोरियल अजगर के लिए यह करने के लिए पर पाया गया है:

"GitHub [dot] com/googleplus/GPlus-verifytoken-अजगर"

तो बुनियादी तौर पर यहाँ क्या हो रहा है; इसके बजाय आप अपने सर्वर से सत्यापन करने के लिए कर रहे हैं, फ़ायरबेस आपके लिए यह सत्यापन करता है जब आप CLIENT_ID और APP_SECRET को फ़ायरबेस में दर्ज करते हैं और Google प्रमाणीकरण सक्षम करते हैं।

यह सही ढंग से करने का तरीका यह है कि क्लाइंट_सेक्रेट जारी किया गया था, यह सत्यापित करने का एक संयोजन या एक ही शैली है। क्रोम आपको access_token देगा और फिर यह access_token फायरबेस के बैकएंड पर चेक किया जाएगा।

+0

इस पर प्रतिक्रिया के लिए धन्यवाद! यह थोड़ी देर हो गया है लेकिन मैं इसमें से कुछ कोशिश करूँगा और वापस आऊंगा। :) –