Overview
El mecanismo de autenticación OpenID Connect (OIDC) le permite autenticarse en MongoDB mediante un proveedor de identidad de terceros, como Azure o Google Cloud Platform (GCP).
El mecanismo de autenticación MONGODB-OIDC requiere MongoDB Server v7.0 o posterior en una plataforma Linux. Este mecanismo solo se puede usar al autenticarse en MongoDB Atlas o MongoDB Enterprise Advanced.
Tip
Obtenga más información sobre la autenticación OIDC
Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación OIDC, consulte Configurar Workforce Identity Federation con OIDC en la documentación de Atlas.
Para obtener más información sobre el uso de la autenticación OIDC con MongoDB, consulte Autenticación y autorización con OIDC/OAuth 2.0 y oidcIdentityProviders en el manual del servidor MongoDB.
Especificar la autenticación OIDC
Las siguientes secciones describen cómo utilizar el MONGODB-OIDC Mecanismo de autenticación para autenticarse desde varias plataformas.
IMDS de Azure
Si su aplicación se ejecuta en una máquina virtual de Azure o utiliza el Servicio de metadatos de instancia de Azure (IMDS), puede autenticarse en MongoDB mediante la compatibilidad integrada de Azure del controlador Node.js.
Para especificar Azure IMDS OIDC como mecanismo de autenticación, configure las siguientes opciones en su cadena de conexión:
usernameSi usa una identidad administrada de Azure, configure esta opción con el identificador de cliente de dicha identidad. De lo contrario, omita esta opción.authMechanism:Establecer enMONGODB-OIDC.authMechanismProperties: Establézcalo enENVIRONMENT:azure,TOKEN_RESOURCE:<audience>. Reemplace el marcador<audience>con el valor del parámetroaudienceconfigurado en su implementación de MongoDB.
El siguiente ejemplo de código muestra cómo establecer las opciones de conexión anteriores:
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<username>@<hostname>:<port>/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>"; const client = new MongoClient(uri);
GCP IMDS
Si su aplicación se ejecuta en una máquina virtual de Google Compute Engine o utiliza el servicio de metadatos de instancia de GCP, puede autenticarse en MongoDB mediante la compatibilidad con GCP integrada del controlador Node.js.
Para especificar GCP IMDS OIDC como mecanismo de autenticación, configure las siguientes opciones en su cadena de conexión:
authMechanism:Establecer enMONGODB-OIDC.authMechanismProperties: Establézcalo enENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>. Reemplace el marcador<audience>con el valor del parámetroaudienceconfigurado en su implementación de MongoDB.
El siguiente ejemplo de código muestra cómo establecer las opciones de conexión anteriores:
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>"; const client = new MongoClient(uri);
Kubernetes
Si su aplicación se ejecuta en un clúster de Kubernetes, puede autenticarse en MongoDB utilizando la compatibilidad con Kubernetes integrada del controlador Node.js.
Para especificar Kubernetes OIDC como mecanismo de autenticación, configure las siguientes opciones en su cadena de conexión:
authMechanism:Establecer enMONGODB-OIDC.authMechanismProperties:Establecer enENVIRONMENT:k8s.
El siguiente ejemplo de código muestra cómo establecer las opciones de conexión anteriores:
import { MongoClient } from "mongodb"; const uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:k8s"; const client = new MongoClient(uri);
Si especifica Kubernetes OIDC como mecanismo de autenticación, el controlador lee el contenido del token OIDC desde una de las siguientes ubicaciones:
AZURE_FEDERATED_TOKEN_FILEVariable de entorno para aplicaciones que se ejecutan en Azure Kubernetes Service (AKS)AWS_WEB_IDENTITY_TOKEN_FILEVariable de entorno para aplicaciones que se ejecutan en Elastic Kubernetes Service (EKS)/var/run/secrets/kubernetes.io/serviceaccount/tokenarchivo, la ubicación predeterminada para todas las demás aplicaciones, incluidas las que se ejecutan en Google Kubernetes Engine (GKE)
Debes almacenar tu token OIDC en la ubicación que corresponda al servicio que utilizas para ejecutar tu aplicación.
Devolución de llamada personalizada
El controlador de Node.js no ofrece compatibilidad integrada con todas las plataformas, incluidas Azure Functions. En su lugar, debe definir una devolución de llamada personalizada para usar OIDC y autenticarse desde estas plataformas.
Primero, defina una función que recupere el token de acceso para la autenticación OIDC. Esta función debe tener la siguiente firma:
const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => { }
El parámetro OIDCCallbackParams contiene las siguientes propiedades, a las que puedes acceder dentro de la función:
Propiedad | Valor |
|---|---|
| Un |
| La versión actual de la API de OIDC |
| La información del proveedor de identidad devuelta desde el servidor |
| El nombre de usuario incluido en la cadena de conexión, si lo hay |
| El token de actualización para solicitar un nuevo token de acceso al emisor, si lo hay |
La función de devolución de llamada debe devolver un objeto OIDCResponse. Este objeto contiene las siguientes propiedades:
Propiedad | Valor |
|---|---|
| El token de acceso que se utilizará para la autenticación. |
| Opcional. El número de segundos hasta que caduque el token de acceso. |
| Opcional. El token de actualización para solicitar un nuevo token de acceso al emisor. |
El siguiente ejemplo muestra una función de devolución de llamada que recupera un token de acceso OIDC de un archivo llamado access-token.dat en el sistema de archivos local:
const fs = require("node:fs"); const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => { const token = fs.readFileSync("access-token.dat", "utf8"); return { accessToken: token, expiresInSeconds: 300, refreshToken: token }; }
Después de definir la función de devolución de llamada, pásela al constructor MongoClient como parte del parámetro authMechanismProperties. El controlador de Node.js admite los siguientes patrones de autenticación:
Autenticación de máquina: Utilizada por servicios web y otras aplicaciones que no requieren interacción humana. Seleccione la opción Machine Callback Pestaña para ver un ejemplo de esta sintaxis.
Autenticación humana: Utilizada por herramientas de bases de datos, utilidades de línea de comandos y otras aplicaciones que implican interacción humana directa. Seleccione la pestaña Human Callback para ver un ejemplo de esta sintaxis.
Para la autenticación de la máquina, asigna la función de retorno a la propiedad authMechanismProperties.OIDC_CALLBACK, como se muestra en el ejemplo siguiente:
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC"; const client = new MongoClient(uri, { authMechanismProperties: { OIDC_CALLBACK: myCallback } });
Para la autenticación humana, asigne la función de devolución de llamada a la propiedad authMechanismProperties.OIDC_HUMAN_CALLBACK, como se muestra en el siguiente ejemplo:
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC"; const client = new MongoClient(uri, { authMechanismProperties: { OIDC_HUMAN_CALLBACK: myCallback } });
Documentación de la API
Para obtener más información sobre los métodos y tipos analizados en esta guía, consulte la siguiente documentación de API: