在项目和租户之间迁移用户
本文档介绍如何将用户从现有 Identity Platform 项目迁移到其他 Identity Platform 项目。此外,还介绍了如何将用户从非租户项目迁移到租户,或者在租户之间迁移用户。
准备工作
配置服务账号密钥
在迁移用户账号之前,您需要源项目和目标项目的服务账号密钥。服务账号必须至少被授予 IAM Editor 角色 (roles/editor),才能访问源项目中的用户以及经过哈希处理的密码。请参阅 IAM 文档,详细了解如何创建服务账号、授予权限和获取密钥。
下载密钥后,您可以使用它们来实例化两个 auth 实例。
var admin = require('firebase-admin');
var sourceApp = admin.initializeApp({
credential: admin.credential.cert('source-project-service-account.json'),
}, 'source-app');
var targetApp = admin.initializeApp({
credential: admin.credential.cert('target-project-service-account.json'),
}, 'target-app');
var authFrom = sourceApp.auth();
var authTo = targetApp.auth();
如果您的访问权限控制政策不允许在单个工作负载中使用多个服务账号,您仍然可以使用本文中的示例代码,但需要先从源项目中把所有用户下载到存储系统,然后在另一个工作负载中将它们上传到目标项目。
在项目之间迁移用户
要迁移用户,请调用 admin.auth().listUsers 方法,该方法会返回分页的用户列表。然后,您可以调用 admin.auth().importUsers() 将它们上传到目标项目。
一次最多可下载或上传 1000 位用户。
对于密码用户,您需要提供哈希配置以对密码进行哈希处理。如需检索哈希配置,您可以前往Google Cloud 控制台中的 Identity Platform Users 页面,然后点击导入用户。
以下示例展示了如何迁移用户:
function migrateUsers(userImportOptions, nextPageToken) {
var pageToken;
authFrom.listUsers(1000, nextPageToken)
.then(function(listUsersResult) {
var users = [];
listUsersResult.users.forEach(function(user) {
var