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
/ /

OIDC (Federación de identidad de carga de trabajo)

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).

Puede utilizar este mecanismo solo para autenticarse en MongoDB Atlas o MongoDB Enterprise Advanced, y solo cuando se autentique en MongoDB v7.0 o posterior.

Tip

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 OpenID Connect y Parámetros del MongoDB Server en el manual del MongoDB Server.

Los ejemplos de código en esta página utilizan los siguientes marcadores de posición:

  • +srv: Incluir esta opción en el prefijo de su cadena de conexión solamente si está conectando a un clúster de MongoDB Atlas. Para obtener más información sobre la opción +srv, consulte Formatos de cadena de conexión en el manual del servidor de MongoDB.

  • <username>ID de cliente o ID de la aplicación de la identidad gestionada de Azure o de la aplicación empresarial, si está realizando la autenticación con Azure IMDS.

  • <hostname>: La dirección de red de tu implementación de MongoDB.

  • <port>: El número de puerto de tu implementación de MongoDB. Si omites este parámetro, el driver usará el puerto por defecto (27017). No necesitas especificar un puerto al conectar a un clúster de MongoDB Atlas.

  • <audience>: El parámetro de audiencia configurado en tu implementación de MongoDB.

Para utilizar los ejemplos de código en esta página, reemplace estos marcadores de posición con sus propios valores.

Las siguientes secciones describen cómo utilizar la autenticación OIDC para autenticarse desde varias plataformas.

Si tu aplicación se ejecuta en una VM de Azure o utiliza el servicio de metadatos de instancia de Azure (IMDS), puedes autenticarte en MongoDB utilizando la funcionalidad incorporada de Azure del driver .NET/C# soporte.

Puedes especificar la autenticación OIDC de IMDS de Azure en un objeto MongoClientSettings, ya sea utilizando un objeto MongoCredential o como parte de la cadena de conexión. Selecciona el Connection String o pestaña MongoCredential para ver la sintaxis correspondiente.

Nota

No puedes pasar valores que contengan el carácter de coma (,) al parámetro de cadena de conexión authMechanismProperties. Tienes que especificar los valores que contienen comas en un objeto MongoCredential, como se muestra en la pestaña MongoCredential.

El siguiente ejemplo de código muestra cómo especificar la autenticación OIDC de Azure IMDS. Reemplace el marcador de posición <percent-encoded audience> con el valor codificado en porcentaje del parámetro audience configurado en su implementación de MongoDB.

var connectionString = "mongodb://<username>@<hostname>[:<port>]/?" +
"authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>");
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

El siguiente ejemplo de código muestra cómo especificar la autenticación OIDC de Azure IMDS:

var mongoClientSettings = MongoClientSettings.FromConnectionString(
"mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential
.CreateOidcCredential("azure", "<username>")
.WithMechanismProperty("TOKEN_RESOURCE", "<audience>");
var client = new MongoClient(mongoClientSettings);

Si tu aplicación se ejecuta en una VM de Google Compute Engine, o utiliza el Servicio de metadatos de instancias de GCP, puedes autenticarte en MongoDB utilizando el soporte de funcionalidad incorporada de GCP del driver .NET/C#.

Puedes especificar la autenticación OIDC de IMDS de GCP en un objeto MongoClientSettings usando un objeto MongoCredential o como parte de la cadena de conexión. Seleccione la pestaña Connection String o MongoCredential para ver la sintaxis correspondiente.

Nota

No puedes pasar valores que contengan el carácter de coma (,) al parámetro de cadena de conexión authMechanismProperties. Tienes que especificar los valores que contienen comas en un objeto MongoCredential, como se muestra en la pestaña MongoCredential.

El siguiente ejemplo de código muestra cómo especificar la autenticación GCP IMDS OIDC como parte de la string de autenticación:

var connectionString = "mongodb://<hostname>[:<port>]/?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>");
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

El siguiente ejemplo de código muestra cómo especificar la autenticación OIDC de IMDS de GCP utilizando un objeto MongoCredential:

var mongoClientSettings = MongoClientSettings.FromConnectionString(
"mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential
.CreateOidcCredential("gcp")
.WithMechanismProperty("TOKEN_RESOURCE", "<audience>");
var client = new MongoClient(mongoClientSettings);

El controlador .NET/C# no ofrece compatibilidad integrada con todas las plataformas, incluidas Azure Functions y Azure Kubernetes Service (AKS). En su lugar, debe definir una devolución de llamada personalizada para usar OIDC y autenticarse desde estas plataformas.

Primero, defina una clase que implemente la interfaz IOidcCallback. Esta interfaz contiene dos métodos:

  • GetOidcAccessToken(): Este método acepta los parámetros del método de función de retorno y devuelve la respuesta de la función de retorno.

  • GetOidcAccessTokenAsync()Este método es una versión asíncrona del método anterior.

El siguiente código es un ejemplo de implementación de la interfaz IOidcCallback. En este ejemplo, los métodos recuperan un token OIDC desde un archivo llamado "access-token.dat" en el sistema de archivos local.

public class MyCallback : IOidcCallback
{
public OidcAccessToken GetOidcAccessToken(
OidcCallbackParameters parameters,
CancellationToken cancellationToken)
{
var accessToken = File.ReadAllText("access-token.dat");
return new(accessToken, expiresIn: null);
}
public async Task<OidcAccessToken> GetOidcAccessTokenAsync(
OidcCallbackParameters parameters,
CancellationToken cancellationToken)
{
var accessToken = await File.ReadAllTextAsync(
"access-token.dat",
cancellationToken)
.ConfigureAwait(false);
return new(accessToken, expiresIn: null);
}
}

Después de definir una clase que contenga sus métodos de devolución de llamada personalizados, llame al método MongoCredential.CreateOidcCredential() y pase una nueva instancia de su clase. Guarde el resultado de esta llamada al método en la propiedad Credential de su objeto MongoClientSettings, como se muestra en el siguiente ejemplo de código:

var mongoClientSettings = MongoClientSettings
.FromConnectionString("mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new MyCallback());
var client = new MongoClient(mongoClientSettings);

Para obtener más información sobre cualquiera de los métodos o tipos analizados en esta página, consulte la siguiente documentación de API:

Volver

AWS IAM

En esta página