본문으로 건너뛰기

사용자 마이그레이션

Logto는 다른 플랫폼에서 기존 사용자를 수동으로 마이그레이션하는 것을 지원합니다. 이 가이드는 Management API를 통해 기존 사용자를 가져오는 방법과 마이그레이션 전에 고려해야 할 사항에 대해 설명합니다.

사용자 스키마

시작하기 전에 Logto의 사용자 스키마를 살펴보겠습니다. 사용자 스키마에는 알아두어야 할 3가지 부분이 있습니다:

  1. 기본 데이터: 사용자 프로필의 기본 정보로, 기존 사용자 프로필의 데이터를 매칭할 수 있습니다.
  2. 사용자 정의 데이터: 추가 사용자 정보를 저장하며, 기본 데이터와 매칭할 수 없는 파일을 저장하는 데 사용할 수 있습니다.
  3. 소셜 아이덴티티: 소셜 로그인에서 가져온 사용자 정보를 저장합니다.

기존 사용자 프로필의 사용자 정보를 기본 데이터사용자 정의 데이터에 매핑하는 지도를 만들 수 있습니다. 소셜 로그인에 대해서는 소셜 아이덴티티를 가져오기 위한 추가 단계가 필요하며, 사용자에게 소셜 아이덴티티 연결 API를 참조하세요.

비밀번호 해싱

Logto는 사용자의 비밀번호를 해싱하기 위해 Argon2를 사용하며, 마이그레이션의 편의를 위해 MD5, SHA1, SHA256, Bcrypt와 같은 다른 알고리즘도 지원합니다. 이러한 알고리즘은 안전하지 않은 것으로 간주되며, 사용자가 처음으로 성공적으로 로그인할 때 해당 비밀번호 해시는 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 클라우드 설정 가이드를 참조하세요.

  3. Management API 연결 설정 Management API를 사용하여 사용자 데이터를 가져올 것입니다. 개발 환경에서 연결을 설정하는 방법은 Management API를 참조하세요.

  4. 사용자 데이터 가져오기 사용자 데이터를 하나씩 가져오기 위한 스크립트를 준비하는 것이 좋습니다. 사용자 생성 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 포인트는 속도 제한이 있으므로, 각 요청 사이에 대기 시간을 추가하여 속도 제한을 피해야 합니다. 자세한 내용은 속도 제한 페이지를 검토하세요.

사용자 데이터가 대량인 경우 (100k+ 사용자), 속도 제한을 늘리기 위해 저희에게 연락할 수 있습니다.

기존 사용자 데이터베이스를 Logto로 마이그레이션하는 일반적인 가이드라인