Introducción
Atlas App Services manages authentication for your application's end users. App Services:
Utiliza reglas de acceso a datos basadas en roles para determinar permisos de lectura y escritura.
Asocia cada solicitud con un usuario autenticado
Evaluates permissions for every object included the request.
Mediante las cuentas de usuario, se pueden almacenar y acceder a los metadatos y a los datos personalizados de cada usuario.
Los usuarios inician sesión a través de proveedores de autenticación. Cada proveedor representa un método de autenticación específico.
App Services incluye proveedores integrados para casos de uso comunes, como Facebook y Google. Los proveedores personalizados permiten integrar cualquier sistema de autenticación externo.
El siguiente diagrama muestra cómo su aplicación cliente, Atlas App Services y los proveedores de autenticación interactúan para autenticar a los usuarios:

Conceptos
Authentication Providers
En App Services, un proveedor de autenticación es un servicio modular. Estos servicios proporcionan verificación de identidad y mantienen información sobre los usuarios de la aplicación.
Los usuarios se autentican proporcionando un conjunto de credenciales a un proveedor de autenticación. Con credenciales válidas, el proveedor devuelve una identidad única asociada al usuario. App Services los inicia sesión como... usuario activo.
App Services incluye proveedores de autenticación incorporados para los casos de uso más comunes. Esto incluye:
Puede configurar proveedores personalizados para integrar sistemas de autenticación externos.
JWT personalizado: el proveedor acepta tokens web JSON firmados por el sistema externo.
Función personalizada: el proveedor te permite definir la lógica de inicio de sesión personalizada en una función de Atlas.
Importante
Apps Require User Authentication
Cada aplicación debe tener al menos un proveedor de autenticación configurado y habilitado. Sin al menos un proveedor, ninguna aplicación cliente puede conectarse. Para saber cómo configurar y habilitar proveedores de autenticación, consulte: Proveedores de autenticación.
Cuentas de usuario
A user account represents a single, distinct user of your application. App Services creates the user when an authentication provider validates a unique identity. You can source user metadata, such as email or birthday, from authentication providers. You can associate each user with custom data.
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.
Identidades del proveedor de autenticación
App Services almacena metadatos de inicio de sesión de un usuario en una identidad del proveedor de autenticación. App Services utiliza estos metadatos para autenticar al usuario.
Upon first login with an authentication provider, App Services creates an identity object. Each object contains a unique ID, and provider-specific metadata about the user. On later logins, App Services refreshes the existing identity data.
Una sola cuenta de usuario puede tener más de una identidad. Los SDK de Realm te permiten 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 obtener más información, consulta la documentación sobre la vinculación de identidades para tu SDK del cliente.
Usuario activo
En los SDKs de Realm, puedes iniciar sesión con más de un usuario, pero solo una cuenta puede estar activa en un momento dado. El usuario activo es una cuenta de usuario asociada a una solicitud de aplicación.
App Services ejecuta las solicitudes de las aplicaciones cliente como el usuario activo. App Services reemplaza las referencias dinámicas al usuario, por ejemplo: %%user
en una expresión JSON - con el usuario activo.
Puedes usar un usuario activo específico o el usuario del sistema para ejecutar Funciones.
System User
El usuario del sistema es un usuario interno con privilegios avanzados. Este usuario ignora todas las reglas. Puede ejecutar funciones como usuario del sistema en lugar de que el usuario realice una solicitud. Los disparadores se ejecutan en el contexto del usuario del sistema.
El usuario del sistema es útil para tareas administrativas. Esto incluye:
Tareas que necesitan eludir reglas y consultas
Tareas que necesitan acceso irrestricto a las operaciones CRUD de MongoDB y de agregación.
Importante
Advertencia de seguridad
Las reglas no se aplican al usuario del sistema. Las funciones que se ejecutan como usuario del sistema pueden representar una vulnerabilidad de seguridad. Asegúrese de no exponer estas funciones a usuarios no autorizados.
For example, use function context to check if the active user can call the system function. Define a condition to determine whether the user has the appropriate permissions, e.g.:
exports = function() { const activeUser = context.user const adminUserId = context.values.get("adminUserId"); if(activeUser.id == adminUserId) { // The user can only execute code here if they're an admin. } else { throw Error("This user is not allowed to execute the system function") } }
Sesiones de usuario
A user session represents a period of time when an authenticated user can interact with your app. User sessions begin when a user logs in through an SDK or authenticates over HTTPS. A session ends after 30 minutes unless an SDK or API request refreshes the session.
Para aprender a crear, trabajar y revocar sesiones de usuario, consulte Gestionar sesiones de usuario.
Resumen
App Services supports authentication and user accounts through a variety of authentication providers. You can associate users with more than one authentication provider.
Servicios de aplicación admite tener más de un usuario con sesión iniciada al mismo tiempo. Solo hay un usuario activo a la vez.
El usuario del sistema es un usuario especial que ignora todas las reglas.
Los SDK de Realm administran los tokens de acceso y actualización que componen una sesión de usuario.