使用firebase admin sdk进行REST api身份验证

时间:2018-05-29 02:35:30

标签: node.js rest firebase firebase-authentication firebase-admin

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

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

当我错了时请纠正我。

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

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

1 个答案:

答案 0 :(得分:9)

  

我们可以使用firebase作为REST API的身份验证服务器。

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

  

我的理解是客户端应用程序会将用户名和密码发送到firebase服务器,他们将提供令牌。

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

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

  

使用该令牌客户端应用程序将向我们的服务器发送api调用。

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

  

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

只要客户端使用适当的方法来检索ID令牌,您就不必担心。例如,在Web端,客户端将调用:https://firebase.google.com/docs/reference/js/firebase.User#getIdToken表示(强调我的):

  

如果当前令牌尚未过期,则返回当前令牌,否则会刷新令牌并返回新令牌

正如您所看到的,客户端Firebase SDK会为您处理所有事情。服务器端不需要跟踪ID令牌,刷新令牌或其他任何内容。您需要做的就是验证令牌,

有关服务器端验证的详细信息,请参阅我之前的回答:Firebase authentication using NodeJS