メインコンテンツまでスキップ

ユーザー移行

Logto は、他のプラットフォームから既存のユーザーを手動で移行することをサポートしています。このガイドでは、Management API を介して既存のユーザーをインポートする方法と、移行前に考慮すべき事項について説明します。

ユーザースキーマ

始める前に、Logto の ユーザースキーマ を見てみましょう。ユーザースキーマには、次の 3 つの部分があります:

  1. 基本データ:ユーザープロフィールからの基本情報で、既存のユーザープロフィールのデータと一致させることができます。
  2. カスタムデータ:追加のユーザー情報を保存するためのもので、基本データに一致しないファイルを保存するために使用できます。
  3. ソーシャルアイデンティティ:ソーシャルサインインから取得したユーザー情報を保存します。

既存のユーザープロフィールから 基本データカスタムデータ にユーザー情報を一致させるためのマップを作成できます。ソーシャルサインインの場合、ソーシャルアイデンティティをインポートするために追加の手順が必要です。Link social identity to user の 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(`ユーザー ${user.username} のインポートに失敗しました: ${error.message}`);
    }
    }
    };

    importUsers();

API ポイントにはレート制限があることに注意してください。レート制限を避けるために各リクエストの間に待機を追加する必要があります。詳細については、レート制限 ページを確認してください。

大量のユーザーデータ(10万以上)がある場合は、レート制限を増やすために こちらからご連絡ください

既存のユーザーデータベースを Logto に移行するための一般的なガイドライン