将 Firebase Google OAuth 身份验证限制为特定用户

Posted

技术标签:

【中文标题】将 Firebase Google OAuth 身份验证限制为特定用户【英文标题】:Limit Firebase Google OAuth Authentication to specific users 【发布时间】:2015-04-09 21:48:48 【问题描述】:

我正在使用 Firebase 为我的网站处理我的 Google OAuth 登录。有谁知道如何限制有权访问该应用程序的用户?例如,我只希望 x@gmail.com、y@gmail.com 和 z@gmail.com 能够通过 google 成功登录到我的应用程序。

我不确定这是 Firebase 还是 Google 的问题,但我们将不胜感激。

【问题讨论】:

我不知道我是否错了,但是是否可以在您的数据库上创建 allowed_email_list 并检查输入的电子邮件是否存在,然后只允许登录。 【参考方案1】:

Firebase 的身份验证仅处理:通过您启用的任何机制对用户进行身份验证。这些用户是否有权访问您的数据称为授权,并通过 Firebase 的安全规则进行处理。

所以:

身份验证允许用户通过您的应用程序识别他/她自己。请参阅Firebase's documentation on authentication(适用于 javascript/Web,但它适用于所有受支持的平台)。 授权将根据特定用户的身份验证限制对您的数据的读/写访问。见Firebase's documentation on its security rules。

将您的数据的访问权限限制为特定的电子邮件地址当然是可能的。我建议您阅读Firebase's documentation on the its security rules 并尝试在此基础上使其工作。如果您有任何问题,请发布您尝试过的内容,我们将能够为您提供更好的帮助。

【讨论】:

【参考方案2】:

这些规则将允许任何人登录,但只有列出的电子邮件地址可以读取或写入数据:


  "rules": 
    ".read":  "auth.email == 'x@gmail.com' || 
               auth.email == 'y@gmail.com' || 
               auth.email == 'z@gmail.com'",

    ".write": "auth.email == 'x@gmail.com' || 
               auth.email == 'y@gmail.com' || 
               auth.email == 'z@gmail.com'"
  

【讨论】:

酷,但想完全阻止登录。换句话说,他们可以通过谷歌身份验证,但它说你在这个页面上没有被授权,或者其他什么。那会以某种方式使用 .validate 吗?否则,似乎人们可以登录,但他们不能读/写,这没关系,但我宁愿他们根本不登录。 @CodeFinity 参见FrankVanPuffelen's post 关于身份验证与授权之间的区别,Firebase 处理前者

以上是关于将 Firebase Google OAuth 身份验证限制为特定用户的主要内容,如果未能解决你的问题,请参考以下文章

Firebase |从Google oAuth中检索高清参数

如何使用Firebase接入Google登录?

无法使用cordova在android上获得firebase oauth

在 React 中使用 Firebase 进行 Google 登录以进行 chrome 扩展

未找到访问令牌受众中的 OAuth2 客户端 ID

如何使用 JWT for Google firebase 生成身份验证令牌?