获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Admin Auth API 简介

Firebase Admin SDK 允许您将自己的服务器与 Firebase 身份验证集成。您可以使用 Firebase Admin SDK 来管理您的用户或管理身份验证令牌。您想要这样做的原因有很多:

用户管理

必须访问 Firebase 控制台来管理您的 Firebase 用户并不总是很方便。管理员用户管理 API 为这些相同的用户提供编程访问。它甚至允许您执行 Firebase 控制台无法执行的操作,例如检索用户的完整数据以及更改用户的密码、电子邮件地址或电话号码。

自定义身份验证

您可以将外部用户系统与 Firebase 集成。例如,您可能已经有一个预先存在的用户数据库,或者您可能希望与 Firebase 身份验证本身不支持的第三方身份提供商集成。

为此,您可以使用标识用户的任意声明创建自定义令牌。然后,这些自定义令牌可用于登录客户端应用程序上的 Firebase 身份验证服务,并采用令牌声明所描述的身份。然后,在访问其他 Firebase 服务(例如 Cloud Storage)时,将使用此身份。

身份验证

Firebase 身份验证主要用于识别您应用的用户,以限制对其他服务(如 Cloud Storage)的访问。您还可以使用该服务在您自己的服务器上识别这些用户。这使您可以代表已使用 Firebase 身份验证登录的用户安全地执行服务器端逻辑。

为此,您可以从使用 Firebase 身份验证登录的客户端应用程序中检索 ID 令牌,并将该令牌包含在对您的服务器的请求中。然后,您的服务器会验证 ID 令牌并提取标识用户的声明(包括他们的uid 、他们登录时使用的身份提供者等)。然后,您的服务器可以使用此身份信息代表用户执行操作。

Firebase Admin SDK 通过使您能够管理用户、生成自定义令牌和验证 ID 令牌,提供了完成上述身份验证任务的方法。

自定义用户声明

在某些情况下,您可能希望对已使用受支持的 Firebase 身份验证提供程序之一(例如电子邮件/密码、Google、Facebook、电话等)登录的用户实施细粒度访问控制。自定义用户声明和应用程序安全性的组合规则提供了这种能力。例如,使用 Firebase 身份验证电子邮件和密码提供程序登录的用户可以使用自定义声明定义访问控制。

用户管理

Firebase Admin SDK 提供了一个 API,用于管理具有提升权限的 Firebase 用户。管理员用户管理 API 使您能够以编程方式检索、创建、更新和删除用户,而无需用户的现有凭据,也无需担心客户端速率限制。

管理用户

自定义令牌创建

创建自定义令牌的主要用途是允许用户针对外部或遗留身份验证机制进行身份验证。这可能是您控制的,例如您的 LDAP 服务器,或 Firebase 本身不支持的第三方 OAuth 提供程序,例如 Instagram 或 LinkedIn。

Firebase Admin SDK 具有用于创建自定义令牌的内置方法。您还可以使用第三方 JWT 库以任何语言以编程方式创建自定义令牌。

您的服务器应创建一个具有唯一标识符 ( uid ) 的自定义令牌,并将该令牌传递给客户端应用程序,客户端应用程序将使用它登录 Firebase。有关代码示例和有关自定义令牌创建过程的更多详细信息,请参阅创建自定义令牌。

创建自定义令牌

ID令牌验证

如果您的 Firebase 客户端应用程序与您的后端服务器通信,您可能需要识别服务器上当前登录的用户,以便您可以代表他们执行服务器端逻辑。您可以使用 ID 令牌安全地执行此操作,该令牌由 Firebase 在用户登录 Firebase 应用程序时创建。 ID 令牌符合OpenID Connect 规范并包含用于识别用户的数据,以及其他一些配置文件和身份验证相关信息。您可以从自己的后端发送、验证和检查这些令牌。这使您可以安全地识别当前登录的用户并授权他们进入您自己的后端资源。

Firebase Admin SDK 具有用于验证 ID 令牌的内置方法。您还可以使用第三方 JWT 库以编程方式验证任何语言的 ID 令牌。有关 ID 令牌验证过程的更多详细信息和代码示例,请参阅验证 ID 令牌

验证 ID 令牌

自定义用户声明

Firebase Admin SDK 可让您在用户帐户上设置自定义属性。使用自定义用户声明,您可以为用户提供不同级别的访问权限(角色),然后在应用程序的安全规则中强制执行。

通过 Firebase Admin SDK 在用户上修改自定义声明后,它们会通过其 ID 令牌传播到客户端上经过身份验证的用户。 ID 令牌是传递这些自定义声明的受信任机制,所有经过身份验证的访问都必须在处理相关请求之前验证 ID 令牌。

使用自定义声明控制访问