跳至主要內容

使用者遷移

Logto 支援從其他平台手動遷移現有使用者,本指南將向你展示如何透過 Management API 匯入現有使用者,並討論遷移前應考慮的事項。

使用者結構

在開始之前,讓我們先看看 Logto 中的 使用者結構。使用者結構有三個部分需要注意:

  1. 基本資料:來自使用者檔案的基本資訊,你可以將現有使用者檔案中的資料與之匹配。
  2. 自訂資料:儲存額外的使用者資訊,你可以用來儲存無法匹配基本資料的檔案。
  3. 社交身分:儲存從社交登入獲取的使用者資訊。

你可以創建一個映射,將現有使用者檔案中的資訊匹配到 基本資料自訂資料。對於社交登入,你需要額外的步驟來匯入社交身分,請參閱 連結社交身分到使用者 的 API。

密碼雜湊

Logto 使用 Argon2 來雜湊使用者的密碼,並支援其他演算法如 MD5SHA1SHA256Bcrypt 以方便遷移。這些演算法被認為是不安全的,對應的密碼雜湊將在使用者首次成功登入時遷移到 Argon2。

如果你需要支援特定的雜湊演算法,請告訴我們

遷移步驟

  1. 準備使用者資料 你應該先從現有平台匯出使用者資料,然後將使用者資訊映射到 Logto 的使用者結構。我們建議你將映射後的資料準備為 JSON 格式。以下是使用者資料的範例:

    [
    {
    "username": "user1",
    "passwordDigest": "password-encrypted",
    "passwordAlgorithm": "SHA256"
    },
    {
    "username": "user2",
    "passwordDigest": "password-encrypted",
    "passwordAlgorithm": "SHA256"
    }
    ]
  2. 創建 Logto 租戶 你需要在 Logto 中設置一個租戶。你可以使用 Logto Cloud 或 Logto OSS。如果尚未完成此步驟,請參閱 設置 Logto Cloud 指南。

  3. 設置 Management API 的連接 我們將使用 Management API 來匯入使用者資料,你可以參閱 Management API 以了解如何在開發環境中設置連接。

  4. 匯入使用者資料 建議準備一個腳本逐一匯入使用者資料,我們將調用 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 的一般指南