服务器和客户端身份验证:如何从服务器创建Firebase身份验证令牌并将其发送到Web客户端?

时间:2019-07-23 14:54:13

标签: firebase firebase-authentication google-cloud-functions

我正在尝试使用来自服务器的电子邮件和密码,使用Firebase并将用户生成的令牌发送给客户端来对我的用户进行身份验证。

在服务器端,我正在使用nodejs firebase函数,并且令牌是使用 firebase rest auth API verifyPassword创建的端点,然后我使用生成的令牌并将其发送给客户端。

我正在客户端 firebase.auth()。signInWithCustomToken(token)中尝试登录,但收到的无效令牌响应。< / p>

我想做的是允许对服务器,服务器和WebClient双方的用户进行身份验证

这有可能还是有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

您可以按照Firebase Auth Documentation中的说明将客户端idToken发送到服务器,并且可以在服务器上使用firebase admin创建Session-Cookie

admin.auth().createSessionCookie(idToken, {expiresIn})
    .then((sessionCookie) => ...

我有一个项目,当客户端的Auth-State更改时,我将idToken发送到服务器:

firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        // User is signed in.
        user.getIdToken().then(idToken => {
          sendTokenToServer(idToken,csrfToken);
        });
      } else {
        clearCookiesOnServer(...);
      }
    });