Overview
Atlas App Connections es la plataforma OAuth 2.1 de MongoDB Atlas que permite que su aplicación actúe en nombre de los usuarios de Atlas mediante el acceso delegado por el usuario. Cuando un usuario autoriza su aplicación, esta recibe un conjunto de tokens que puede usar para llamar a la API de administración de Atlas con los mismos permisos que el usuario tiene en sus organizaciones de Atlas. Para obtener una descripción general de la plataforma y cómo las organizaciones administran las aplicaciones conectadas, consulte la descripción general de Atlas App Connections.
Esta guía abarca la integración completa:
Iniciando el flujo de código de autorización OAuth 2.1 con clave de prueba para intercambio de código (PKCE).
Intercambio de códigos de autorización por tokens y actualización de tokens.
Uso de la API de administración de Atlas con acceso delegado
Comprender el alcance y los límites del acceso delegado
Configurar el acceso a la red y administrar los usuarios de la base de datos.
Gestión de revocaciones y errores
Conceptos clave
- Acceso delegado
- Tu aplicación actúa en nombre de un usuario de Atlas, no como ella misma. Los roles de organización y los permisos de proyecto del usuario determinan qué operaciones se ejecutan correctamente. Si el usuario no puede realizar una acción, tu aplicación tampoco podrá realizarla en su nombre.
- Configuración de delegación de la organización
- Cada organización de Atlas controla si se permiten las conexiones con aplicaciones de terceros. Incluso cuando un usuario autoriza su aplicación, las operaciones con una organización específica solo se realizarán correctamente si dicha organización tiene habilitadas las conexiones con aplicaciones de terceros. La delegación está deshabilitada de forma predeterminada para las organizaciones existentes. Dado que un usuario puede pertenecer a varias organizaciones, una sola autorización puede tener éxito en algunas de ellas y fallar en otras, dependiendo de la configuración de delegación de cada organización.
- Clave de prueba para intercambio de códigos (PKCE)
- Una extensión de seguridad para el flujo de código de autorización OAuth 2.1 que protege contra ataques de interceptación de código de autorización. PKCE requiere que el cliente genere un
code_verifieraleatorio, derive uncode_challengea partir de él y envíe el desafío con la solicitud de autorización. Posteriormente, el cliente demuestra que originó la solicitud enviando elcode_verifieroriginal al intercambiar el código de autorización por tokens.
Requisitos previos
Antes de comenzar, confirme que tiene:
Estatus de socio de diseño aprobado.
Una aplicación OAuth registrada. MongoDB le proporciona un
client_iddurante el proceso de incorporación. Los clientes confidenciales (aplicaciones web del servidor) también reciben unclient_secret. Los clientes públicos (aplicaciones nativas y de una sola página) se autentican únicamente con elclient_idy no reciben un secreto.Un URI de redireccionamiento registrado en su aplicación OAuth. Los URI de redireccionamiento deben usar HTTPS, excepto las direcciones de bucle invertido (
localhost,127.0.0.1,::1), que pueden usar HTTP en cualquier puerto. Los URI de redireccionamiento no deben contener fragmentos (#).Familiaridad con el flujo de código de autorización OAuth 2.1 y la clave de prueba para el intercambio de códigos (PKCE).
Pautas de marca
Si necesita elementos de marca de MongoDB para su integración, como el logotipo de MongoDB, consulte la página de Recursos de marca de MongoDB.
URL base
Desarrolle e implemente su integración en producción. Atlas no proporciona entornos de socios independientes.
Todos los puntos finales de OAuth y API utilizan dos URL base de producción:
Base | URL |
|---|---|
Base de autorización ( |
|
Base de nube ( |
|
A lo largo de esta guía, estos nombres representan las URL mencionadas anteriormente. Por ejemplo, el punto final del token es {OAUTH_BASE}/tokens.
El punto final de autorización donde los usuarios inician sesión y otorgan acceso se encuentra alojado en la nube ({CLOUD_BASE}/oauth/authorize), mientras que el token y otros puntos finales de OAuth se encuentran alojados en la base de autorización ({OAUTH_BASE}). Esta separación es intencional. La API de administración de Atlas se encuentra alojada en la nube ({CLOUD_BASE}/api/atlas).
Tip
Descubra los puntos finales automáticamente
Atlas publica los metadatos del servidor OAuth 2.1 en {OAUTH_BASE}/.well-known/oauth-authorization-server. Muchas bibliotecas cliente y SDK de OAuth pueden leer este punto final para descubrir y configurar automáticamente la autorización, el token y los puntos finales relacionados, lo que evita tener que codificar las URL de los puntos finales.
Flujo de código de autorización OAuth 2.1 con PKCE
Atlas App Connections utiliza el flujo de código de autorización OAuth 2.1 con clave de prueba para intercambio de códigos (PKCE). Este flujo requiere la interacción del usuario: este inicia sesión en Atlas y aprueba los permisos que solicita su aplicación.
Descripción general del flujo

El proceso se desarrolla en tres etapas:
Su aplicación genera un verificador y un desafío de código PKCE, redirige al usuario al punto final de autorización de Atlas y el usuario aprueba el acceso en la pantalla de consentimiento.
Tu aplicación intercambia el código de autorización por un token de acceso y un token de actualización.
Tu aplicación utiliza el token de acceso para llamar a la API de administración de Atlas y el token de actualización para obtener nuevos tokens de acceso antes de que caduquen.
Paso 1: Solicitud de autorización
Dirija al usuario al punto final de autorización de Atlas (https://cloud.mongodb.com/oauth/authorize) con los siguientes parámetros. Usted controla cómo su aplicación presenta este punto final: una redirección dentro de la ventana existente, una nueva ventana del navegador o una ventana emergente.
Parameter | Requerido | Descripción |
|---|---|---|
| Requerido | Debe ser |
| Requerido | El ID de cliente de su aplicación, proporcionado por MongoDB durante el proceso de incorporación. |
| Requerido | La URI HTTPS a la que Atlas envía el código de autorización tras la aprobación del usuario. Debe coincidir con una URI registrada en su aplicación OAuth. |
| Requerido | El desafío del código PKCE se deriva de su |
| Requerido | Debe ser |
| Requerido | Un valor opaco que tu aplicación utiliza para mantener el estado entre la solicitud de autorización y la devolución de llamada. Úsalo para protegerte contra ataques de falsificación de solicitudes entre sitios (CSRF) y para restaurar el estado de la aplicación después de la redirección. |
Envíe únicamente los parámetros de la tabla anterior. El punto final de autorización no requiere un parámetro resource, así que omítalo en la solicitud de autorización, aunque la especificación OAuth 2.1 lo defina.
El siguiente ejemplo divide la URL en varias líneas para facilitar su lectura. Envíela como una sola línea:
https://cloud.mongodb.com/oauth/authorize ?response_type=code &client_id=<YOUR_CLIENT_ID> &redirect_uri=https://yourapp.example.com/callback &code_challenge=<CODE_CHALLENGE> &code_challenge_method=S256 &state=<RANDOM_STATE_VALUE>
Pantalla de consentimiento
Después de que el usuario inicia sesión en Atlas, ve una pantalla de consentimiento que enumera los permisos que solicita su aplicación:
Sepa a qué recursos de Atlas tiene acceso.
Actúa en tu nombre en las organizaciones Atlas.
La pantalla de consentimiento también muestra el siguiente aviso al usuario:
Al autorizar una aplicación:
Le estás permitiendo acceder y realizar acciones en tus recursos de MongoDB Atlas, tal como lo harías tú, utilizando los permisos de tu cuenta.
Puedes revocar el acceso en cualquier momento.
Si el usuario hace clic en Authorize, Atlas lo redirige a su redirect_uri con una autorización code, el valor state que proporcionó y un parámetro iss. Si el usuario hace clic en Decline, Atlas lo redirige con un parámetro error.
Su controlador de devolución de llamada debe:
Verifique que
statecoincida con el valor que envió en la solicitud de autorización para prevenir ataques CSRF.Verifique que
isscoincida con la base de autorización (https://authorize.mongodb.com) para evitar ataques de confusión de servidores de autorización.Verifique si existe un parámetro
errory gestione la denegación de forma adecuada antes de intentar utilizar elcode.
Los códigos de autorización son de un solo uso y caducan en 10 minutos. Cámbielos lo antes posible.
Paso 2: Intercambio de tokens
Intercambia el código de autorización por tokens realizando una solicitud POST al punto final de tokens de Atlas:
POST https://authorize.mongodb.com/tokens
Body Parameter | Requerido | Descripción |
|---|---|---|
| Requerido | Debe ser |
| Requerido | El código de autorización recibido de la redirección. |
| Requerido | La misma URI de redireccionamiento utilizada en la solicitud de autorización. |
| Requerido | La cadena de verificación de código PKCE original. |
| Requerido | El ID de cliente de su aplicación. |
| Condicional | Secreto de cliente de su aplicación. Solo se requiere para clientes confidenciales (aplicaciones web del servidor). Los clientes públicos (aplicaciones nativas y de una sola página) se autentican solo con |
Ejemplo de solicitud:
curl --request POST \ --url https://authorize.mongodb.com/tokens \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data 'grant_type=authorization_code' \ --data 'code=<AUTHORIZATION_CODE>' \ --data 'code_verifier=<CODE_VERIFIER>' \ --data 'redirect_uri=https://yourapp.example.com/callback' \ --data 'client_id=<YOUR_CLIENT_ID>' \ --data 'client_secret=<YOUR_CLIENT_SECRET>'
La respuesta incluye:
Campo | Tipo | Descripción |
|---|---|---|
| string | Token de portador para autenticar las solicitudes de la API de administración de Atlas. De corta duración. Se utiliza el valor |
| string | Token utilizado para obtener un nuevo token de acceso cuando el actual caduque. Guárdelo de forma segura. |
| string | Siempre |
| entero | Duración del token de acceso en segundos. Actualmente |
Paso 3: Actualización de tokens de acceso
Los tokens de acceso tienen una duración limitada (actualmente 10 minutos). Antes de realizar llamadas a la API de administración de Atlas después de su vencimiento, intercambie su token de actualización por un nuevo token de acceso:
curl --request POST \ --url https://authorize.mongodb.com/tokens \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data 'grant_type=refresh_token' \ --data 'refresh_token=<YOUR_REFRESH_TOKEN>' \ --data 'client_id=<YOUR_CLIENT_ID>' \ --data 'client_secret=<YOUR_CLIENT_SECRET>'
La respuesta siempre devuelve un nuevo access_token y un nuevo refresh_token. El token de actualización anterior se invalida inmediatamente. Reemplace siempre ambos valores almacenados.
Importante
Los tokens de actualización caducan tras 7 días de inactividad (tiempo de inactividad). Independientemente de la actividad, los usuarios deben volver a autenticarse cada 30 días (tiempo de vida máximo). Los administradores de la organización pueden configurar límites más estrictos. Cuando un token de actualización caduca, el usuario debe volver a autorizar la aplicación. Diseñe su aplicación para gestionar esto correctamente, solicitando al usuario que se vuelva a conectar.
Uso de la API de administración de Atlas con acceso delegado
Después de obtener un token de acceso, úselo para realizar solicitudes a la API de administración de Atlas incluyéndolo en el encabezado Authorization:
Authorization: Bearer <ACCESS_TOKEN>
Ejemplo de solicitud:
curl --request GET \ --url 'https://cloud.mongodb.com/api/atlas/v2/orgs' \ --header 'Authorization: Bearer <ACCESS_TOKEN>' \ --header 'Accept: application/vnd.atlas.2023-01-01+json'
Tu aplicación funciona con los mismos permisos que el usuario que la autoriza tiene en el momento de cada solicitud. Si los roles del usuario cambian después de la autorización, los permisos efectivos de tu aplicación cambian en consecuencia.
Configuración de permisos y delegación de la organización
Las operaciones contra una organización específica de Atlas solo tienen éxito cuando se cumplen las dos condiciones siguientes:
La organización tiene habilitadas las conexiones con aplicaciones de terceros. Los propietarios de la organización configuran este ajuste en Organization Settings > App Connections. Para obtener más información sobre estos ajustes, consulte la descripción general de las conexiones con aplicaciones de Atlas.
El usuario que autoriza la operación tiene el rol requerido para dicha operación dentro de esa organización o proyecto.
Si la delegación está deshabilitada para una organización después de que un usuario ya haya autorizado su aplicación, las llamadas a la API dirigidas a esa organización devuelven una respuesta 403 Forbidden.
Una autorización completada no garantiza que las llamadas a la API de administración de Atlas tengan éxito. Atlas evalúa la configuración de delegación de la organización y los roles del usuario en cada solicitud, no solo en el momento de la autorización, por lo que el flujo de OAuth y la pantalla de consentimiento pueden completarse correctamente aunque las solicitudes sigan devolviendo 403 Forbidden.
Verificación del acceso a la organización
Llama a GET /api/atlas/v2/orgs después de la autorización para determinar con qué organizaciones puede interactuar tu aplicación. Atlas solo devuelve las organizaciones que permiten conexiones de aplicaciones de terceros, por lo que una lista vacía significa que ninguna organización a la que pertenezca el usuario las ha habilitado.
Una lista vacía es un paso de configuración, no un error. Indique al usuario que solicite al propietario de la organización que habilite las conexiones de la aplicación para la organización y rediríjalo a la descripción general de las conexiones de la aplicación Atlas. Evite presentar la lista vacía como un error de autorización o autenticación, ya que las credenciales y el consentimiento del usuario son válidos.
Dado que el acceso delegado conlleva los permisos del usuario que lo autoriza, las operaciones de escritura también dependen de los roles de dicho usuario. Las operaciones de aprovisionamiento comunes requieren los siguientes roles:
Para crear un proyecto, el usuario necesita el rol
Organization OwneroOrganization Project Creator.Para crear un clúster, el usuario necesita el rol
Project OwneroProject Cluster Creatoren el proyecto de destino.
Un usuario con el rol Organization Member puede leer los recursos a los que tiene acceso, pero las operaciones de escritura devuelven 403 Forbidden. Especifique el rol requerido en el manejo de errores para que el usuario pueda solicitar el rol correcto. Para obtener más información sobre todos los roles disponibles, consulte Roles de usuario de Atlas.
Cuando tu aplicación crea una organización en nombre de un usuario, esta aún no permite conexiones con aplicaciones de terceros. Habilitarlas es un paso manual: contacta con MongoDB para que la organización se incluya en la lista de aplicaciones permitidas. Hasta entonces, tu aplicación no podrá interactuar con la organización, aunque el usuario la haya autorizado.
Puntos finales bloqueados y filtrados
El acceso delegado llega a la mayoría de los puntos finales de la API de administración de Atlas, pero Atlas trata algunos puntos finales de manera diferente, independientemente de los permisos del usuario que autoriza el acceso.
Los puntos de conexión bloqueados devuelven una respuesta 403 Forbidden incluso cuando el usuario que autoriza la operación tiene un rol que normalmente la permitiría. Atlas bloquea los puntos de conexión de configuración de federación, que leen y modifican la configuración de federación e inicio de sesión único (SSO). La configuración del proveedor de identidad se comparte entre todas las organizaciones de una federación, por lo que el acceso delegado a ella podría exponer o interrumpir el funcionamiento de organizaciones que nunca autorizaron su aplicación.
Los puntos finales filtrados aceptan la llamada, pero restringen lo que pueden ver o modificar, según las organizaciones que hayan dado su consentimiento para las conexiones con aplicaciones de terceros. Tu aplicación solo puede acceder a esas organizaciones, y Atlas bloquea el acceso a los recursos de las organizaciones que no hayan dado su consentimiento.
Los puntos de acceso que abarcan varias organizaciones, como aquellos que muestran todas las organizaciones, proyectos o clústeres a los que el usuario puede acceder, solo devuelven las organizaciones que permiten conexiones con aplicaciones de terceros. Para las solicitudes que crean recursos, Atlas valida la organización de destino y rechaza la llamada si dicha organización no ha dado su consentimiento.
El propietario de la organización opta por participar desde Organization Settings > App Connections. Para obtener más información, consulte Permisos y configuración de delegación de la organización.
Con el tiempo, Atlas podrá bloquear o filtrar puntos finales adicionales para el acceso delegado.
Plano de control versus plano de datos
La API de administración de Atlas proporciona acceso al plano de control: permite crear, configurar y administrar recursos de Atlas como organizaciones, proyectos, clústeres y usuarios. No proporciona acceso directo al plano de datos (lectura o escritura de documentos en las bases de datos).
Para acceder a los datos en los clústeres de Atlas, obtenga la cadena de conexión del clúster a través de la API de administración de Atlas y conéctese utilizando un usuario de base de datos y el controlador o la consola de MongoDB. La cadena de conexión y las credenciales de la base de datos son independientes del token de portador de OAuth.
La revocación afecta de forma diferente al acceso al plano de control y al plano de datos. Consulte Efectos en el plano de datos.
Acceso continuo con cuentas de servicio
El acceso delegado vincula los tokens de tu aplicación al usuario que los autoriza. Si los roles de ese usuario cambian, si se le da de baja o si no se vuelve a autenticar dentro del período de validez del token de actualización, tu aplicación pierde los permisos que necesita, aunque la integración siga activa.
Si su integración requiere acceso continuo a la API de administración de Atlas que no dependa de que un usuario específico permanezca autorizado, por ejemplo, para redimensionar clústeres o cambiar regiones de implementación de forma continua, cree una cuenta de servicio para la organización y el proyecto del cliente en lugar de depender del acceso delegado para ese flujo de trabajo.
Una cuenta de servicio se autentica mediante el flujo de credenciales de cliente OAuth 2.0 en lugar del flujo de código de autorización, por lo que no depende de la sesión activa del usuario. Cada cuenta de servicio pertenece a una organización y se le puede otorgar acceso a cualquier número de proyectos dentro de esa organización. Los roles de Atlas limitan las operaciones que pueden autenticar los tokens de acceso de la cuenta de servicio, del mismo modo que los roles limitan a un usuario. Una cuenta de servicio no puede iniciar sesión en la interfaz de usuario de Atlas y, al igual que el acceso delegado, no proporciona acceso al plano de datos.
Para crear una cuenta de servicio para la organización de un cliente, consulte la sección "Descripción general de las cuentas de servicio" y "Crear una cuenta de servicio para una organización".
Aprovisionamiento de recursos para un usuario
La mayoría de las integraciones con socios proporcionan recursos de Atlas en nombre del usuario que autoriza. La siguiente secuencia describe el proceso habitual desde una conexión autorizada hasta una cadena de conexión utilizable. Cada solicitud utiliza el token de portador del paso 2: Intercambio de tokens.
Identifique la organización y el proyecto objetivo.
Llame a GET /api/atlas/v2/orgs para ver la lista de organizaciones a las que puede acceder el usuario que autoriza el acceso, y luego a GET /api/atlas/v2/orgs/{orgId}/groups para ver la lista de proyectos dentro de una organización.
Solo las organizaciones que permiten conexiones con aplicaciones de terceros aparecen como destinos utilizables. Para obtener más información, consulte Permisos y configuración de delegación de la organización.
Crea un proyecto, si tu integración lo requiere.
Llama a POST /api/atlas/v2/groups con el nombre del proyecto y el orgId de la organización de destino. Atlas valida el orgId en el cuerpo de la solicitud y devuelve 403 Forbidden cuando dicha organización no permite conexiones de aplicaciones de terceros.
Cree un usuario de base de datos.
Llama a POST /api/atlas/v2/groups/{groupId}/databaseUsers para crear la identidad que tu aplicación utiliza para acceder al plano de datos. Para obtener información sobre roles y ciclo de vida, consulta Ciclo de vida del usuario de la base de datos.
Configurar el acceso a la red.
Agregue las direcciones IP salientes de su aplicación a la lista de acceso del proyecto o configure una opción de conectividad privada. Para obtener más información, consulte Configuración de red y Listado de direcciones IP permitidas.
Recupera la cadena de conexión.
Lee el campo connectionStrings del recurso del clúster y, a continuación, conéctate con un controlador de MongoDB usando el usuario de base de datos que creaste. La cadena de conexión y las credenciales de la base de datos son independientes del token de portador de OAuth.
Para consultar los esquemas completos de solicitud y respuesta para cada punto final, consulte la especificación de la API de administración de Atlas.
Configuración de red y lista blanca de direcciones IP.
La API de administración de Atlas solo está disponible a través de internet pública. No está disponible mediante interconexión de nube privada virtual (VPC) ni puntos de acceso privados. Su aplicación debe poder acceder a cloud.mongodb.com en el puerto 443.
Nota
El acceso delegado a la API de administración de Atlas omite cualquier restricción de la lista de acceso a la API del plano de control (lista de direcciones IP permitidas para la clave API) que el cliente haya configurado. El acceso se rige por los permisos del usuario que autoriza y la configuración de delegación de la organización, no por las restricciones de IP del plano de control. Para obtener más información, consulte Limitaciones.
Para acceder al plano de datos, es posible que el clúster de Atlas al que se conecta tenga configurada una lista de acceso IP. Las direcciones IP de salida de su aplicación deben agregarse a la lista de acceso IP del clúster, o bien debe configurar el emparejamiento de red o un punto final privado adecuado para su implementación.
Patrones de conectividad en la versión inicial:
Su aplicación es responsable de configurar la lista de direcciones IP permitidas para el acceso al plano de datos. La plataforma Atlas App Connections no gestiona esto automáticamente.
Para cada clúster al que su aplicación acceda o proporcione direcciones IP de salida o rangos de enrutamiento entre dominios sin clases (CIDR) a la lista de acceso IP del clúster mediante el punto final
POST /api/atlas/v2/groups/{groupId}/accessList.Nunca exponga el plano de datos a internet público. Restrinja siempre el acceso al plano de datos mediante listas de control de acceso IP o conexiones privadas, como el intercambio de redes o los puntos finales privados.
Ciclo de vida del usuario de la base de datos
Es posible que su aplicación necesite crear y administrar usuarios de base de datos al aprovisionar clústeres de Atlas en nombre de los usuarios. Los siguientes patrones son compatibles en la versión inicial.
Creación de usuarios de base de datos
Cree usuarios de base de datos a través del punto final de la API de administración de Atlas POST /api/atlas/v2/groups/{groupId}/databaseUsers utilizando el token de portador del usuario que autoriza. El usuario debe tener un rol de proyecto que le permita administrar usuarios de la base de datos.
Prácticas recomendadas
No superes el límite de usuarios dela base de datos. Atlas impone un límite predeterminado de 100 usuarios por proyecto. Reutiliza los usuarios existentes siempre que sea posible, en lugar de crear uno nuevo para cada operación, y desactiva los usuarios que ya no necesites para evitar alcanzar el límite.
Utilice roles con ámbito definido. Cree usuarios de base de datos con los roles mínimos necesarios para su caso de uso, en lugar de
atlasAdmin.Deshabilita los usuarios cuando ya no sean necesarios. Cuando un usuario revoque el acceso a tu aplicación, elimina los usuarios de la base de datos que tu aplicación haya creado en su nombre. Atlas no elimina automáticamente los usuarios de la base de datos cuando se revoca el acceso.
Rote las credenciales según un cronograma definido. Si su aplicación almacena contraseñas de usuarios de la base de datos, rótelas periódicamente utilizando el punto final
PATCH /api/atlas/v2/groups/{groupId}/databaseUsers/ {databaseName}/{username}.
Importante
Atlas no elimina automáticamente los usuarios de la base de datos ni otros recursos creados por tu aplicación cuando un usuario revoca su acceso. Tu aplicación es responsable de eliminar los recursos que creó. Si no se desactivan los usuarios de la base de datos, las credenciales permanecen activas en la cuenta de Atlas del usuario después de que este desconecte tu aplicación. Para obtener más información, consulta la sección Limitaciones.
Si Atlas rota las credenciales de un recurso aprovisionado por tu aplicación, como la contraseña de un usuario de base de datos, puede notificar a tu aplicación mediante un webhook opcional, en lugar de requerir que actualices las credenciales manualmente. Esto no está relacionado con la rotación de tu token OAuth client_secret; para ello, consulta Almacenamiento de tokens y secretos. Para implementar el webhook,consulta Implementar el webhook de rotación de credenciales.
Mejores prácticas de seguridad
Esta sección describe los requisitos mínimos de seguridad para el manejo de credenciales e información confidencial en su integración. Estas prácticas reducen el impacto de un incidente de seguridad y son obligatorias para los socios de diseño.
Cifrado de credenciales en reposo
Su aplicación maneja varias categorías de información confidencial que debe estar cifrada en reposo:
Cadenas de conexión. Las cadenas de conexión de Atlas contienen credenciales integradas o usuarios de bases de datos de referencia. Cifre las cadenas de conexión almacenadas mediante el Estándar de Cifrado Avanzado (AES)-256 o un método de cifrado equivalente. No almacene cadenas de conexión en texto plano en archivos de configuración, variables de entorno ni bases de datos.
Tokens OAuth. Los tokens de actualización son credenciales de larga duración. Guárdelos en un administrador de secretos cifrado (por ejemplo, HashiCorp Vault, Amazon Web Services (AWS) Secrets Manager o Azure Key Vault). No almacene los tokens de actualización en la base de datos de su aplicación sin cifrarlos.
Secretos de cliente. Tu
client_secretequivale a una contraseña. Guárdala en un gestor de secretos y cámbiala si sospechas que ha sido expuesta.
Tip
Prefiero la autenticación sin clave secreta.
Atlas admite la autenticación sin clave secreta mediante PKCE, lo que elimina por completo la necesidad de gestionar un client_secret. Si su tipo de cliente lo permite, utilice la autenticación sin clave secreta como la opción más segura, en lugar de aprovisionar y almacenar una clave secreta de cliente.
Manejo de la cadena de conexión
Cuando su aplicación recupera cadenas de conexión de la API de administración de Atlas en nombre de un usuario:
Siempre que sea posible, recupere las cadenas de conexión en el momento en que las necesite, en lugar de almacenarlas a largo plazo.
Si su aplicación debe conservar una cadena de conexión, almacene solo lo necesario (por ejemplo, el nombre de host y el puerto) por separado de las credenciales.
No registre las cadenas de conexión ni las incluya en los mensajes de error o en los rastreos de pila.
Almacenamiento de tokens y secretos
No incluyas tokens ni secretos en el control de versiones.
No registre tokens de acceso, tokens de actualización ni secretos de cliente. Si su aplicación registra las solicitudes de la API de administración de Atlas para depuración, oculte el encabezado
Authorization.Limita el acceso a los secretos en tu gestor de secretos únicamente a los servicios que los requieran.
Rote su
client_secretperiódicamente e inmediatamente si sospecha que se ha producido una vulneración de seguridad. Póngase en contacto con MongoDB para rotar el secreto asociado a su aplicación OAuth.
Revocación y manejo de errores
Comprender el comportamiento de la revocación es fundamental para diseñar una integración resiliente. La revocación puede activarse de diversas maneras y afecta de forma diferente al acceso al plano de control y al plano de datos.
Desencadenantes de revocación
La revocación puede producirse mediante cualquiera de las siguientes acciones:
El usuario revoca el acceso desde la interfaz de usuario de Atlas (User Settings > Connected Apps).
El propietario de la organizaciónrestringe las conexiones de aplicaciones de terceros para toda la organización desde Organization Settings.
El token de actualización caduca porque se ha alcanzado el tiempo máximo de validez del token de actualización de la organización o porque el token ha permanecido inactivo durante un período superior al límite de tiempo de inactividad.
Tu aplicación revoca sus propios tokens cuando ya no necesita acceso.
Importante
Los desencadenantes mencionados anteriormente revocan los tokens emitidos a través del flujo OAuth. No afectan a una cuenta de servicio que hayas creado para el acceso continuo (consulta Acceso continuo con cuentas de servicio), ya que una cuenta de servicio no está vinculada a la autorización de ningún usuario individual.
No revoque ni elimine las credenciales de la cuenta de servicio de un cliente únicamente porque un usuario individual revoque el acceso delegado o sea dado de baja de la organización. La cuenta de servicio representa la autorización continua de su integración, no el acceso individual de ese usuario.
Revoca las credenciales de la cuenta de servicio cuando el cliente elimine o desconecte tu integración de su cuenta, según lo que signifique esa acción en tu producto.
Revocación de tokens de su aplicación
Cuando un usuario desconecta su aplicación de su propia interfaz, o su integración ya no necesita acceso, revoque los tokens en lugar de dejar que caduquen. Envíe una solicitud POST al punto final de revocación:
curl --request POST \ --url https://authorize.mongodb.com/tokens/revoke \ --header 'Content-Type: application/x-www-form-urlencoded' \ --user '<YOUR_CLIENT_ID>:<YOUR_CLIENT_SECRET>' \ --data 'token=<REFRESH_OR_ACCESS_TOKEN>' \ --data 'token_type_hint=refresh_token'
Parameter | Requerido | Descripción |
|---|---|---|
| Requerido | El token de acceso o el token de actualización que se desea revocar. |
| Opcional | Puede ser |
Revocar un token de actualización también invalida todos los tokens de acceso emitidos a partir de él. El punto final devuelve 200 OK independientemente de si el token era válido o no, por lo que una respuesta de éxito debe interpretarse como una confirmación de que el token ya no se puede usar, en lugar de como una prueba de que existió.
Efectos del plano de control
La rapidez con que la revocación surte efecto depende de quién revoque el acceso:
El propietario de una organización restringe las conexiones de aplicaciones de terceros: la API de administración de Atlas comprueba la configuración de delegación de la organización en cada llamada, por lo que las solicitudes dirigidas a esa organización comienzan a devolver
403 Forbiddeninmediatamente.Un usuario revoca el acceso a tu aplicación: el token de actualización se invalida inmediatamente, pero cualquier token de acceso ya emitido permanece válido hasta su vencimiento. Dado que los tokens de acceso tienen una duración limitada, tu aplicación puede seguir realizando llamadas exitosas durante un máximo de 10 minutos. Transcurrido ese tiempo, las llamadas devuelven
401 Unauthorized.MongoDB elimina su cliente OAuth: la revocación se propaga en cascada a través de todas las organizaciones a las que está conectada su aplicación, lo que tarda hasta 15 minutos en completarse.
Diseñe su aplicación para manejar las respuestas 401 y 403 de forma proactiva en lugar de depender de la propagación inmediata.
Efectos del plano de datos
Revocar el acceso a la API de administración de Atlas no finaliza inmediatamente las conexiones existentes al plano de datos. Su aplicación accede al plano de datos a través de los usuarios de la base de datos que creó, autenticándose con credenciales independientes de sus tokens OAuth. Revocar un token no invalida dichas credenciales. Las sesiones abiertas del controlador de MongoDB y las conexiones del grupo de conexiones permanecen activas hasta que se cierran mediante eventos normales del ciclo de vida de la conexión, como un tiempo de espera, un cierre por inactividad o un cierre explícito por parte de su aplicación.
Dado que la revocación no elimina los usuarios de la base de datos que creó su aplicación, elimínelos como parte del proceso de desconexión. Para obtener más información, consulte Ciclo de vida del usuario de la base de datos.
Error Scenarios
Scenario | Estado | Acción recomendada |
|---|---|---|
El token de acceso ha caducado. |
| Utilice el token de actualización para obtener un nuevo token de acceso. |
Token de acceso revocado |
| Se le pedirá al usuario que vuelva a autorizar. El token de actualización también se invalidará. |
El token de actualización ha caducado o ha sido revocado. |
| Solicite al usuario que vuelva a autorizar. Reinicie el flujo del código de autorización. |
Credenciales de cliente no válidas |
| Verifique su |
Delegación deshabilitada para la organización |
| Informe al usuario que su organización Atlas no permite conexiones de aplicaciones de terceros. Remítalo al responsable de su organización. |
Punto final bloqueado |
| El punto final solicitado no está disponible mediante acceso delegado. Elimine la llamada de su integración. |
El usuario carece del rol requerido. |
| El usuario que autoriza la operación no tiene el rol necesario. Infórmele y sugiérale que solicite el rol necesario al responsable de su organización. |
Respuestas de error de OAuth
Los errores de los puntos finales de autorización y token siguen la estructura estándar de OAuth:
{ "error": "error_code", "error_description": "Human-readable explanation" }
La siguiente tabla enumera los valores comunes de error:
Código de error | Cuándo | Acción recomendada |
|---|---|---|
| Falta un parámetro obligatorio o está mal formado. | Verifique los parámetros y el formato requeridos. |
| Falló la autenticación del cliente. | Verifique su |
| El código de autorización ha caducado o ya se ha utilizado, o bien el token de actualización no es válido. | Reinicie el flujo del código de autorización. |
| El cliente no está autorizado para este tipo de subvención. | Verifique que su registro de cliente incluya |
| El usuario denegó su consentimiento. | Informar al usuario. No reintentar automáticamente. |
| El parámetro | Verifique que el recurso esté registrado para su cliente. |
| El valor | Utilice |
Si se introduce el mismo código de autorización más de una vez, el servidor invalida todos los tokens asociados a esa autorización como medida de seguridad contra la interceptación del código. En tal caso, el usuario deberá volver a autorizarse desde el principio.
Clientes con discapacidad
MongoDB puede deshabilitar un cliente registrado, por ejemplo, durante la respuesta a incidentes o la baja de un socio. Mientras su cliente esté deshabilitado, el servidor se negará a iniciar nuevos flujos de autorización o a emitir nuevos tokens.
El punto final de autorización redirige al usuario a su
redirect_uriconerror=access_deniedy unerror_descriptiondeclient is disabled.El punto final del token devuelve
401coninvalid_clienty la misma descripción. Esto se aplica a todos los tipos de concesión, incluidorefresh_token, por lo que su aplicación no puede intercambiar tokens de actualización existentes mientras esté deshabilitada.
Los tokens de acceso emitidos antes de que se deshabilitara el cliente siguen siendo válidos hasta que caduquen. Deshabilitar un cliente bloquea los nuevos tokens en lugar de invalidar los existentes.
Un cliente deshabilitado no puede recuperarse por sí solo. Considere client is disabled como una condición terminal: detenga los reintentos, muestre el error y comuníquese con el equipo de socios de MongoDB para que vuelvan a habilitar el cliente.