Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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 Establecer la Federación de identidad de Workforce 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 usar los ejemplos de código en esta página, reemplaza estos marcadores de posición con tus 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 funcionalidad incorporada para todas las plataformas, incluidas Azure Functions y Azure Kubernetes Service (AKS). En su lugar, debes definir una función de retorno personalizada para usar OIDC y autenticar desde estas plataformas.

Primero, se debe definir 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 función de retorno personalizados, llame al método MongoCredential.CreateOidcCredential() y pase una nueva instancia de su clase. Almacena el resultado de esta llamada al método en la propiedad Credential de tu 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 aprender más sobre cualquiera de los métodos o tipos tratados en esta página, consulta la siguiente documentación de la API:

Volver

AWS IAM

En esta página