5

如何在 chrome 扩展中使用 Firebase 进行身份验证?我需要在 Forge 中指定允许的域列表。扩展的 Chrome 域只是一个大的类似哈希的字符串。

我确实读过这个:authClient.login 问题

但是 Firebase forge 不接受基于散列的 chrome 扩展域。还有其他方法吗?目前我只是在读取 cookiefirebaseSessionKey以假设我已登录。但这肯定不如让 Firebase 验证此会话密钥那样安全。

4

2 回答 2

8

As Rob points out, authentication cannot work in an environment that does not enforce origin restrictions. The fundamental problem here is that any authentication provider (Facebook, Twitter, Persona, or your own service) cannot issue an identity to a browser - i.e. it is meaningless to use Facebook to login to your browser (or extension).

The F1 add-on for Firefox ran into a similar problem (http://f1.mozillamessaging.com/) - where you would authorize F1 to post on twitter/facebook on your behalf. The extension had a website to along with it, from where you would serve the login page and proceed as you would normally in a web page. You'll need some code to communicate between the web page and your extension, chrome provides the tools necessary.

I would recommend the same approach - create a web page on a real domain (Github pages is awesome for this) to go along with your extension. This means your extension can't work offline, but neither can your login or writing to Firebase!

于 2013-02-19T01:41:03.823 回答
2

这将使用 Google Plus Login Flow 工作,我相信这是唯一允许交叉身份验证的,因此范围是 Google Plus Login。

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

所以这里发生的事情是,您将从您将使用 authwihtoauthtoken 指定 google 作为提供者的请求发送到 firebase 的扩展程序中获取 access_token 以及从 chrome.identity.getAuthToken() 获取的 access_token!

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

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

该验证由火力基地进行。

他们将检查此令牌是否属于与该令牌已发行的应用程序相同的应用程序。

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

他们会在那里为我们做这项检查。如果令牌是发给同一个应用程序的,他们将与谷歌进行验证。

而已。

背景信息。

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

用例

发送带有需要验证的请求的 ID 令牌。例如,如果您需要将数据传递到您的服务器,并且您希望确保特定数据来自特定用户。

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

谷歌有一个如何为 python 执行此操作的教程,位于:

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

所以基本上这里发生的事情是;相反,您在服务器上进行验证,当您将 CLIENT_ID 和 APP_SECRET 输入到 firebase 并启用 Google 身份验证时,firebase 会为您执行此验证。

正确执行此操作的方法是验证向谁发出 client_secret 的组合或相同样式。Chrome 会给你一个 access_token,然后这个 access_token 将在 firebase 的后端进行检查。

于 2015-06-02T20:36:12.683 回答