【问题标题】:Authenticate a user from via a widget using Firebase Auth使用 Firebase Auth 通过小部件对用户进行身份验证
【发布时间】:2021-02-15 09:10:54
【问题描述】:

上下文

我目前正在开发一个可嵌入的小部件,类似于对讲机或 Hotjar,并且有对用户进行身份验证的需要。到目前为止,我逃脱了 使用 Firebase 身份验证使用无密码身份验证,但用户抱怨说 这是一个高摩擦的过程,他们宁愿根本不这样做。理想 身份验证解决方案是让用户使用他们的 Google 或 Facebook 帐户并通过 OAuth2 进行身份验证。

问题

Firebase 身份验证限制通过第 3 方身份验证提供程序进行身份验证,如果 用户通过身份验证的域未在授权域中列入白名单 列表。因此,如果用户将代码放在 abc.com 中,并尝试通过 Google 进行身份验证 firebase 拒绝它,因为 abc.com 不在白名单中。白名单 每个客户的领域都是非正统的。我觉得我接近它的方式 是错误的,因为我无法正确地建立一个心理模型来说明这将如何 锻炼。从技术上讲,cookie、会话等毫无意义。

问题

我将如何提供让用户通过 3rd 进行身份验证的功能 派对身份验证提供者?这在技术上是否可行?

可能的解决方案

  • 在主应用程序中以动态路径(用户所在的网站)托管小部件 将获取小部件的代码)并将此路由呈现为 iframe 客户的网站。 (例如:/widgets/{widgetID} 会有小部件)。我不 真的想这样做,因为 iframe 是一个严重的痛苦,但这听起来像 最可行的。

我想了解更多/更好的解决方案来解决这种特殊情况。 即使它来自不同的云提供商或不同的 身份验证服务。 目标是通过小部件对用户进行身份验证 最好通过 Google 等第三方身份验证提供商。

编辑:这是我目前收到的错误:

widget.js:2 auth/unauthorized-domain This domain (xyz.com) is not authorized to run this operation. Add it to the OAuth redirect domains list in the Firebase console -> Auth section -> Sign in method tab.

【问题讨论】:

  • AFIK domain whitelist on Firebase Auth 仅影响重定向 URL,而不限制可以访问登录的域。您的同意屏幕是否标记为internal only?如果您的应用程序被标记为内部,则此设置会阻止具有其他域的用户使用 google 登录方法。
  • @JanHernandez 说我已将 abc.com 添加到白名单中,我的小部件位于 xyz.com 中,我尝试使用 xyz.com 中的弹出窗口通过 Google 对用户进行身份验证,然后我发现了一个firebase 错误提示该域未经授权,这是什么原因?
  • 我将收到的错误消息添加到帖子中
  • 您的域xyz.com 是否在Autorized domains 中作为错误消息提及,并且您验证了此guide 中提及的域?这两个步骤都是强制性的,以便在不同的域中使用您的 google 登录方法
  • 通过未在授权域列表中列出的域对用户进行身份验证不是,这就是重点。

标签: javascript firebase google-cloud-platform oauth-2.0 google-authentication


【解决方案1】:

根据您的用例,您需要按照此guide 验证域所有权xyz.com

之后,您需要将xyz.com添加到您的授权域,如错误消息所述。

Add it to the OAuth redirect domains list in the Firebase console -> Auth section -> Sign in method tab.

更多信息请查看guide

无法通过使用未经验证或未经授权的域来启用 Google 登录,这是为了通过将 Firebase/Google 凭据的使用仅限于已配置的域来保护对您的站点/项目的访问。

无法禁用此设置,Google 登录使用Oauth2 作为身份验证框架

【讨论】:

  • 我确立了这一事实并发表了这篇文章,以便找到一种解决方法或解决方案,让我能够使用 Google Auth 以某种方式对用户进行身份验证,就像潜在解决方案部分中的示例一样。跨度>
猜你喜欢
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 2018-12-29
  • 2017-07-03
  • 2020-09-13
  • 1970-01-01
  • 2013-06-30
  • 2015-09-28
相关资源
最近更新 更多