我有一个REST api,身份验证是使用jwt令牌完成的。为了使可能的api更安全(用户和身份验证机制),我想使用Firebase身份验证。我想知道我们可以使用Firebase作为我的REST API的身份验证服务器。
我的理解是,客户端应用程序将向Firebase服务器发送用户名和密码,他们将提供一个令牌。使用该令牌客户端应用程序将向我们的服务器发送一个api调用。我需要在我的服务器中集成fire base adminSDK,并使用adminSDK验证令牌以从我的数据库中获取数据。
我错了,请指正。
此外,我担心如何管理刷新令牌以保持我的应用程序登录。
请帮助我以正确的方式集成它,我正在使用nodejs/Expresjs来创建API。
我们可以使用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其中的状态(强调我的):
如果令牌未过期,则返回当前令牌,否则这将刷新令牌并返回一个新令牌。
如您所见,客户端FirebaseSDK为您处理所有事情。您无需在服务器端跟踪ID令牌、刷新令牌或任何事情。您需要做的就是验证令牌,仅此而已。
有关服务器端验证的更多详细信息,请参阅我之前的回答:使用NodeJS进行Firebase身份验证