Firebase Admin SDK 可让您将自己的服务器与 Firebase Authentication 集成。您可以使用 Firebase Admin SDK 来管理您的用户或身份验证令牌。您可能出于以下原因而采用这种做法:
用户管理
为了管理 Firebase 用户,您需要访问 Firebase 控制台,这有时并不方便。管理员用户管理 API 可让您以编程方式访问并管理这些用户。此外,您还可以利用它来执行 Firebase 控制台无法执行的一些操作,例如检索用户的完整数据以及更改用户的密码、电子邮件地址或电话号码。
自定义身份验证
您可以将外部的用户系统与 Firebase 集成。例如,您可能已经拥有一个用户数据库,或者可能想要集成 Firebase Authentication 不提供原生支持的第三方身份提供方。
如需执行此操作,您可以使用能够标识用户的任意声明来创建自定义令牌。接下来,用户便可通过这些自定义令牌在客户端应用上登录 Firebase Authentication 服务,并获得令牌的声明所描述的身份。然后,该身份会被用于访问其他 Firebase 服务,例如 Cloud Storage。
身份验证
Firebase Authentication 主要用于识别应用的用户,以限制对其他服务(如 Cloud Storage)的访问。您还可以使用这项服务识别您自己服务器上的此类用户。这样,您可以代表使用 Firebase Authentication 登录的用户安全地执行服务器端逻辑。
如需执行此操作,您可以从使用 Firebase Authentication 登录的客户端应用中检索 ID 令牌,并将该令牌包含在发送至您的服务器的请求中。随后,您的服务器会验证此 ID 令牌,并提取用于识别用户的声明(包括用户的 uid
,用户登录时使用的身份提供方等)。这样,您的服务器就能使用这些身份信息代表用户执行操作了。
Firebase Admin SDK 可让您通过管理用户、生成自定义令牌以及验证 ID 令牌来完成身份验证任务。
自定义用户声明
在某些情况下,您可能需要针对已使用某个受支持的 Firebase 身份验证提供方(例如电子邮件地址/密码、Google、Facebook、电话等)登录的用户实施精确的访问权限控制。为此,您可以结合使用自定义用户声明和应用安全规则。例如,您可以使用自定义声明,针对那些使用 Firebase Authentication 的电子邮件地址/密码提供方服务登录的用户定义访问权限控制。
用户管理
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 令牌验证流程的详细信息以及示例代码。
自定义用户声明
Firebase Admin SDK 支持为用户账号指定自定义属性。通过自定义用户声明,您可以授予用户不同的访问权限级别(角色),这些访问权限级别将通过应用的安全规则强制执行。
通过 Firebase Admin SDK 修改用户的自定义声明后,修改后的自定义声明会通过 ID 令牌传播给在客户端上经过身份验证的用户。ID 令牌是用于传递这些自定义声明的可信机制,所有经过身份验证的访问都必须验证 ID 令牌,然后才能处理关联的请求。