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. ConsulteGET 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.
Importar em lotes
Envie até 1,000 pessoas por requisição com umidempotency_key de até 100 caracteres.
- Uma simulação retorna
200com o resultado e não grava nada. - Com
dry_run: false, uma importação bem-sucedida retorna201. Um lote com qualquer erro retorna400e 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 cujousers contém o array.
CSV
As mesmas colunas de valor único, maisgoogle_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.
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_idou 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 erroidentity_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_unavailablee 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 mesmoresult:
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.
vendor_data de cada pessoa corresponde ao valor que você usa nas verificações e transações dela.