微服务之间的Firebase Auth共享会话/令牌

时间:2019-11-23 01:04:32

标签: firebase express authentication firebase-authentication next.js

我正在使用firebase auth,但在如何管理不同应用程序之间的身份认证方面有些困惑,特别是nextjs(也使用express的主站点)api和react app(是一种仪表板)。在阅读了一些文档之后,我做了什么(但是我不确定是正确的方法)是使用客户端库在主站点上获取idToken:

firebase
  .auth()
  .signInWithEmailAndPassword(email, password)
  .then(() => {
    const currentUser = firebase.auth().currentUser.getIdToken();
    currentUser.then(idToken => {
      return axios.post("/auth/login", { idToken });
    });
  });

并请求nextjs / express创建cookie会话:

firebase
  .auth()
  .createSessionCookie(idToken, { expiresIn })
  .then(
    sessionCookie => {
      res.cookie("session", sessionCookie, {
        maxAge: expiresIn,
        httpOnly: true
      });
      return res.end(JSON.stringify({ status: "success" }));
    },
    error => res.status(401).send(error)
  );

然后,当我需要向api发送请求时,我将传递保存在cookie中的idtoken,并在中间件中验证令牌

const userInfo = await firebase.auth().verifySessionCookie(authToken);

我还没有实现react应用,但是我认为我将仅使用客户端库来完成所有工作。...我的主要怀疑是nextjs / express和api之间的身份验证,不知道sessioncookie中的us是否合适...我是否只需要发送tokenId而不是session cookie?你有什么建议吗?

0 个答案:

没有答案