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

Ano*_*P R 1 rest node.js firebase firebase-authentication firebase-admin

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

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

当我错的时候请纠正我.

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

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

Fra*_*teo 11

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

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

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

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

但是,如果您需要特定的身份验证机制,例如LDAP/AD或其他形式的企业恶作剧,那么您需要创建自己的令牌,客户端将使用这些令牌进行身份验证:https://firebase.google.com/文档/认证/管理/创建定制的令牌

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

正确.客户端成功登录并检索其ID令牌后,您在服务器端需要验证ID令牌:https://firebase.google.com/docs/auth/admin/verify-id-tokens via middleware.

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

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

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

如您所见,客户端Firebase SDK可以为您处理所有事情.服务器端不需要跟踪ID令牌,刷新令牌或其他任何内容.您需要做的就是验证令牌,就是这样.

有关服务器端验证的更多详细信息,请参阅我之前的答案:使用NodeJS进行Firebase身份验证