Phe*_*dg1 6 oauth-2.0 firebase-authentication
在Firebase项目中为每个电子邮件地址启用一个帐户进行Firebase 身份验证时,似乎有一些适用于身份验证过程的附加规则。不同的提供者似乎分为两类,受信任的和不受信任的提供者。如果用户在任何时候通过受信任的提供商登录,则该用户之前登录的所有不受信任的提供商都会从帐户中删除。此外,永远不会允许用户再次登录不受信任的提供商。提供商是否可信似乎取决于由提供商创建的新帐户是否仅通过向创建新帐户的地址发送验证电子邮件来验证该帐户。
我似乎找不到关于哪些提供商可信和不可信的完整列表。通过将解决方案实施到我的应用程序中,我发现了以下内容:
值得信赖的供应商:
不受信任的供应商:
这种理解是否正确?我在哪里可以找到其他提供商的细分?我的应用程序是在Unity 中构建的,因此我将仅限于Firebase在 Unity 中支持的提供程序。为什么Microsoft在不同情况下既是受信任的提供商,又是不受信任的提供商?我真的可以在这里使用一些帮助。
我的应用程序适用于iOS和Android。我想专门使用Apple和Google登录,但iOS < 13上的用户无法使用Apple登录。这些iOS设备似乎约占西方国家所有设备的六分之一。我尝试实现Google和Microsoft登录以更好地覆盖这些用户,但后来我遇到了Microsoft的复杂问题登录受信任和不受信任。我不想通过手动帐户合并使我的应用程序过于复杂,但我不知道完全信任哪些其他提供商。保持简单愚蠢的最佳解决方案是什么?
值得信赖的供应商:
不受信任的提供商使用并非由提供商发出的电子邮件:
Firebase 身份验证是安全的,不会考虑验证某些提供商,因为在某些情况下,电子邮件会验证一次但不会持续验证(在某些情况下,IdP 允许您在验证后更改电子邮件,而无需重新验证)。
解释未经验证帐户的敏感性的最佳方法如下: 1. 攻击者使用他们不拥有的电子邮件victim@example.com 向未经验证的提供商(密码)注册 2. 电子邮件所有者使用victim@example.com 注册使用经过验证的提供商 Google。
如果帐户未重置且密码未链接,则攻击者仍可访问不属于他们的帐户。要解决此问题,用户必须在第 2 步之前验证电子邮件(通过发送电子邮件验证)。这样做,使用 Google 登录将自动合并帐户并保留密码。
这就是为什么在某些情况下,您会收到错误消息:
以下是各种情况下的行为摘要:
如果您不同意 Firebase 身份验证并希望将 Facebook 视为经过验证的提供商,您始终可以在 Facebook 登录后使用Admin SDK将电子邮件设置为已验证。
希望这有助于澄清这种行为。
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |