View a markdown version of this page

Como importar usuários para grupos de usuários com base em um arquivo CSV - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como importar usuários para grupos de usuários com base em um arquivo CSV

Quando você tem um repositório de identidade externo e tem tempo para preparar seu grupo de usuários para novos usuários locais, a importação em massa de usuários de um arquivo de valores separados por vírgula (CSV) pode ser uma opção simplificada e econômica para a migração para um grupo de usuários do Amazon Cognito. A importação de um arquivo CSV é um processo de baixar e preencher um arquivo de modelo e, em seguida, entregar o arquivo ao seu grupo de usuários em um trabalho de importação. Você pode usar uma importação de CSV para criar rapidamente usuários de teste. Você também pode preencher programaticamente o arquivo com solicitações da API de leitura para seu repositório de identidade externo e, em seguida, analisar seus detalhes e atributos em operações de gravação no arquivo.

Por padrão, o processo de importação define valores para todos os atributos do usuário, exceto a senha. Isso significa que os usuários devem alterar suas senhas na primeira vez em que fizerem login. Seus usuários estão em estado RESET_REQUIRED quando são importados por esse método.

Como alternativa, você pode importar usuários com seus hashes de senha existentes. Quando você especifica um algoritmo de hash de senha durante a criação do trabalho de importação e inclui hashes de senha em seu arquivo CSV, o Amazon Cognito importa os usuários com suas senhas existentes. Esses usuários são criados com um CONFIRMED status e podem entrar imediatamente sem redefinir suas senhas. Para obter mais informações, consulte Importação de usuários com hashes de senha.

A maneira mais simples de importar usuários de um CSV é ativar o login sem senha no grupo de usuários. Com atributos de endereço de e-mail e número de telefone e a configuração correta do grupo de usuários, os usuários podem fazer login com senhas de uso único (OTPs) enviadas por e-mail ou SMS imediatamente após a conclusão do trabalho de importação. Para obter mais informações, consulte Solicitação de redefinição de senha aos usuários importados.

Também é possível definir as senhas dos usuários com uma solicitação de API AdminSetUserPassword que define o parâmetro Permanent como true. A importação de CSV não contribui para a cobrança de usuários ativos mensais (MAUs) em seu grupo de usuários. No entanto, as operações de redefinição de senha geram MAUs. Para gerenciar os custos ao importar um grande número de usuários com senhas que podem não estar imediatamente ativos, configure a aplicação para solicitar aos usuários uma nova senha quando eles fizerem login e receberem o desafio RESET_REQUIRED.

nota

A data de criação de cada usuário é a hora em que o usuário foi importado para o grupo de usuários. A data de criação não é um dos atributos importados.

Etapas para criar um trabalho de importação de usuário
  1. Crie uma função do Amazon CloudWatch Logs no console AWS Identity and Access Management (IAM).

  2. Crie o arquivo .csv de importação do usuário.

  3. Crie e execute o trabalho de importação do usuário. Opcionalmente, especifique um algoritmo de hash de senha para importar usuários com seus hashes de senha existentes.

  4. Carregue o arquivo.csv de importação do usuário.

  5. Inicie e execute o trabalho de importação do usuário.

  6. Use CloudWatch para verificar o registro de eventos.

  7. Se você não importou hashes de senha, exija que os usuários importados redefinam suas senhas.

Mais atributos

Criação da função do CloudWatch Logs IAM

Se você estiver usando a CLI ou a API do Amazon Cognito, precisará criar uma função do IAM. CloudWatch O procedimento a seguir descreve como criar uma função do IAM que o Amazon Cognito pode usar para gravar os resultados do seu trabalho de importação no Logs. CloudWatch

nota

Ao criar um trabalho de importação no console do Amazon Cognito, você pode criar o perfil do IAM ao mesmo tempo. Quando você seleciona Create a new IAM role (Criar um perfil do IAM), o Amazon Cognito aplica automaticamente a política de confiança e a política do IAM apropriadas ao perfil.

Para criar a função do IAM do CloudWatch Logs para importação de grupos de usuários (AWS CLI, API)
  1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. Crie uma nova função do IAM para um AWS service (Serviço da AWS). Para obter instruções detalhadas, consulte Criar um perfil para um AWS service (Serviço da AWS) no Guia do usuário do AWS Identity and Access Management .

    1. Ao selecionar um Use case (Caso de uso) para o Trusted entity type (Tipo de entidade confiável), escolha qualquer serviço. Atualmente, o Amazon Cognito não está listado nos casos de uso de serviço.

    2. Na tela Add permissions (Adicionar permissões), escolha Create policy (Criar política) e insira a instrução de política a seguir. REGIONSubstitua pelo Região da AWS do seu grupo de usuários, por exemplous-east-1. ACCOUNTSubstitua pelo seu Conta da AWS ID, por exemplo111122223333.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/aws/cognito/*" ] } ] }
  3. Como você não escolheu o Amazon Cognito como entidade confiável ao criar o perfil, agora é necessário editar manualmente a relação de confiança do perfil. No painel de navegação do console do IAM, selecione Roles (Perfis) e escolha o perfil criado.

  4. Selecione a guia Trust relationships (Relações de confiança).

  5. Selecione Edit trust policy (Editar política de confiança).

  6. Cole a seguinte instrução de política em Edit trust policy (Editar política de confiança), substituindo qualquer texto existente:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  7. Escolha Atualizar política.

  8. Anote o ARN do perfil do . Forneça o ARN ao criar o trabalho de importação.

Criar o arquivo CSV de importação do usuário

Antes de poder importar os usuários existentes para o grupo de usuários, é necessário criar um arquivo de valores separados por vírgula (CSV) que contenha os usuários que você deseja importar e os atributos deles. No grupo de usuários, é possível recuperar um arquivo de importação de usuários com cabeçalhos que refletem o esquema de atributos do grupo de usuários. Depois, você pode inserir informações do usuário que correspondam aos requisitos de formatação em Formatar o arquivo CSV.

Baixar o cabeçalho do arquivo CSV (console)

Use o procedimento a seguir para baixar o arquivo de cabeçalho CSV.

Como baixar o cabeçalho do arquivo CSV
  1. Acesse o console do Amazon Cognito. Você pode ser solicitado a fornecer suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. Escolha um grupo de usuários existente da lista.

  4. Clique no menu Usuários.

  5. Na seção Import users (Importar usuários), selecione Create an import job (Criar um trabalho de importação).

  6. Em Upload CSV (Fazer upload do CSV, selecione o link template.csv e baixe o arquivo CSV.

Baixando o cabeçalho do arquivo CSV (AWS CLI)

Para obter uma lista dos cabeçalhos corretos, no menu Usuários, em Importar usuários, selecione Criar trabalho de importação. Na caixa de diálogo a seguir, selecione o link template.csv para baixar um arquivo de modelo com os atributos do grupo de usuários.

Você também pode executar o seguinte comando da CLI, onde USER_POOL_ID está o identificador do grupo de usuários para o qual você importará usuários:

aws cognito-idp get-csv-header --user-pool-id "USER_POOL_ID"

Resposta de exemplo:

{ "CSVHeader": [ "name", "given_name", "family_name", "middle_name", "nickname", "preferred_username", "profile", "picture", "website", "email", "email_verified", "gender", "birthdate", "zoneinfo", "locale", "phone_number", "phone_number_verified", "address", "updated_at", "cognito:mfa_enabled", "cognito:username" ], "UserPoolId": "USER_POOL_ID" }

Formatar o arquivo CSV

O arquivo de cabeçalho CSV de importação de usuários baixado se parece com a string a seguir. Ele também inclui os atributos personalizados que você adicionou ao grupo de usuários.

cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled

Edite o arquivo CSV para que ele inclua esse cabeçalho e os valores de atributo dos usuários e seja formatado de acordo com as seguintes regras:

nota

Para obter mais informações sobre valores de atributo, como o formato apropriado de números de telefone, consulte Trabalhar com atributos do usuário.

  • A primeira linha no arquivo é a linha de cabeçalho baixada que contém os nomes de atributo de usuário.

  • A ordem das colunas no arquivo CSV não importa.

  • Cada linha após a primeira linha contém os valores de atributo para um usuário.

  • Todas as colunas do cabeçalho devem estar presente, mas você não precisa fornecer valores em cada coluna.

  • Os seguintes atributos são necessários:

    • cognito:username

    • email_verified ou phone_number_verified

      • Pelo menos um dos atributos verificados automaticamente devem ser true para todos os usuários. Um atributo verificado automaticamente é um endereço de e-mail ou número de telefone para o qual o Amazon Cognito envia automaticamente um código quando um novo usuário se junta ao grupo de usuários.

      • O grupo de usuários deve ter, pelo menos, um atributo verificado automaticamente, email_verified ou phone_number_verified. Se o grupo de usuários não tiver atributos verificados automaticamente, o trabalho de importação não será iniciado.

      • Se o grupo de usuários tiver apenas um atributo verificado automaticamente, esse atributo deverá ser verificado para todos os usuários. Por exemplo, se o grupo de usuários tiver apenas phone_number como atributo verificado automaticamente, o valor de phone_number_verified deverá ser true para todos os usuários.

      nota

      Para que os usuários redefinam suas senhas, eles deverão ter um e-mail ou número de telefone verificado. O Amazon Cognito envia uma mensagem contendo um código de redefinição de senha para o e-mail ou ao número de telefone especificado no arquivo CSV. Se a mensagem for enviada ao número de telefone, ela será enviada por mensagem de SMS. Para obter mais informações, consulte Como verificar informações de contato no cadastro.

    • email (se email_verified for true)

    • phone_number (se phone_number_verified for true)

    • Todos os atributos marcados como necessários quando você criou o grupo de usuários

  • Os valores de atributo que são strings não devem ser aspas.

  • Se um valor de atributo contiver uma vírgula, você deverá colocar uma barra invertida (\) antes da vírgula. Isso acontece porque os campos em um arquivo CSV são separados por vírgulas.

  • O conteúdo do arquivo CSV deve estar em UTF-8 formato sem marca de ordem de bytes.

  • O campo cognito:username é obrigatório e deve ser exclusivo no grupo de usuários. Ele pode ser qualquer string Unicode. No entanto, ele não pode conter espaços ou guias.

  • Os valores da data de nascimento, se presentes, devem estar no formato mm/dd/yyyy. Isso significa, por exemplo, que a data de nascimento 1°. de fevereiro de 1985 deve ser codificada como 02/01/1985.

  • O campo cognito:mfa_enabled deve corresponder aos requisitos de MFA do seu grupo de usuários. Se você tiver definido a autenticação multifator (MFA) para ser obrigatória no grupo de usuários, esse campo deverá ser true ou estar em branco para todos os usuários. Se você tiver definido a MFA para ser desativada, esse campo deverá ser false ou ficar em branco para todos os usuários. Um valor em branco define o MFA-enabled status dos usuários importados para o estado exigido pelo grupo de usuários. Você pode importar usuários em um grupo de MFA-required usuários sem um fator de MFA válido, independentemente de ter definido um cognito:mfa_enabled valor. Os usuários nesse estado têm a MFA ativa, mas não podem fazer login até configurarem um atributo de e-mail, um atributo de número de telefone ou uma TOTP, e essa configuração é um fator de MFA válido em seu grupo de usuários.

  • O comprimento máximo da linha é de 16.000 caracteres.

  • O tamanho máximo do arquivo CSV é 100 MB.

  • O número máximo de linhas (usuários) no arquivo é de 500.000. Esse máximo não inclui a linha de cabeçalho.

  • Espera-se que o valor do campo updated_at esteja no formato de época em segundos, por exemplo: 1471453471.

  • Qualquer espaço em branco à esquerda ou à direita em um valor de atributo será aparado.

A lista a seguir é um exemplo de arquivo de importação CSV para um grupo de usuários sem atributos personalizados. Seu esquema do grupo de usuários pode ser diferente deste exemplo. Nesse caso, você deve fornecer valores de teste no modelo CSV baixado do seu grupo de usuários.

cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled John,,John,Doe,,,,,,,johndoe@example.com,TRUE,,02/01/1985,,,+12345550100,TRUE,123 Any Street,,FALSE Jane,,Jane,Roe,,,,,,,janeroe@example.com,TRUE,,01/01/1985,,,+12345550199,TRUE,100 Main Street,,FALSE

Como criar e executar o trabalho de importação do grupo de usuários do Amazon Cognito

Esta seção descreve como criar e executar o trabalho de importação do grupo de usuários usando o console do Amazon Cognito e o AWS Command Line Interface ()AWS CLI.

Importar usuários de um arquivo CSV (console)

O procedimento a seguir descreve como importar os usuários do arquivo CSV.

Como importar usuários do arquivo CSV (console)
  1. Acesse o console do Amazon Cognito. Você pode ser solicitado a fornecer suas AWS credenciais.

  2. Escolha User Pools (Grupos de usuários).

  3. Escolha um grupo de usuários existente da lista.

  4. Clique no menu Usuários.

  5. Na seção Import users (Importar usuários), selecione Create an import job (Criar um trabalho de importação).

  6. Na página Create import job (Criar um trabalho de importação), insira um Job name (Nome do trabalho).

  7. Escolha entre Create a new IAM role (Criar um perfil do IAM) ou Use an existing IAM role (Usar um perfil do IAM existente).

    1. Se você optou por Create a new IAM role (Criar um perfil do IAM), insira um nome para o novo perfil. O Amazon Cognito criará automaticamente uma função com as permissões e a relação de confiança corretas. A entidade principal do IAM que cria o trabalho de importação deve ter permissões para criar perfis do IAM.

    2. Se você optou por Use an existing IAM role (Usar um perfil do IAM existente), escolha um perfil na lista em IAM role selection (Seleção de perfil do IAM). Esse perfil deve ter as permissões e a política de confiança descritas em Criação da função do CloudWatch Logs IAM.

  8. Em Fazer upload do CSV, selecione Escolher arquivo e anexe o arquivo CSV que você preparou.

  9. Selecione Create job (Criar trabalho) para enviar seu trabalho, mas iniciá-lo mais tarde. Selecione Create and start job (Criar e iniciar trabalho) para enviar seu trabalho e iniciá-lo imediatamente.

  10. Se você criou o trabalho, mas não o iniciou, poderá iniciá-lo mais tarde. No menu Usuários, em Importar usuários, escolha o trabalho de importação e clique em Iniciar. Você também pode enviar uma solicitação de StartUserImportJobAPI a partir de um AWS SDK.

  11. Monitore o andamento do trabalho de importação de usuários no menu Usuários em Importar usuários. Se o trabalho não for bem-sucedido, você poderá selecionar o valor do Status. Para obter mais detalhes, selecione Visualizar os CloudWatch registros para obter mais detalhes e analisar quaisquer problemas no console de CloudWatch registros.

Importação de usuários (AWS CLI)

Os comandos da CLI a seguir estão disponíveis para importar usuários para um grupo de usuários:

  • create-user-import-job

  • get-csv-header

  • describe-user-import-job

  • list-user-import-jobs

  • start-user-import-job

  • stop-user-import-job

Para obter a lista de opções de linha de comando desses comandos, use a opção de linha de comando help. Por exemplo:

aws cognito-idp get-csv-header help

Como criar um trabalho de importação de usuário

Depois de criar seu arquivo CSV, crie um trabalho de importação de usuários executando o seguinte comando da CLI, JOB_NAME onde está o nome que você está escolhendo para o trabalhoUSER_POOL_ID, o ID do grupo de usuários ao qual os novos usuários serão adicionados ROLE_ARN e o ARN da função que você recebeu em: Criação da função do CloudWatch Logs IAM

aws cognito-idp create-user-import-job --job-name "JOB_NAME" --user-pool-id "USER_POOL_ID" --cloud-watch-logs-role-arn "ROLE_ARN"

O PRE_SIGNED_URL retorno na resposta é válido por 15 minutos. Após esse tempo, ele expirará e você deverá criar um novo trabalho de importação de usuário para obter um novo URL.

exemplo Resposta:
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

Valores de status de um trabalho de importação de usuário

Nas respostas aos comandos de importação de usuário, você verá um dos seguintes valores de Status:

  • Created: o trabalho foi criado, mas não foi iniciado.

  • Pending: um estado de transição. Você iniciou o trabalho, mas não começou a importação de usuários ainda.

  • InProgress: o trabalho foi iniciado e os usuários estão sendo importados.

  • Stopping: você interrompeu o trabalho, mas o trabalho ainda não parou de importar usuários.

  • Stopped: você interrompeu o trabalho e o trabalho interrompeu a importação de usuários.

  • Succeeded: o trabalho foi concluído com êxito.

  • Failed: o trabalho foi interrompido devido a um erro.

  • Expired: você criou um trabalho, mas não iniciou o trabalho no intervalo de 24 a 48 horas. Todos os dados associados ao trabalho foram excluídos e o trabalho não pode ser iniciado.

Fazer upload do arquivo CSV

Use o comando curl a seguir para fazer upload do arquivo CSV que contém os dados do usuário no URL pré-assinado que você obteve da resposta do comando create-user-import-job.

curl -v -T "PATH_TO_CSV_FILE" -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"

Na saída deste comando, procure a frase "We are completely uploaded and fine". Essa frase indica que o upload do arquivo foi realizado com êxito. Os grupos de usuários não mantêm as informações nos arquivos de importação depois que você executa os trabalhos de importação. Depois que eles forem concluídos ou expirarem, o Amazon Cognito excluirá seu arquivo CSV carregado.

Como descrever um trabalho de importação de usuário

Para obter uma descrição do seu trabalho de importação de usuários, use o comando a seguir, onde USER_POOL_ID está o ID do grupo de usuários e JOB_ID o ID do trabalho que foi retornado quando você criou o trabalho de importação de usuários.

aws cognito-idp describe-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
exemplo Resposta de exemplo:
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

No exemplo de saída anterior, PRE_SIGNED_URL é o URL para o qual você carregou o arquivo CSV. Esse ROLE_ARN é o ARN da função de CloudWatch registros que você recebeu ao criar a função.

Como listar os trabalhos de importação de usuário

Para listar os trabalhos de importação de usuário, use o comando a seguir:

aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 2
exemplo Resposta de exemplo:
{ "UserImportJobs": [ { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 }, { "CompletionDate": 1470954227.701, "StartDate": 1470954226.086, "Status": "Failed", "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "CompletionMessage": "Too many users have failed or been skipped during the import.", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 5, "CreationDate": 1470953929.313 } ], "PaginationToken": "PAGINATION_TOKEN" }

Os trabalhos são listados em ordem cronológica, do último criado ao primeiro. A PAGINATION_TOKEN string após o segundo trabalho indica que há resultados adicionais para esse comando de lista. Para listar os resultados adicionais, use a opção --pagination-token opção da seguinte forma:

aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 10 --pagination-token "PAGINATION_TOKEN"

Como iniciar um trabalho de importação de usuário

Para iniciar um trabalho de importação de usuário, use o seguinte comando:

aws cognito-idp start-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"

Somente um trabalho de importação pode ser ativado por vez por conta.

exemplo Resposta de exemplo:
{ "UserImportJob": { "Status": "Pending", "StartDate": 1470957851.483, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

Como interromper um trabalho de importação de usuário

Para interromper um trabalho de importação de usuário em andamento, use o comando a seguir. Após interromper o trabalho, ele não poderá ser reiniciado.

aws cognito-idp stop-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
exemplo Resposta de exemplo:
{ "UserImportJob": { "CompletionDate": 1470958050.571, "StartDate": 1470958047.797, "Status": "Stopped", "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "CompletionMessage": "The Import Job was stopped by the developer.", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957972.387 } }

Visualizando os resultados da importação do grupo de usuários no CloudWatch console

Você pode ver os resultados do seu trabalho de importação no CloudWatch console da Amazon.

Como visualizar os resultados

As etapas a seguir descrevem como exibir os resultados de importação de grupo de usuários.

Para exibir os resultados da importação de grupos de usuários
  1. Faça login no Console de gerenciamento da AWS e abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/.

  2. Escolha Logs.

  3. Escolha o grupo de logs dos trabalhos de importação de grupo de usuários. O nome do grupo de logs está no formato /aws/cognito/userpools/USER_POOL_ID/USER_POOL_NAME.

  4. Escolha o log do trabalho de importação de usuário que você acabou de executar. O nome do registro está no formatoJOB_ID/JOB_NAME. Os resultados do registro referem-se aos usuários por número de linha. Nenhum dado de usuário é gravado no log. Para cada usuário, uma linha semelhante à seguinte é exibida:

    • [SUCCEEDED] Line Number 5956 - The import succeeded.

    • [SKIPPED] Line Number 5956 - The user already exists.

    • [FAILED] Line Number 5956 - The User Record does not set any of the auto verified attributes to true. (Example: email_verified to true).

Como interpretar os resultados

Usuários importados com sucesso têm seu status definido como "PasswordReset”.

Nos casos a seguir, o usuário não será importado, mas o trabalho de importação continuará:

  • Nenhum atributo verificado automaticamente é definido como true.

  • Os dados do usuário não correspondem ao esquema.

  • Não é possível importar o usuário devido a um erro interno.

Nos casos a seguir, o trabalho de importação apresentará falha:

  • A função Amazon CloudWatch Logs não pode ser assumida, não tem a política de acesso correta ou foi excluída.

  • O grupo de usuários foi excluído.

  • O Amazon Cognito não pode analisar o arquivo .csv.

Solicitação de redefinição de senha aos usuários importados

Se o grupo de usuários oferecer somente login baseado em senha, os usuários deverão redefinir as senhas após a importação. Na primeira vez que fizerem login, poderão inserir qualquer senha. O Amazon Cognito solicita que eles insiram uma nova senha na resposta da API à solicitação de login da sua aplicação.

Se o grupo de usuários tiver fatores de autenticação sem senha, o Amazon Cognito os usará como padrão para usuários importados. Eles não serão solicitados a criar uma nova senha e poderão fazer login imediatamente com uma OTP enviada por e-mail ou SMS, sem senha. Você também poderá solicitar que os usuários definam uma senha para poderem usar outros métodos de login, como nome de usuário e senha ou chave de acesso. As condições a seguir se aplicam ao login sem senha após a importação do usuário.

  1. Você deve importar usuários com um atributo que corresponda a um fator de login sem senha disponível. Se os usuários puderem fazer login com um endereço de e-mail, você deverá importar um atributo email. Se puderem fazer login com um número de telefone, você deverá importar um atributo phone_number. Se puderem fazer login com ambos, importe um valor para qualquer um dos atributos.

  2. Normalmente, os usuários são importados em um estado RESET_REQUIRED em que precisam redefinir a senha. Se eles forem importados com a capacidade de fazer login com um fator sem senha, o Amazon Cognito definirá seu estado como CONFIRMED.

Para saber mais sobre a autenticação sem senha, incluindo como configurá-la e como criar o fluxo de autenticação em sua aplicação, consulte Autenticação com grupos de usuários do Amazon Cognito.

O procedimento a seguir descreve a experiência do usuário em um mecanismo de login personalizado com usuários locais em um RESET_REQUIRED após a importação de um arquivo CSV. Se seus usuários fizerem login com login gerenciado, instrua-os a selecionar a opção Esqueceu a senha?, informe o código deles por e-mail ou mensagem de texto e defina uma senha.

Solicitação de redefinição de senha aos usuários importados
  1. Na aplicação, tente fazer login silenciosamente para o usuário atual com InitiateAuth usando uma senha aleatória.

  2. O Amazon Cognito retorna uma NotAuthorizedException quando PreventUserExistenceErrors está habilitado. Caso contrário, retornará PasswordResetRequiredException.

  3. A aplicação faz uma solicitação da API ForgotPassword e redefine a senha do usuário.

    1. A aplicação envia o nome de usuário em uma solicitação de API ForgotPassword.

    2. O Amazon Cognito envia um código para o e-mail ou telefone verificado. O destino depende dos valores que você forneceu para email_verified e phone_number_verified no arquivo CSV. A resposta à solicitação ForgotPassword indica o destino do código.

      nota

      O grupo de usuários deve estar configurado para verificar e-mails ou números de telefone. Para obter mais informações, consulte Como cadastrar e confirmar contas de usuários.

    3. A aplicação exibe uma mensagem para o usuário verificar o local para onde o código foi enviado e solicita que o usuário insira o código e uma nova senha.

    4. O usuário informa o código e a nova senha no aplicativo.

    5. A aplicação envia o código e a nova senha em uma solicitação da API ConfirmForgotPassword.

    6. A aplicação redireciona o usuário para fazer login.

Importação de usuários com hashes de senha

Ao migrar usuários de um sistema de autenticação existente para o Amazon Cognito, você pode importar seus hashes de senha junto com seus atributos de usuário. Seus usuários podem então entrar imediatamente com suas senhas existentes, sem redefinição de senha. Depois que os usuários se conectam pela primeira vez, o Amazon Cognito migra de forma transparente suas credenciais para o sistema de autenticação nativo do Amazon Cognito.

Importante

A importação de hash de senha não está disponível para todos os grupos de usuários no momento. A importação de hash de senha requer a infraestrutura moderna do Amazon Cognito com recursos e escalabilidade aprimorados. Alguns grupos de usuários ainda estão em uma infraestrutura anterior e os AWS atualizarão para a nova infraestrutura, que desbloqueia esse recurso. No console do Amazon Cognito, grupos de usuários qualificados exibem a opção de algoritmo de hashing de senha ao criar trabalhos de importação, e grupos inelegíveis não exibem essa opção. Para obter mais informações, consulte O Amazon Cognito desbloqueia recursos avançados com infraestrutura de próxima geração no blog de segurança. AWS

Como funciona a importação de hash de senha

Com a importação de hash de senha, você pode migrar usuários enquanto preserva a capacidade deles de fazer login com as senhas existentes. O processo de importação funciona da seguinte forma:

  1. Você cria um trabalho de importação e especifica o algoritmo de hash de senha que seu sistema de origem usou para criar os hashes de senha.

  2. Você inclui a password_hash coluna no seu arquivo CSV com o valor de hash da senha de cada usuário.

  3. O Amazon Cognito importa usuários com seus hashes de senha e os cria com um status. CONFIRMED Os usuários podem fazer login imediatamente.

  4. Quando um usuário faz login pela primeira vez, o Amazon Cognito verifica sua senha em relação ao hash importado. Após a verificação bem-sucedida, o Amazon Cognito migra as credenciais do usuário para o sistema de autenticação nativo.

  5. Todos os logins subsequentes usam o sistema de autenticação nativo do Amazon Cognito.

Importante

Todos os hashes de senha em um único trabalho de importação devem usar o mesmo algoritmo. Você especifica o algoritmo no nível do trabalho ao criar o trabalho de importação.

nota

Até que um usuário conclua seu primeiro login e o Amazon Cognito migre suas credenciais, você não pode usar a autenticação Secure Remote Password (SRP) para esse usuário. Uso USER_PASSWORD_AUTH ou ADMIN_USER_PASSWORD_AUTH fluxos para usuários com hashes de senha importados que ainda não fizeram login.

Algoritmos de hashing de senha compatíveis

O Amazon Cognito oferece suporte aos seguintes algoritmos de hash de senha para importação:

BCRYPT

A função hash adaptável bcrypt. O Amazon Cognito extrai todos os parâmetros necessários (sal, fator de custo) da string de hash.

Formato: $2<a/b/x/y>$[cost]$[22-char salt][31-char hash]

Exemplo: $2b$10$CtA.Rcu/szzn9U00wpUjOuN3vrgJRZycv4aOzcP3GzqzO8UDPEFq6

Fator de custo máximo: 10

SCRYPT

A função de derivação de chave baseada em senha scrypt. O Amazon Cognito extrai todos os parâmetros necessários da string de hash.

Formato: N$r$p$hexSalt$hexHash

Exemplo: 65536$8$1$304dbaef7c5e828dc19c98f0600d18fe$4f69c498c12cd102d057356facf8d77e8d42407090491ea32c5b038f5a18c099

Parâmetros máximos: N (CPU/memory custo) = 65536, r (tamanho do bloco) = 8, p (paralelismo) = 1

ARGON2ID

O algoritmo de hashing de senha Argon2ID. O Amazon Cognito extrai todos os parâmetros necessários da string de hash.

Formato: $argon2id$v=N$m=M,t=T,p=P$salt$hash

Exemplo: $argon2id$v=19$m=19456,t=2,p=1$ko/G5o1ms+ML08P95sQ8DA$AkVbvWSOqz7Hs3qthhWKxicOWnGLN+MBmpwc3emi5VA

Parâmetros máximos: m (memória em KiB) = 19456, t (iterações) = 2, p (paralelismo) = 1

PBKDF2_SHA256

Password-Based Função de derivação de chave 2 com SHA-256. O Amazon Cognito extrai todos os parâmetros necessários da string de hash.

Formato: $pbkdf2-sha256$iterations$salt$hash

Exemplo: $pbkdf2-sha256$600000$1XZlmwLQ2hhM3JYuCPiArQ$Pfheg9Zi/v5lXU4yyLA0WFUYEd/rlaVbzrM9oMD6IrA

Máximo de iterações: 600000

nota

Todos os algoritmos compatíveis são autodescritivos, o que significa que o Amazon Cognito pode extrair todos os parâmetros necessários (como sal, fator de custo e iterações) diretamente da string de hash. Você só precisa especificar o nome do algoritmo ao criar o trabalho de importação.

Se o hash de sua senha tiver valores de parâmetros que excedam os limites máximos listados acima, a importação falhará para esse usuário. Revise a configuração de hash de senha do seu sistema de origem antes de importar para garantir a compatibilidade.

Adicionar hashes de senha ao seu arquivo CSV

Quando você baixa o modelo CSV para importação do usuário, o modelo inclui uma password_hash coluna. Preencha essa coluna com os valores de hash da senha dos usuários que você deseja importar com as senhas existentes.

Regras de formatação CSV para importação de hash de senha
  • A password_hash coluna é obrigatória quando seu trabalho de importação especifica um algoritmo de hashing de senha. Se você deixar o valor vazio para um usuário específico, o Amazon Cognito importará esse usuário sem uma senha e definirá o usuário para o RESET_REQUIRED estado.

  • Se seu trabalho de importação especificar um algoritmo de hash de senha, mas seu arquivo CSV não incluir uma password_hash coluna, o trabalho falhará.

  • Se um valor de hash de senha estiver incorreto ou não corresponder ao formato esperado para o algoritmo especificado, a importação falhará para esse usuário. O Amazon Cognito não cria o usuário e registra a falha nos seus registros do Amazon CloudWatch Logs.

  • Os valores de hash da senha diferenciam maiúsculas de minúsculas. Certifique-se de que eles correspondam ao formato exato que o algoritmo espera.

exemplo Exemplo de CSV com hashes de senha

O exemplo a seguir mostra um arquivo CSV que importa usuários com hashes de senha bcrypt:

cognito:username,email,email_verified,phone_number,phone_number_verified,password_hash alejandro_rosalez,alejandro_rosalez@example.com,TRUE,+12345550100,TRUE,$2b$10$CtA.Rcu/szzn9U00wpUjOuN3vrgJRZycv4aOzcP3GzqzO8UDPEFq6 mary_major,mary_major@example.com,TRUE,+12345550199,TRUE,$2b$10$CtA.Rcu/szzn9U00wpUjOuN3vrgJRZycv4aOzcP3GzqzO8UDPEFq6

Criação de um trabalho de importação com hashes de senha (AWS CLI)

Para importar usuários com hashes de senha, você deve especificar o algoritmo de hash de senha ao criar o trabalho de importação. Todos os usuários na tarefa de importação devem usar o mesmo algoritmo.

Use o AWS Command Line Interface comando a seguir para criar um trabalho de importação com hashes de senha. O --password-hashing-algorithm parâmetro especifica o algoritmo usado para criar os hashes de senha no seu arquivo CSV.

aws cognito-idp create-user-import-job \ --job-name "JOB_NAME" \ --user-pool-id "USER_POOL_ID" \ --cloud-watch-logs-role-arn "ROLE_ARN" \ --password-hashing-algorithm BCRYPT

BCRYPTSubstitua por um dos algoritmos compatíveis:BCRYPT,SCRYPT,ARGON2ID, ouPBKDF2_SHA256.

exemplo Exemplo de resposta
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "PasswordHashingAlgorithm": "BCRYPT", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

A resposta inclui o PasswordHashingAlgorithm campo confirmando o algoritmo que você especificou. Faça o upload do arquivo CSV para o URL pré-assinado e inicie o trabalho conforme descrito em. Fazer upload do arquivo CSV

Experiência do usuário após a importação de hash de senha

Os usuários importados com hashes de senha têm a seguinte experiência:

  • Login imediato: os usuários podem fazer login com suas senhas existentes imediatamente após a importação. Os usuários não recebem uma solicitação para redefinir suas senhas.

  • Status do usuário: o Amazon Cognito cria esses usuários com um CONFIRMED status em vez de. RESET_REQUIRED

  • Migração transparente: quando os usuários fazem login pela primeira vez, o Amazon Cognito verifica sua senha em relação ao hash importado. Após a verificação bem-sucedida, o Amazon Cognito migra suas credenciais para o sistema de autenticação nativo. Todos os logins subsequentes usam o sistema nativo.

  • Latência inicial de login: o primeiro login para usuários com hashes de senha importados pode demorar um pouco mais do que os logins subsequentes. O Amazon Cognito deve verificar a senha em relação ao hash importado e migrar as credenciais para o sistema de autenticação nativo.

  • Redefinição de senha: se um usuário redefinir sua senha antes do primeiro login, o hash de senha importado será substituído por uma nova senha usando o sistema de autenticação nativo do Amazon Cognito.

Solução de problemas de erros de importação de hash de senha

Se uma importação de hash de senha falhar para um usuário, o Amazon Cognito registrará a falha nos seus registros do CloudWatch Amazon Logs. Os cenários de erro comuns incluem:

Hash malformado

O hash da senha não corresponde ao formato esperado para o algoritmo especificado. Verifique se o formato de hash está correto e corresponde a um dos formatos listados emAlgoritmos de hashing de senha compatíveis.

Parâmetro fora dos limites

O hash da senha contém valores de parâmetros (como fator de custo ou iterações) que excedem os valores máximos permitidos. Para usuários com hashes incompatíveis, escolha uma das seguintes opções:

  • Importe esses usuários sem um hash de senha deixando o password_hash campo vazio. O Amazon Cognito os define como o RESET_REQUIRED estado e eles devem redefinir suas senhas no primeiro login.

  • Use um gatilho Lambda de migração de usuários para migrar esses usuários no momento do login, em vez de por meio da importação de CSV.

  • Antes de descomissionar seu sistema de origem, refaça o hash de senhas com parâmetros compatíveis quando os usuários fizerem login em seu sistema existente.

Incompatibilidade de algoritmos

O hash da senha foi criado com um algoritmo diferente do especificado na tarefa de importação. Todos os hashes em um único trabalho de importação devem usar o mesmo algoritmo. Se você tiver usuários com algoritmos diferentes, crie trabalhos de importação separados para cada algoritmo.

Coluna password_hash ausente

Você especificou um algoritmo de hashing de senha ao criar o trabalho, mas seu arquivo CSV não inclui a password_hash coluna. Adicione a coluna ao seu arquivo CSV ou crie um novo trabalho sem especificar um algoritmo.

Quando uma importação de hash de senha falha para um usuário, o Amazon Cognito não cria o usuário. Outros usuários na tarefa de importação continuam sendo processados. Revise seus CloudWatch registros do Amazon Logs para identificar quais usuários falharam e o motivo de cada falha.

Considerações de segurança para importação de hash de senha

O Amazon Cognito aplica medidas de segurança adicionais aos hashes de senha importados:

  • Hash duplo: o Amazon Cognito refaz o hash de todos os hashes de senha importados com uma camada adicional de proteção criptográfica antes do armazenamento, independentemente da força do algoritmo original.

  • Migração automática: após a primeira autenticação bem-sucedida, o Amazon Cognito migra as credenciais do usuário para o protocolo nativo Secure Remote Password (SRP) usado pelo Amazon Cognito. Isso garante que todos os usuários eventualmente usem o mecanismo nativo de autenticação de alta segurança.

  • Limpeza de dados: após a conclusão do trabalho de importação, o Amazon Cognito remove o arquivo CSV carregado contendo hashes de senha do armazenamento temporário.

Importante

Trate seu arquivo CSV contendo hashes de senha como dados confidenciais. Proteja-o em trânsito e exclua-o com segurança após a conclusão da importação.