gpt4 book ai didi

javascript - 火力地堡、Auth0、 react 。自定义 token 格式不正确。请检查文档

转载 作者:行者123 更新时间:2023-11-30 11:19:55 25 4
gpt4 key购买 nike

我正在尝试将 Auth0 JWT token 与 Firebase 一起使用,但运气不佳。

将 token 与 Firebase 结合使用时:

const token = localStorage.getItem('id_token'); //from auth0
firebase.auth().signInWithCustomToken(token).catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;

console.log(error);
console.log(token);
});

我得到的是:

“The custom token format is incorrect. Please check the documentation.”

据我在 Firebase 的文档中看到的,Auth0 和 Firebase token 是不同的: https://firebase.google.com/docs/auth/admin/create-custom-tokens

显然,Firebase 需要一个 uid,它不存在于由 Auth0 生成的 uid 中,而 uid 等效于 sub

我试图创建一个规则来修改 Auth0 的 token 以包含一个名为 uid 的子副本以查看这是否是一个解决方案,但它不起作用,没有任何内容被添加到 token 的主体中。

function (user, context, callback) {
context.idToken.uid = user.user_id;
callback(null, user, context);
}

有什么想法/建议吗?

附言:

1.我检查了jwt.io中的token,是有效的。2.我尝试将过期时间减少到 5 分钟以内,因为我看到有人认为这是一个可能的解决方案,但事实并非如此。

最佳答案

您不能将 Auth0 token 直接用于 Firebase。您需要创建一个使用 firebase-admin SDK 的服务器端 API,以使用 Auth0 数据创建 Firebase 自定义 token 。

有一个 full tutorial在 OAuth 网站上。查看 API 路由 部分,了解如何在给定 OAuth token 的情况下使用 firebaseAdmin.auth().createCustomToken:

// Auth0 athentication middleware
const jwtCheck = jwt({
secret: jwks.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://${config.AUTH0_DOMAIN}/.well-known/jwks.json`
}),
audience: config.AUTH0_API_AUDIENCE,
issuer: `https://${config.AUTH0_DOMAIN}/`,
algorithm: 'RS256'
});

// Initialize Firebase Admin with service account
const serviceAccount = require(config.FIREBASE_KEY);
firebaseAdmin.initializeApp({
credential: firebaseAdmin.credential.cert(serviceAccount),
databaseURL: config.FIREBASE_DB
});

// GET object containing Firebase custom token
app.get('/auth/firebase', jwtCheck, (req, res) => {
// Create UID from authenticated Auth0 user
const uid = req.user.sub;
// Mint token using Firebase Admin SDK
firebaseAdmin.auth().createCustomToken(uid)
.then(customToken =>
// Response must be an object or Firebase errors
res.json({firebaseToken: customToken})
)
.catch(err =>
res.status(500).send({
message: 'Something went wrong acquiring a Firebase token.',
error: err
})
);
});

关于javascript - 火力地堡、Auth0、 react 。自定义 token 格式不正确。请检查文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50198015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com