如何使用firebase作为Rest API身份验证机制(使用客户端SDK)?

如何使用firebase作为Rest API身份验证机制(使用客户端SDK)?,firebase,oauth-2.0,firebase-authentication,Firebase,Oauth 2.0,Firebase Authentication,我只是在做一个RESTAPI服务(在幕后,使用Firebase DB作为我的DB)。为了验证我的API,我想我可以使用Firebase Auth 创建/注册或/登录-->返回令牌 使用此令牌对所有其他API进行身份验证 但是,我无法找到如何使用firebase实现这一点。大多数解决方案都讨论CustomTokens和IDtokens,并需要“客户端Firebase SDK”。这意味着,在客户端,我直接向firebase进行身份验证,这是我不想做的。 我缺少什么?您可以使用admin sdk生

我只是在做一个RESTAPI服务(在幕后,使用Firebase DB作为我的DB)。为了验证我的API,我想我可以使用Firebase Auth

  • 创建/注册或/登录-->返回令牌
  • 使用此令牌对所有其他API进行身份验证
但是,我无法找到如何使用firebase实现这一点。大多数解决方案都讨论CustomTokens和IDtokens,并需要“客户端Firebase SDK”。这意味着,在客户端,我直接向firebase进行身份验证,这是我不想做的。
我缺少什么?

您可以使用admin sdk生成ID令牌以返回到客户端,或者通过您想要的方式在内部使用它们。只需确保您已经验证和验证了您的用户之前,因为这个过程只需要用户UID生成一个新的

constuid='someuid';
管理
.auth()
.createCustomToken(uid)
。然后((customToken)=>{
//将令牌发送回客户端
})
.catch((错误)=>{
log('创建自定义令牌时出错:',错误);
});

但是在这里,客户端必须使用ClientSDK并在客户端验证customToken。我的想法是客户端的抽象Firebase。客户端不需要它。它仅用于验证进一步的请求-如果您需要解码诸如自定义声明和其他用户数据之类的信息,您可以创建一个API在服务器端对其进行解码(有风险),或者尝试使用JWT解码器在客户端对其进行解码,但此令牌的使用寿命很短。这与authToken不同,该token将在1小时内过期。因此,对于每一次会话,我都必须再次登录客户端并重新获取一个新的CustomToken,对吗?正确,否则,如果密钥泄露,您的客户端可能会被欺骗,我听说您可以将其设置为永不过期,但出于几个原因,我不建议这样做。您所需要做的就是每1小时请求并重新验证用户,这对于大多数RESTAPI服务来说是相当标准的。