使用Identity Aware Proxy登录后生成用于调用API的JWT

问题描述 投票:0回答:1

我有 2 个应用程序部署到 Cloud Run,第一个是 Nginx,提供 React 应用程序,另一个是 FastAPI API,两个负载均衡器上都设置了身份识别代理来检查 Identity Platform。

我们有一个运行 gcr.io/gcip-iap/authui 的身份验证 URL,据我所知,它是 iap-gcip-web-toolkit 项目的

this bit

我可以生成一个有效的 JWT 以在后端 LB 上使用

signInWithEmailAndPassword(auth, "[email protected]", "SomePassword")
  .then((userCredential) => {
    const user = userCredential.user;
    user.getIdToken().then((token) => {
      console.log(token)
    })
  })

但这回避了我已经通过身份验证并再次登录的事实。

鉴于我已经登录,如何才能获得用户(以便我可以拨打

getIdToken
)? (我在 cookie 中看到
GCP_IAP_UID
__Host-GCP_IAP_AUTH_TOKEN_XXXXXXXXXX
,并且可以加载 React 应用程序的 JS/HTML)

reactjs google-cloud-platform firebase-authentication google-iap identity-aware-proxy
1个回答
0
投票

如果您已经通过身份验证,则无需再次调用signInWithEmailAndPassword。 Firebase 应该自动为您管理会话。您可以使用 auth.currentUser 检查用户是否登录,然后直接调用 getIdToken()

const auth = getAuth();
const user = auth.currentUser;

if (user) {
  user.getIdToken().then((token) => {
    console.log(token); // Use this token for your backend requests
  });
} else {
  console.log("User not authenticated");
}

如果 auth.currentUser 为 null,请确保 Firebase 已正确初始化并检查会话是否正在持久化。希望这对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.