【问题标题】:determine if user in auth has firebase admin role确定 auth 中的用户是否具有 firebase 管理员角色
【发布时间】:2019-03-31 18:01:04
【问题描述】:

上下文: 在 Firebase 设置中,有一个权限选项卡。这显示了与对 firebase 项目和控制台具有管理员访问权限的帐户关联的用户/电子邮件。

我可以发誓我曾经看过一个文档,描述了一种方法或某种方式来检查 firebase auth 中的用户帐户是否也是 firebase 项目的管理员。

我真的不知道它是在梦中(是的,我梦到了代码)还是我真的看到了它。我经常工作到深夜,在电脑前睡着了。

问题: 有没有办法判断用户是否也是 Firebase 应用的管理员? IE 用户电子邮件与 Firebase 的 IAM/访问管理部分中列为“所有者”角色的电子邮件匹配?

我目前正在为我的应用程序编写一个管理面板,所以这样的功能会非常有用。

如果不存在这样的事情,任何人都可以提出一种替代方法来管理和授权能够登录到管理仪表板以控制应用程序的用户吗?我已经了解自定义声明,因此如果没有建议更好的解决方案,我将使用它们。

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

    好吧,仅通过您的应用程序使用FirebaseAuth,我认为您不能(据我所知)。但您可以轻松实施 Admin SDK 来管理您的 Custom Claims。基本上,您可以使用 Admin SDK 并找出您想要访问的“角色”。

    引用 Firebase

    自定义声明可能包含敏感数据,因此它们应该只 由 Firebase Admin SDK 从特权服务器环境设置。

    只能通过用户的 ID 令牌检索自定义声明。 可能需要访问这些声明以修改基于客户端的 UI 关于用户的角色或访问级别。但是,后端访问应该 验证后始终通过 ID 令牌强制执行,并且 解析其声明。自定义声明不应直接发送到 后端,因为它们不能在令牌之外被信任。

    一旦最新的声明传播到用户的 ID 令牌,您就可以 通过检索 ID 令牌来获取它们。

    因此,您只需要在您的应用(客户端)上实现FirebaseAuth,但需要使用服务器的额外实现

    请查看Firebase use cases,它们可能会满足您的需求,您可以选择对您来说“更容易”的那个。

    【讨论】:

    • 谢谢。你是对的 - 我正在编写一个可以设置自定义声明的云函数,所以我可以在前端阅读它。我对它们很熟悉,这是一个非常棒的工具。
    【解决方案2】:

    事实证明,它一开始就不能做我想做的事,因为它只在某些触发器上可用。

    这里是:context.authType

    https://firebase.google.com/docs/reference/functions/functions.EventContext#.authType

    用户的权限级别。有效值为:

    ADMIN 开发人员用户或通过服务帐户进行身份验证的用户。用户 已知用户。 UNAUTHENTICATED 未经身份验证的操作 null 对于事件 不提供用户信息的类型(除了 Realtime 数据库)。

    尽管如果我们能够获得有关可调用函数和 firebase 触发器的这些信息会很棒,因为这将有助于进一步保护对管理功能具有高级访问权限的客户服务或开发人员的托管后端管理应用程序。这个变量似乎在可调用函数上不可用,但在 newUser 触发器上可用 - 这很奇怪,因为无论如何用户注册都可以通过身份验证?

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      相关资源
      最近更新 更多