我有 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)
如果您已经通过身份验证,则无需再次调用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 已正确初始化并检查会话是否正在持久化。希望这对你有用。