REST api 使用 firebase admin sdk 的身份验证

REST api authentication using firebase admin sdk

我有一个 REST api,身份验证是使用 jwt 令牌完成的。为了使 api 更安全(用户和身份验证机制),我想使用 firebase 身份验证。我想知道我们能否使用 firebase 作为我的 REST API 的身份验证服务器。

我的理解是客户端应用程序会将用户名和密码发送到 firebase 服务器,他们会提供一个令牌。使用该令牌客户端应用程序将向我们的服务器发送 api 调用。我需要在我的服务器中集成 firebase admin SDK 并使用 admin SDK 验证令牌以从我的数据库中获取数据。

不对请指正

此外,我担心如何管理刷新令牌以保持我的应用程序处于登录状态。

请帮助我以正确的方式集成它,我正在使用 nodejs/expressjs 创建 API。

can we use firebase as a authentication server for my REST APIs.

是的,这是他们提供的服务之一:https://firebase.google.com/products/auth/

My understanding is that the client app will send the username and password to the firebase server and they will provide a token.

正确。通常的 Firebase 身份验证完全在客户端完成。

但是,如果您需要特定的身份验证机制,例如 LDAP/AD 或某种其他形式的企业恶作剧,那么您将需要创建自己的令牌,客户端将使用该令牌进行身份验证:https://firebase.google.com/docs/auth/admin/create-custom-tokens

Using that token client app will send an api call to our server.

正确。一旦客户端成功登录并检索到他们的 ID 令牌,您在服务器端需要验证 ID 令牌:https://firebase.google.com/docs/auth/admin/verify-id-tokens 通过中间件。

Also, i have a concern that how to manage refresh tokens to keep my app logged in.

只要客户端使用适当的方法检索 ID 令牌,您就不必担心这一点。例如,在 Web 端,客户端会调用:https://firebase.google.com/docs/reference/js/firebase.User#getIdToken 其中声明(强调我的):

Returns the current token if it has not expired, otherwise this will refresh the token and return a new one.

如您所见,客户端 Firebase SDK 会为您处理一切。您无需在服务器端跟踪 ID 令牌、刷新令牌或任何其他内容。您需要做的就是验证令牌,仅此而已。

有关服务器端验证的更多详细信息,请参阅我之前的回答: