Criar um usuário do aplicativo
Nesta página
Visão geral
O Atlas App Services fornece vários fornecedores de autenticação para conectar usuários ao seu aplicativo. Para a maioria dos provedores, o App Services cria automaticamente uma conta de usuário na primeira vez que um usuário se autentica por meio do provedor. A única exceção é autenticação de usuário por e-mail/senha, que requer o registro e a confirmação de um usuário antes que ele possa se autenticar.
Dica
Requisitos de exclusão de conta Apple
A Apple exige que os aplicativos distribuídos pela App Store forneçam a qualquer usuário que criar uma conta a opção de excluí-la. Independentemente de o aplicativo usar um método de autenticação em que é necessário registrar manualmente um usuário, como autenticação por e-mail/senha, ou um método que cria automaticamente um usuário, como o Iniciar sessão com a Apple, um aplicativo distribuído pela App Store deve implementar a exclusão da conta do usuário.
Identidade
Quando você faz login pela primeira vez com um provedor de autenticação, o App Services cria um objeto de usuário que contém uma ID de identidade exclusiva e metadados específicos do fornecedor sobre o usuário.
Vincular para contas existentes
Um único objeto de usuário pode ter mais de uma identidade. Você pode usar os SDKs do Realm para vincular identidades a contas de usuário existentes. Isso permite que os usuários façam login em uma única conta com mais de um provedor. Para obter mais informações, consulte a documentação sobre como vincular identidades ao seu SDK preferido:
Criar um usuário com e-mail/senha
Ao usar a autenticação de usuário por e-mail/senha, você deve primeiro registrar um usuário, o que cria o objeto de usuário. Você pode registrar usuários em seu aplicação cliente usando seu SDK preferido ou pode criar manualmente usuários de e-mail/senha.
Depois de registrar o usuário, você deve confirmá- lo antes que ele possa se autenticar.
Criar um usuário de e-mail/senha no SDK
Cada SDK oferece uma API que permite que você registre um usuário de e-mail/senha. Após registrar o usuário, você deve confirmar o usuário antes que ele possa autenticar. Para exemplos de código que demonstram como gerenciar usuários de e-mail/senha no aplicativo cliente, consulte a documentação dos SDKs do Realm:
Crie manualmente um usuário de e-mail/senha
Você pode criar um novo usuário de e-mail/senha a partir da interface de usuário, CLI ou API de administração do App Services. Usuários criados manualmente ignoram qualquer fluxo de confirmação de usuário configurado.
Dica
Criar manualmente um usuário pode ser útil para testar e depurar seu aplicativo no desenvolvimento.
Selecione App Users no menu de navegação esquerdo.
Clique no botão Add New User.
Especifique um endereço de e-mail e senha para o novo usuário.
Observação
O provedor de autenticação de e-mail/senha exige que as senhas tenham entre 6 e 128 caracteres.
Clique em Create.
Observação
Você também pode criar chaves de API que os aplicativos usam para se conectar à sua aplicação. Embora as chaves API não estejam associadas a um único usuário, a guia Users as lista. Para saber mais sobre chaves de API, consulte Autenticação de chaves de API.
Para criar um novo usuário de e-mail/senha, chame appservices users create
e especifique --type=email
. A CLI solicitará seu ID do aplicativo, bem como o e-mail e a senha do novo usuário.
appservices users create --type=email
Você também pode especificar os argumentos ao chamar o programa:
appservices users create --type=email \ --app=<Your App ID> \ --email=<User's Email Address> \ --password=<User's Password>
Observação
O provedor de autenticação de e-mail/senha exige que as senhas tenham entre 6 e 128 caracteres.
Para criar um novo usuário de e-mail/senha, crie uma solicitação POST
no seguinte formato. Você deve especificar as credenciais do usuário no corpo da solicitação e o ID do grupo e do aplicativo no URL da solicitação.
curl --request POST \ --header 'Authorization: Bearer <access_token>' \ --data '{ "email": "<string>", "password": "<string>" }' \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/users
Observação
O provedor de autenticação de e-mail/senha exige que as senhas tenham entre 6 e 128 caracteres.
Confirmar um usuário
Você deve confirmar o endereço de e-mail dos novos usuários de e-mail/senha antes que eles tenham permissão para fazer login nos App Services. O método exato de confirmação depende da configuração do seu provedor, mas normalmente envolve um processo de handshake entre o usuário e seu aplicação. Você pode ler mais sobre a confirmação do usuário por e- mail/senha em Confirmação por e-mail/senha.
Às vezes, os usuários não conseguem concluir o processo de confirmação. Por exemplo:
Um filtro de spam excessivo pode bloquear e-mails de confirmação por e-mail do App Services.
Um proxy ou bloqueador da Web pode impedir que um usuário ative a função SDK do cliente
confirmUser
por meio do aplicação do cliente .Um erro de implementação pode fazer com que a página de confirmação do usuário do aplicativo cliente falhe em casos de uso específicos.
Para ajudá-lo a contornar casos como este, você pode confirmar usuários usando manualmente a IU dos Serviços de Aplicativo ou a API de Administração:
Para confirmar um usuário de e-mail/senha pendente na IU:
Selecione App Users no menu de navegação esquerdo.
Na aba Users , selecione o botão PENDING .
Localize o usuário na lista e clique nas reticências (
...
).Selecione a opção Confirm User no menu de contexto que aparece.
Se a operação for bem-sucedida, o banner na parte superior do console de admin do Atlas App Services deverá exibir uma mensagem de confirmação. O User Status do usuário muda de Pending Confirmation para Pending User Login.
Um usuário confirmado manualmente continua aparecendo na lista de usuários PENDING até fazer login no seu aplicativo pela primeira vez. Nesse momento, o App Services o move para a lista de usuários confirmados e faz a transição de User Status para confirmed
.
Para confirmar um usuário de e-mail/senha pendente usando a API Admin, crie uma solicitação POST
no formato a seguir. Você deve especificar o ID do grupo, o ID do aplicativo e o endereço de e-mail.
curl --request POST \ --header 'Authorization: Bearer <access_token>' \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/user_registrations/by_email/<email>/confirm
Execute novamente o fluxo de trabalho de confirmação do usuário
Algumas circunstâncias podem levar a fluxos de trabalho incompletos de confirmação de usuário de e-mail/senha:
Um e-mail é capturado por um filtro de spam, não entregue devido a um bug, ou excluído acidentalmente por um possível usuário dos Serviços de Aplicativo.
Uma função de confirmação personalizada não consegue se comunicar com um usuário não confirmado devido a um bug ou supervisão.
Um usuário não confirmado esqueceu de visitar seu link de confirmação dentro de 30 minutos de recebimento de seus tokens de login, e os tokens expiraram.
Os usuários presos nessa situação parecem presos em um estado não confirmado. Como uma conta existente tem seu e-mail registrado, os usuários não podem criar uma nova conta com o mesmo endereço de e-mail. Além disso, eles não podem se conectar a uma conta que não esteja confirmada.
Os aplicativos que usam o serviço interno de confirmação de email dos Serviços de Aplicativo podem usar o método SDK do Cliente resendConfirmationEmail
para enviar um novo email com um novo link de confirmação para o usuário, permitindo que ele confirme sua conta e faça login. Chamar esse método resultará em um erro por qualquer aplicativo usando um fluxo de confirmação diferente de send a
confirmation email
.
Não existe um método muito específico para executar novamente uma função de confirmação personalizada. Em vez disso, o App Services tem um método para acionar uma nova execução de qualquer fluxo de trabalho atual de confirmação do usuário por e-mail/senha. Você pode executar de novo manualmente o fluxo de confirmação do usuário selecionado no momento usando a IU do App Services ou a App Services Admin API:
Para executar novamente o fluxo de trabalho de confirmação de um usuário na IU:
Selecione App Users no menu de navegação esquerdo.
Na aba Users , selecione o botão PENDING .
Localize o usuário na lista e clique nas reticências (
...
).Selecione a opção Run user confirmation no menu de contexto que aparece.
Selecione o botão Run User Confirmation na caixa de diálogo que aparece.
Se a operação for bem-sucedida, o banner na parte superior do console do administrador do App Services deverá exibir uma mensagem de confirmação. O User Status do usuário muda de Pending Confirmation para Pending User Login. Depois que o usuário fizer login, ele será movido automaticamente para a lista de usuários ativos.
Se a reexecução falhar ou os tokens do usuário expirarem novamente, você poderá reexecutar a função de confirmação quantas vezes forem necessárias.
Para executar novamente o fluxo de trabalho de confirmação de um usuário usando a API Admin, crie uma solicitação POST
no formato a seguir. Você deve especificar o ID do grupo, o ID do aplicativo e o endereço de e-mail.
curl --request POST \ --header 'Authorization: Bearer <access_token>' \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/user_registrations/by_email/<email>/run_confirm
Resumo
Para todos os provedores, exceto para autenticação de e-mail/senha, Os Serviços de Aplicativo criam automaticamente um objeto de usuário na primeira vez que um usuário se autentica.
Você pode fazer login em uma única conta com mais de um provedor usando os SDKs do Realm para vincular identidades.
O provedor de autenticação de e-mail/senha exige que os usuários criem uma conta na primeira vez que se conectarem ao seu aplicativo.
Os usuários de e-mail/senha devem ser confirmados manualmente por meio da IU do App Services ou da API Admin.
Os usuários detectados em um fluxo de trabalho incompleto de confirmação de e-mail/senha devem executar novamente a confirmação por meio da IU do App Services ou da API Admin.