使用者遷移
Logto 支援從其他平台手動遷移現有使用者,本指南將向你展示如何透過 Management API 匯入現有使用者,並討論遷移前應考慮的事項。
使用者結構
在開始之前,讓我們先看看 Logto 中的 使用者結構。使用者結構有三個部分需要注意:
- 基本資料:來自使用者檔案的基本資訊,你可以將現有使用者檔案中的資料與之匹配。
- 自訂資料:儲存額外的使用者資訊,你可以用來儲存無法匹配基本資料的檔案。
- 社交身分:儲存從社交登入獲取的使用者資訊。
你可以創建一個映射,將現有使用者檔案中的資訊匹配到 基本資料 和 自訂資料。對於社交登入,你需要額外的步驟來匯入社交身分,請參閱 連結社交身分到使用者 的 API。
密碼雜湊
Logto 使用 Argon2 來雜湊使用者的密碼,並支援其他演算法如 MD5
、SHA1
、SHA256
和 Bcrypt
以方便遷移。這些演算法被認為是不安全的,對應的密碼雜湊將在使用者首次成功登入時遷移到 Argon2。
如果你需要支援特定的雜湊演算法,請告訴我們。
遷移步驟
-
準備使用者資料 你應該先從現有平台匯出使用者資料,然後將使用者資訊映射到 Logto 的使用者結構。我們建議你將映射後的資料準備為 JSON 格式。以下是使用者資料的範例:
[
{
"username": "user1",
"passwordDigest": "password-encrypted",
"passwordAlgorithm": "SHA256"
},
{
"username": "user2",
"passwordDigest": "password-encrypted",
"passwordAlgorithm": "SHA256"
}
] -
創建 Logto 租戶 你需要在 Logto 中設置一個租戶。你可以使用 Logto Cloud 或 Logto OSS。如果尚未完成此步驟,請參閱 設置 Logto Cloud 指南。
-
設置 Management API 的連接 我們將使用 Management API 來匯入使用者資料,你可以參閱 Management API 以了解如何在開發環境中設置連接。
-
匯入使用者資料 建議準備一個腳本逐一匯入使用者資料,我們將調用 create user API 來匯入使用者資料。以下是腳本範例:
const users = require('./users.json');
const importUsers = async () => {
for (const user of users) {
try {
await fetch('https://[tenant_id].logto.app/api/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer [your-access-token]',
},
body: JSON.stringify(user),
});
// 暫停一會以避免速率限制
await new Promise((resolve) => setTimeout(resolve, 200));
} catch (error) {
console.error(`Failed to import user ${user.username}: ${error.message}`);
}
}
};
importUsers();
請注意,API 點有速率限制,你應在每個請求之間添加暫停以避免速率限制。請查看我們的 速率限制 頁面以獲取詳細資訊。
如果你有大量的使用者資料(10 萬以上),你可以 聯繫我們 以增加速率限制。
相關資源
將現有使用者資料庫遷移到 Logto 的一般指南