Google chrome extension Chrome扩展后台页面中的Firebase身份验证

Google chrome extension Chrome扩展后台页面中的Firebase身份验证,google-chrome-extension,firebase,Google Chrome Extension,Firebase,如何在chrome扩展中通过Firebase认证?我需要在Forge中指定允许的域列表。扩展的Chrome域只是一个类似散列的大字符串 我确实读过: 但是Firebase forge不接受基于哈希的chrome扩展域。还有别的办法吗?目前我正在读取cookiefirebaseSessionKey,假设我已登录。但这肯定不如让Firebase验证此会话密钥那样安全。正如Rob指出的那样,身份验证在不实施源限制的环境中无法工作。这里的根本问题是,任何身份验证提供商(Facebook、Twitter、

如何在chrome扩展中通过Firebase认证?我需要在Forge中指定允许的域列表。扩展的Chrome域只是一个类似散列的大字符串

我确实读过:


但是Firebase forge不接受基于哈希的chrome扩展域。还有别的办法吗?目前我正在读取cookie
firebaseSessionKey
,假设我已登录。但这肯定不如让Firebase验证此会话密钥那样安全。

正如Rob指出的那样,身份验证在不实施源限制的环境中无法工作。这里的根本问题是,任何身份验证提供商(Facebook、Twitter、Persona或您自己的服务)都不能向浏览器颁发身份-即,使用Facebook登录您的浏览器(或扩展)是毫无意义的

Firefox的F1插件遇到了类似的问题()——您将授权F1代表您在twitter/facebook上发布。该扩展有一个网站,您可以从中访问登录页面,并像通常在网页中一样继续操作。您需要一些代码来在网页和扩展之间进行通信,chrome提供了必要的工具


我建议使用相同的方法—在真实域上创建一个网页(Github页面在这方面非常棒),以便与扩展一起使用。这意味着您的扩展无法脱机工作,但您的登录或写入Firebase也无法脱机工作

这将使用Google Plus登录流工作,我相信这是唯一一个允许交叉身份验证的流,所以范围是Google Plus登录

“www[dot]googleapis[dot]com/auth/plus.login”

因此,这里发生的事情是,您将从扩展中获得访问令牌,您将使用authwihtoauttoken(指定google为提供者)和从chrome.identity.getAuthToken()获取的访问令牌,随请求一起发送到firebase

现在事实上,这个访问令牌可以由任何其他应用程序发布,所以我们需要确保它是有效的,并且已经为我们的应用程序发布了,基本上我们需要知道中间没有人试图访问我们的数据库。 firebase正在进行此验证

他们将检查此令牌是否属于已向其颁发令牌的同一应用程序

因此,您需要在GoogleDevelopers控制台中的同一应用程序下为扩展创建另一组凭据。我们将基本上做同样的事情,就像我们要为我们的网页做一样,但我们将在firebase的google oAuth的安全部分插入这组新的凭据

他们会在那里帮我们检查。他们将与谷歌核实代币是否发放给同一个应用程序

就这样

背景资料

用例

将ID令牌与需要进行身份验证的请求一起发送。例如,如果需要将数据传递到服务器,并且希望确保特定数据来自特定用户

何时验证访问 所有代币都需要在您的服务器上进行验证,除非您知道它们直接来自谷歌。必须验证您从客户端应用程序收到的任何令牌

Google有一个关于如何为python执行此操作的教程,可在以下网址找到:

“github[dot]com/googleplus/gplus verifytoken python”

所以这里发生的事情基本上是;当您在firebase中输入客户端ID和应用程序机密并启用Google身份验证时,firebase将代替您在服务器上进行验证


正确执行此操作的方法是使用组合或相同的方式来验证向谁颁发了客户_机密。Chrome会给你一个访问令牌,然后会在firebase的后端检查这个访问令牌。

firebase的工程师在这里。由于Chrome扩展允许对HTTP请求进行更广泛的修改,因此允许您在此处配置不同的引用者可能不是安全的解决方案。如果您有机会,我想了解更多关于您的用例以及您希望在扩展中使用什么类型的身份验证的信息-请随时发送电子邮件至rob@firebase.com.Will写信给你们。我确实有一长张我在做这个的时候做的笔记。目前,该系统有3个不同平台的代码,将扩展到大约12个平台。我想你们可能会觉得这很有趣。我有一个带有仪表板的网站,人们可以通过一些直接链接到firebase的设置登录和维护帐户(因此,即使这些设置也反映了所有地方!)。这就是我计划最终要做的,以确保chrome扩展至少能够在某种授权环境中工作。正如我在给Rob的评论中所写的,我希望它能在不同的平台上工作。@Anant,网页必须传递给扩展什么类型的信息?登录用户变量后,用户对象已存在,但即使我们将其传递给扩展Firebase,它仍会认为用户未登录到Hey@abinop,您需要将Firebase身份验证令牌从网页传递回扩展。您可以通过user.firebaseAuthToken访问它,然后使用firebaseRef.auth(token)作为该用户登录。@Anant我正在尝试完成此操作。有关于如何与extension对话的教程或示例吗。我刚刚开始扩展…谢谢你的回复!已经有一段时间了,但我会尝试一下,然后回来。:)