2013-02-17 111 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

相关问题