Docs Menu
Docs Home
/ /

Mecanismo de autenticación de OIDC

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.

Las siguientes secciones describen cómo utilizar el MONGODB-OIDC Mecanismo de autenticación para autenticarse desde varias plataformas.

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

  • authMechanismProperties: Establézcalo en ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>. Reemplace el marcador <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: Establézcalo en ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>. Reemplace el marcador <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 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 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 especifica Kubernetes OIDC como mecanismo de autenticación, el controlador 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 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

timeoutContext

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

version

La versión actual de la API de OIDC

idpInfo

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

username

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

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 utilizará para la 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 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
}
});

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

Volver

AWS IAM

En esta página