Docs Menu
Docs Home
/ /

OIDC (Federación de Identidad de Carga de Trabajo)

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

Puede utilizar este mecanismo solo cuando se autentique 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, 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 de OpenID Connect y Parámetros del servidor MongoDB en el manual del servidor MongoDB.

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

  • +srvIncluya esta opción en el prefijo de la cadena de conexión solo si se conecta a un clúster de MongoDB Atlas. Para obtener más información sobre la +srv opción, consulte "Formatos de cadena de conexión" en el manual de MongoDB Server.

  • <username>:El identificador de cliente o el identificador de aplicación de la identidad administrada de Azure o la aplicación empresarial, si se autentica en Azure IMDS.

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

  • <port>El número de puerto de su implementación de MongoDB. Si omite este parámetro, el controlador usa el número de puerto predeterminado (27017). No es necesario especificar un puerto al conectarse 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 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 con Azure del controlador .NET/C#.

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

El siguiente ejemplo de código muestra cómo especificar la autenticación OIDC de Azure IMDS. Reemplace el marcador <percent-encoded audience> por el valor porcentual 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 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 .NET/C#.

Puede especificar la autenticación OIDC de GCP IMDS en un objeto MongoClientSettings mediante 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.

El siguiente ejemplo de código muestra cómo especificar la autenticación OIDC de GCP IMDS como parte de la cadena 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 GCP IMDS mediante un objeto MongoCredential:

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

Si su aplicación se ejecuta en un clúster de Kubernetes, puede autenticarse en MongoDB utilizando la compatibilidad con Kubernetes integrada del controlador .NET/C#.

Puede especificar la autenticación OIDC de Kubernetes en un objeto MongoClientSettings mediante 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.

El siguiente ejemplo de código muestra cómo especificar la autenticación OIDC de Kubernetes como parte de la cadena de conexión:

var connectionString = "mongodb://<hostname>[:<port>]/?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:k8s";
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 Kubernetes mediante un objeto MongoCredential:

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

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 .NET/C# no ofrece funcionalidad incorporada para todas las plataformas, incluidas las funciones de Azure. En su lugar, se debe definir una función de retorno personalizada para usar OIDC y autenticar 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 asincrónica 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 de 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