Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Mecanismo de autenticación de OIDC

El mecanismo de autenticación OpenID Connect (OIDC) permite autenticarse en MongoDB usando 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 ejecutándose en una plataforma Linux. Solo puedes usar este mecanismo al autenticarte en MongoDB Atlas o en MongoDB Enterprise Advanced.

Tip

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, consulta 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, consulta Autenticación y autorización con OIDC/OAuth 2.0 y oidcIdentityProviders en el manual del servidor de MongoDB.

Las siguientes secciones describen cómo usar el MONGODB-OIDC mecanismo de autenticación para autenticar desde varias plataformas.

Si tu aplicación se ejecuta en una VM de Azure o utiliza el Servicio de metadatos de instancias de Azure (IMDS), puedes autenticarte en MongoDB usando la compatibilidad integrada con Azure del controlador de Node.js.

Para especificar Azure IMDS OIDC como el mecanismo de autenticación, configure las siguientes opciones en su cadena de conexión:

  • username: Si estás usando una identidad administrada de Azure, establece esto en el ID de cliente de la identidad administrada. En caso contrario, omite esta opción.

  • authMechanism:Establecer en MONGODB-OIDC.

  • authMechanismProperties: Configurar en ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>. Reemplace el marcador de posición <audience> con el valor del parámetro audience configurado 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);

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 en MONGODB-OIDC.

  • authMechanismProperties: Configurar en ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>. Reemplace el marcador de posición <audience> con el valor del parámetro audience configurado 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);

Si su aplicación se ejecuta en un clúster de Kubernetes, puede autenticarse en MongoDB utilizando la funcionalidad incorporada de Kubernetes del controlador Node.js.

Para especificar Kubernetes OIDC como el mecanismo de autenticación, establezca las siguientes opciones en su cadena de conexión:

  • authMechanism:Establecer en MONGODB-OIDC.

  • authMechanismProperties:Establecer en ENVIRONMENT: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 se especifica Kubernetes OIDC como el mecanismo de autenticación, el driver lee el contenido del token OIDC desde una de las siguientes ubicaciones:

Debes almacenar tu token OIDC en la ubicación que corresponda al servicio que utilizas para ejecutar tu aplicación.

El driver de Node.js no ofrece funcionalidad incorporada para todas las plataformas, incluidas Azure Functions. En su lugar, debe definir una función de retorno personalizada para utilizar OIDC a fin de autenticar desde estas plataformas.

Primero, defina una función que recupere el token de acceso para usarlo en 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

timeoutContext

Un AbortSignal que interrumpe el flujo de trabajo de autenticación después de 30 segundos

version

La versión actual de la API OIDC

idpInfo

La información del proveedor de identidad devuelta por el servidor

username

El nombre de usuario incluido en la cadena de conexión, si existe

refreshToken

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

accessToken

El token de acceso que se usará para autenticación.

expiresInSeconds

opcional. El número de segundos hasta que caduque el token de acceso.

refreshToken

opcional. El token de actualización para solicitar un nuevo token de acceso al emisor.

El siguiente ejemplo muestra una función de retorno que recupera un token de acceso OIDC desde 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 retorno, pásala al constructor MongoClient como parte del parámetro authMechanismProperties. El driver 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, las utilidades de línea de comandos y otras aplicaciones que requieren interacción directa con el usuario. Selecciona 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
}
});

Para obtener más información sobre los métodos y tipos tratados en esta guía, consulta la siguiente documentación de la API:

Volver

AWS IAM

En esta página