Migração de usuários
O Logto suporta a migração manual de usuários existentes de outra plataforma. Este guia mostrará como importar usuários existentes via Management API e falará sobre pontos que você deve considerar antes de migrar.
Esquema de usuário
Antes de começarmos, vamos dar uma olhada no esquema de usuário no Logto. Existem 3 partes do esquema de usuário que você deve conhecer:
- Dados básicos: são as informações básicas do perfil do usuário, você pode mapear os dados do seu perfil de usuário existente.
- Dados personalizados: armazena informações adicionais do usuário, você pode usar isso para armazenar arquivos que não podem ser mapeados nos dados básicos.
- Identidades sociais: armazena as informações do usuário recuperadas do login social.
Você pode criar um mapa para associar as informações do seu perfil de usuário existente aos dados básicos e dados personalizados. Para login social, serão necessários passos adicionais para importar as identidades sociais; consulte a API de Vincular identidade social ao usuário.
Hash de senha
O Logto utiliza Argon2 para hashear a senha do usuário, e também suporta outros algoritmos como MD5
, SHA1
, SHA256
e Bcrypt
para facilitar a migração. Esses algoritmos são considerados inseguros; os hashes de senha correspondentes serão migrados para Argon2 no primeiro login bem-sucedido do usuário.
Se você estiver usando outros algoritmos de hash ou salt, pode definir o passwordAlgorithm
como Legacy
, permitindo o uso de qualquer algoritmo de hash suportado pelo Node.js. Você pode encontrar a lista de algoritmos suportados na documentação do Node.js crypto. Nesse caso, o passwordDigest
será uma string JSON que contém o algoritmo de hash e outros parâmetros específicos do algoritmo.
O formato da string JSON é o seguinte:
["hash_algorithm", ["argument1", "argument2", ...], "expected_hashed_value"]
E você pode usar @
como um placeholder para o valor real da senha nos argumentos.
Por exemplo, se você estiver usando SHA256 com um salt, pode armazenar a senha no seguinte formato:
["sha256", ["salt123", "@"], "c465f66c6ac481a7a17e9ed5b4e2e7e7288d892f12bf1c95c140901e9a70436e"]
Isso equivale ao seguinte código:
const hash = crypto.createHash('sha256');
hash.update('salt123' + 'password123');
const expectedHashedValue = hash.digest('hex');
Etapas para migrar
-
Prepare os dados do usuário
Você deve primeiro exportar os dados dos usuários da sua plataforma atual e, em seguida, mapear as informações do usuário para o esquema de usuário do Logto. Recomendamos preparar os dados mapeados em formato JSON. Aqui está um exemplo dos dados do usuário:[
{
"username": "user1",
"passwordDigest": "password-encrypted",
"passwordAlgorithm": "SHA256"
},
{
"username": "user2",
"passwordDigest": "password-encrypted",
"passwordAlgorithm": "SHA256"
}
] -
Crie um tenant Logto
Você precisará configurar um tenant no Logto. Você pode usar tanto o Logto Cloud quanto o Logto OSS. Se ainda não fez isso, consulte o guia Configurar Logto cloud. -
Configure a conexão com a Management API
Usaremos a Management API para importar os dados dos usuários. Você pode consultar a Management API para aprender como configurar a conexão em seu ambiente de desenvolvimento. -
Importe os dados dos usuários
Recomenda-se preparar um script para importar os dados dos usuários um por um. Chamaremos a API criar usuário para importar os dados. Veja um exemplo de script: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),
});
// Aguarde um tempo para evitar limite de taxa
await new Promise((resolve) => setTimeout(resolve, 200));
} catch (error) {
console.error(`Falha ao importar usuário ${user.username}: ${error.message}`);
}
}
};
importUsers();
Observe que o endpoint da API possui limite de taxa; você deve adicionar uma pausa entre cada requisição para evitar o rate limit. Consulte nossa página de limites de taxa para mais detalhes.
Se você tiver uma grande quantidade de dados de usuários (100k+ usuários), pode entrar em contato conosco para aumentar o limite de taxa.
Recursos relacionados
Um guia geral para migrar seu banco de dados de usuários existente para o Logto