Overview
Atlas App Services ofrece varios proveedores de autenticación para iniciar sesión en la aplicación. Para la mayoría de los proveedores, App Services crea automáticamente una cuenta de usuario la primera vez que un usuario se autentica a través del proveedor. La única excepción es Autenticación de usuario por correo electrónico/contraseña, que requiere registrar y confirmar un usuario antes de que éste pueda autenticarse.
Tip
Apple Account Deletion Requirements
Apple exige que las aplicaciones distribuidas a través de la App StoreDebe ofrecer a cualquier usuario que cree una cuenta la opción de eliminarla. Ya sea que la aplicación utilice un método de autenticación que requiera el registro manual del usuario, como la autenticación por correo electrónico y contraseña, o uno que lo cree automáticamente, como Iniciar sesión con Apple, una aplicación distribuida a través de la App Store debe implementar la eliminación de cuentas de usuario.
Identidad
Cuando inicia sesión por primera vez con un proveedor de autenticación, App Services crea un objeto de usuario que contiene un ID de identidad único y metadatos específicos del proveedor sobre el usuario.
Enlace a cuentas existentes
Un único objeto de usuario puede tener más de una identidad. Puedes usar los SDK de Realm para vincular identidades a cuentas de usuario existentes. Esto permite a los usuarios iniciar sesión en una sola cuenta con más de un proveedor. Para más información, consulta la documentación sobre vinculación de identidades para tu SDK preferido:
Crear un usuario con correo electrónico y contraseña
Cuando uses la autenticación de usuario por correo electrónico/contraseña, primero debes registrar un usuario, lo que crea el objeto de usuario. Puedes registrar usuarios en tu aplicación cliente usando el SDK de tu elección o puedes crear manualmente usuarios por correo electrónico/contraseña.
Después de registrar al usuario, debe confirmarlo antes de que pueda autenticarse.
Crear un usuario de correo electrónico/contraseña en el SDK
Cada SDK ofrece una API que permite registrar un usuario con correo electrónico y contraseña. Tras registrarlo, debe confirmarlo para que pueda autenticarse. Para ver ejemplos de código que muestran cómo administrar usuarios con correo electrónico y contraseña en la aplicación cliente, consulte la documentación de los SDK de Realm:
Crear usuarios con correo electrónico y contraseña - SDK de C++
Crear usuarios de correo electrónico/contraseña - Flutter SDK
Crear usuarios con correo electrónico y contraseña - SDK de Java
Crear usuarios con correo electrónico y contraseña - SDK de Kotlin
Crear usuarios con correo electrónico y contraseña - SDK .NET
Crear usuarios con correo electrónico y contraseña - SDK de React Native
Crear usuarios con correo electrónico y contraseña - Swift SDK
Crear usuarios con correo electrónico y contraseña - SDK web
Crear manualmente un usuario con correo electrónico y contraseña
Puedes crear un nuevo usuario de correo electrónico/contraseña desde la Interfaz de usuario Realm, la CLI o la API de administración. Los usuarios creados manualmente omiten cualquier flujo de confirmación de usuario configurado.
Tip
La creación manual de un usuario puede ser útil para probar y depurar su aplicación en desarrollo.
Seleccionar App Users desde el menú de navegación de la izquierda.
Haga clic en el botón Add New User.
Especifique una dirección de correo electrónico y una contraseña para el nuevo usuario.
Nota
El proveedor de autenticación de correo electrónico/contraseña requiere que las contraseñas tengan entre 6 y 128 caracteres.
Haga clic en Create.
Nota
También puedes crear claves API que las aplicaciones usen para conectarse a tu app. Aunque las claves API no están asociadas a un solo usuario, la pestaña Users las muestra. Para obtener más información sobre las claves API, consulta Autenticación de claves API.
Para crear un nuevo usuario de correo electrónico/contraseña, llame al appservices users create y especifique --type=email. La CLI le solicitará su ID de aplicación, así como el correo electrónico y la contraseña del nuevo usuario.
appservices users create --type=email
También puedes especificar los argumentos cuando llamas al programa:
appservices users create --type=email \ --app=<Your App ID> \ --email=<User's Email Address> \ --password=<User's Password>
Nota
El proveedor de autenticación de correo electrónico/contraseña requiere que las contraseñas tengan entre 6 y 128 caracteres.
Para crear un nuevo usuario de correo electrónico/contraseña, cree una solicitud POST con el siguiente formato. Debe especificar las credenciales del usuario en el cuerpo de la solicitud y el ID de grupo y de la aplicación en la URL de la solicitud.
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
Nota
El proveedor de autenticación de correo electrónico/contraseña requiere que las contraseñas tengan entre 6 y 128 caracteres.
Confirmar un usuario
Debe confirmar la dirección de correo electrónico de los nuevos usuarios de correo electrónico/contraseña antes de que puedan iniciar sesión en App Services. El método exacto de confirmación depende de la configuración de su proveedor, pero normalmente implica un protocolo de enlace entre el usuario y su aplicación. Puede obtener más información sobre la confirmación de usuarios de correo electrónico/contraseña en Confirmación de correo electrónico/contraseña.
Sometimes, users are unable to complete the confirmation process. For example:
An overzealous spam filter might block App Services email confirmation emails.
Un bloqueador web o proxy podría impedir que un usuario active la función SDK del cliente
confirmUsera través de la aplicación cliente.An implementation error could cause the client application's user confirmation page to fail for specific use cases.
Para ayudarte a resolver casos como este, puedes confirmar usuarios manualmente usando la Interfaz de usuario Realm o la API de administrador:
Para confirmar un usuario con correo electrónico/contraseña pendiente en la interfaz de usuario:
Seleccione App Users en el menú de navegación de la izquierda.
En la pestaña Users, seleccione el botón PENDING.
Busca al usuario en la lista y haz clic en la elipsis (
...).Seleccione la opción Confirm User del menú contextual que aparece.
Si la operación se realiza correctamente, el banner en la parte superior de la consola de administración de App Services debería mostrar un mensaje de confirmación. El User Status del usuario cambia de Pending Confirmation a Pending User Login.
Un usuario confirmado manualmente continúa apareciendo en la lista de usuarios PENDING hasta que inicia sesión en su aplicación por primera vez, momento en el cual App Services lo mueve a la lista de usuarios confirmados y cambia su User Status a confirmed.
Para confirmar un usuario con correo electrónico/contraseña pendiente mediante la API de administración, cree una solicitud POST con el siguiente formato. Debe especificar el ID del grupo, el ID de la aplicación y la dirección de correo electrónico.
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
Volver a ejecutar el flujo de trabajo de confirmación de usuario
Algunas circunstancias pueden provocar flujos de trabajo de confirmación de usuario de correo electrónico/contraseña incompletos:
Un correo electrónico es captado por un filtro de spam, no se entrega debido a un bug o es borrado por accidente por un usuario potencial de aplicación Services.
Una función de confirmación personalizada no puede comunicarse con un usuario no confirmado debido a un error o descuido.
Un usuario no confirmado olvidó visitar su enlace de confirmación dentro de los 30 minutos posteriores a la recepción de sus tokens y estos caducaron.
Los usuarios atrapados en esta situación aparecen atascados en un estado no confirmado. Dado que una cuenta existente tiene su correo electrónico registrado, los usuarios no pueden crear una nueva cuenta con la misma dirección de correo electrónico. Además, no pueden iniciar sesión en una cuenta que no esté confirmada.
Applications that use the built-in email confirmation service of App Services can use the resendConfirmationEmail Client SDK method to send a new email with a new confirmation link to the user, allowing them to confirm their account and log in. Calling this method will result in an error by any application using a confirmation flow other than send a
confirmation email.
No existe un método específico para volver a ejecutar una función de confirmación personalizada. En su lugar, App Services cuenta con un método para activar la repetición del flujo de trabajo de confirmación de usuario de correo electrónico/contraseña actual. Puede volver a ejecutar manualmente el flujo de confirmación de usuario seleccionado mediante la interfaz de usuario de App Services o la API de administración de App Services:
Para volver a ejecutar el flujo de trabajo de confirmación para un usuario en la Interfaz de Usuario:
Seleccione App Users en el menú de navegación de la izquierda.
En la pestaña Users, seleccione el botón PENDING.
Busca al usuario en la lista y haz clic en la elipsis (
...).Seleccione la opción Run user confirmation del menú contextual que aparece.
Seleccione el botón Run User Confirmation en el cuadro de diálogo que aparece.
Si la operación es exitosa, el banner en la parte superior de la consola administrativa de Servicios de aplicación debería mostrar un mensaje de confirmación. El User Status del usuario cambia de Pending Confirmation a Pending User Login. Una vez que el usuario inicie sesión, se trasladará automáticamente a la lista de usuarios activos.
Si la repetición falla o los tokens del usuario caducan nuevamente, puede volver a ejecutar la función de confirmación tantas veces como sea necesario.
Para volver a ejecutar el flujo de confirmación para un usuario utilizando la API de administración, crea una solicitud POST en el siguiente formato. Debe especificar el ID de grupo, el ID de la aplicación y la dirección de correo electrónico.
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
Resumen
Para todos los proveedores, excepto para la autenticación por correo electrónico y contraseña, App Services crea automáticamente un objeto de usuario la primera vez que un usuario se autentica.
Puedes iniciar sesión en una sola cuenta con más de un proveedor utilizando los SDK de Realm para vincular identidades.
El proveedor de autenticación Email/Password requiere que los usuarios se creen una cuenta la primera vez que se conecten a tu aplicación.
Los usuarios con correo electrónico y contraseña deben confirmarse manualmente a través de la interfaz de usuario de App Services o la API de administración.
Los usuarios atrapados en un flujo de trabajo de confirmación de correo electrónico/contraseña incompleto deben volver a ejecutar la confirmación a través de la interfaz de usuario de App Services o la API de administración.