Pular para o conteúdo principal
O Authentication é novo. Execute toda importação primeiro em uma aplicação sandbox e, depois, importe para a sua aplicação de produção.
Uma importação transfere pessoas de outra plataforma de identidade para o Didit Authentication. A senha, o e-mail verificado, os vínculos de login social, o app autenticador e as funções nas organizações vão junto com elas. Nada muda para essas pessoas até que a sua aplicação as autentique com a Didit. As importações usam a API de gerenciamento do Authentication da sua aplicação, com uma sessão do console que tenha write:authentication (ou read:authentication para listá-las). Elas nunca usam um token de usuário final nem uma chave de API de verificação. Nos exemplos, MANAGEMENT_BASE é:

Duas formas de importar

Importar um arquivo

1. Enviar

Cada opção keep_* é true, a menos que você envie false. A chamada retorna 202 com um job. Uma aplicação mantém no máximo 5 arquivos enviados ao mesmo tempo.

2. Conferir a simulação

Todo envio inicia uma simulação. Ela verifica cada pessoa e não grava nada. Consulte GET import-jobs/{id}/ periodicamente: Uma simulação com falha lista os seus erros. Corrija o arquivo e envie-o novamente.

3. Iniciar a importação

POST import-jobs/{id}/start/ importa o que a simulação verificou e retorna 202.
  • As pessoas são importadas em lotes de 1,000. Cada lote é efetivado separadamente.
  • Apenas uma importação é executada por aplicação de cada vez (caso contrário, import_running).
  • Uma importação interrompida é retomada após o último lote efetivado.
  • As pessoas já importadas são ignoradas, então você pode executar o mesmo arquivo novamente.
  • A pessoa que iniciou a importação recebe um e-mail quando ela termina ou é interrompida.
O arquivo enviado é armazenado com criptografia. Ele é excluído quando a importação termina, quando a simulação falha ou 24 horas após uma simulação que nunca foi importada.

Importar em lotes

Envie até 1,000 pessoas por requisição com um idempotency_key de até 100 caracteres.
  • Uma simulação retorna 200 com o resultado e não grava nada.
  • Com dry_run: false, uma importação bem-sucedida retorna 201. Um lote com qualquer erro retorna 400 e não importa ninguém.
  • Repetir uma requisição já efetivada com a mesma chave retorna o resultado registrado. A mesma chave com conteúdo diferente retorna 400 {"idempotency_key": "different_payload"}.
  • Os parâmetros do Firebase vão em um objeto firebase: {signer_key, salt_separator, rounds, mem_cost}.
  • GET imports/ lista os lotes efetivados.

Formato do arquivo

JSON

Um array de pessoas ou um objeto cujo users contém o array.

CSV

As mesmas colunas de valor único, mais google_id, apple_id, github_id, microsoft_id, microsoft_tenant_id, organization_slug, organization_name e organization_role. Uma pessoa em várias organizações ocupa uma linha por organização.
Campos ou colunas desconhecidos são erros e nunca são ignorados.

Duplicatas e contas existentes

  • Linhas com o mesmo e-mail se tornam uma única pessoa. Uma linha idêntica é contada como duplicata. Uma linha com mais vínculos, organizações ou um autenticador é mesclada.
  • Dois hashes de senha, segredos de autenticador ou funções em uma organização diferentes para uma mesma pessoa são erros. O mesmo vale para um external_id ou um subject de um provedor reivindicado por duas pessoas.
  • Se já existir uma conta com esse e-mail e ela tiver sido criada por uma importação anterior, a pessoa é ignorada (already_imported). Se a pessoa se cadastrou por conta própria, é um erro identity_conflict. Uma importação nunca altera uma conta existente.

Senhas

Os parâmetros do Firebase são armazenados criptografados, apenas para aquela aplicação. Qualquer outro formato, ou um custo acima desses limites, significa que a pessoa precisa de uma nova senha. Após o primeiro login bem-sucedido de uma pessoa, a Didit armazena a senha dela novamente no próprio formato da Didit.

Pessoas sem uma senha utilizável

Quando uma pessoa não tem hash, ou tem um hash não suportado, uma tentativa de login com senha recebe a resposta normal de senha incorreta. A Didit também envia a ela por e-mail um link para definir uma nova senha (válido por 30 minutos, no máximo uma vez por dia). Isso acontece apenas quando o e-mail dela está verificado, a conta não está bloqueada e o login com senha está ativado. No resultado, reset_required conta as pessoas sem uma senha utilizável. reset_emails conta, entre elas, aquelas com e-mail verificado: só elas podem ser contatadas dessa forma. Pessoas com e-mail não verificado não podem fazer login com senha. Elas ainda podem fazer login com um código por e-mail se você ativar esse método.

Vínculos sociais, autenticadores e organizações

  • Vínculos sociais são mantidos para provedores que sua aplicação já configurou, com o client ID atual dela. Em um login subsequente, essas pessoas não precisam de comprovação por e-mail. Os subjects do Google e do GitHub são globais. Os subjects da Apple são por equipe de desenvolvedor e os da Microsoft são por registro de aplicativo, então esses vínculos só correspondem quando sua plataforma anterior usava a mesma equipe ou o mesmo registro. Vínculos com provedores que você não configurou são contados como social_unavailable e não são importados.
  • Aplicativos autenticadores (segredos TOTP: SHA-1, 6 dígitos, 30 segundos) são armazenados criptografados. As pessoas importadas devem usá-los como segundo fator. Elas não recebem códigos de recuperação.
  • Organizações que ainda não existem são criadas a partir do slug delas.
  • Chaves de acesso não podem ser importadas. Elas pertencem ao seu domínio de login anterior, então as pessoas adicionam uma nova chave de acesso depois de fazer login com a Didit.

Resultados

Simulações, lotes e jobs retornam o mesmo result: As respostas nunca contêm hashes de senha, salts, segredos de autenticador nem valores de campos.

Antes de fazer a migração definitiva

Teste na sua aplicação de sandbox:
  • o login com cada formato de senha que você importar,
  • o e-mail para definir uma nova senha para uma pessoa sem um hash utilizável,
  • o login social e os códigos do autenticador para pessoas importadas,
  • a execução do mesmo arquivo duas vezes.
Depois, confira se o vendor_data de cada pessoa corresponde ao valor que você usa nas verificações e transações dela.
Última modificação em 1 de novembro de 2026