Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

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

Importante

El mecanismo de autenticación MONGODB-OIDC requiere MongoDB Server v7.0 o posterior funcionando en una plataforma Linux.

Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación OIDC, consulta Configurar la Federación de Identidad de la Fuerza Laboral 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 Proveedores de Identidad OIDC en el manual de MongoDB Server.

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

  • <username>: El ID de cliente o ID de aplicación de la identidad administrada de Azure o de la aplicación empresarial. Se utiliza para la autenticación de 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 controlador utilizará el número de puerto por defecto (27017). No necesitas un número de puerto al conectarte a un clúster de MongoDB Atlas.

  • <audience> o <percent-encoded audience>: El valor del parámetro de servidor audience configurado en su implementación de MongoDB. Codifique este valor en porcentaje cuando lo especifique en una cadena de conexión.

Para utilizar los ejemplos de código, reemplaza estos marcadores de posición por tus propios valores.

Las siguientes secciones describen cómo autenticarse desde diversas plataformas utilizando OIDC.

Si su aplicación se ejecuta en una máquina virtual de Azure o utiliza el servicio de metadatos de instancias de Azure (IMDS), puede autenticarse en MongoDB utilizando la funcionalidad incorporada de Azure del controlador Java Reactive Streams.

Puede especificar la autenticación OIDC de Azure IMDS utilizando un MongoCredential o como parte de la cadena de conexión.

Selecciona desde las pestañas Connection String o MongoCredential para ver la sintaxis correspondiente:

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

  • authMechanism: Establecer en MONGODB-OIDC.

  • authMechanismProperties: Establecer en ENVIRONMENT:azure,TOKEN_RESOURCE:<url-encoded-resource>.

Reemplace el marcador de posición <username> con el ID de cliente o el ID de aplicación de la identidad administrada de Azure o la aplicación empresarial. Reemplace el marcador de posición <percent-encoded audience> con el valor codificado en porcentaje del parámetro del servidor de audiencia configurado en su implementación de MongoDB.

Debe proporcionar un valor TOKEN_RESOURCE codificado en URL cuando ENVIRONMENT esté configurado como azure. El carácter coma (,) y su codificación (%2C) están reservados, y el uso de estos caracteres en un valor hace que el controlador interprete las comas como delimitadores de pares clave-valor. Debe especificar valores que contengan comas en una instancia MongoCredential, como se muestra en la pestaña MongoCredential.

MongoClient mongoClient = MongoClients.create(
"mongodb://<username>@<hostname>:<port>/?" +
"?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>");

Sustituya el marcador de posición <username> por el ID de cliente o el ID de la aplicación de la identidad gestionada de Azure o de la aplicación empresarial. Reemplace el marcador de posición <audience> con el valor del parámetro de servidor audience configurado en su implementación de MongoDB.

MongoCredential credential = MongoCredential.createOidcCredential("<username>")
.withMechanismProperty("ENVIRONMENT", "azure")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Si tu aplicación se ejecuta en una VM de Google Compute Engine o utiliza de alguna manera el Servicio de metadatos de instancias de GCP, puedes autenticarte a MongoDB usando la funcionalidad incorporada para GCP del driver de flujos reactivos de Java.

Puedes especificar la autenticación OIDC IMDS de GCP utilizando un MongoCredential o como parte de la cadena de conexión.

Selecciona desde las pestañas Connection String o MongoCredential para ver la sintaxis correspondiente:

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

  • authMechanism: Establecer en MONGODB-OIDC.

  • authMechanismProperties: Establecer en ENVIRONMENT:gcp,TOKEN_RESOURCE:<url-encoded-resource>.

Reemplace el marcador de posición <percent-encoded audience> con el valor codificado en porcentaje del parámetro de servidor audience configurado en su implementación de MongoDB.

Debe proporcionar un valor TOKEN_RESOURCE codificado en URL cuando ENVIRONMENT esté configurado como gcp. El carácter coma (,) y su codificación (%2C) están reservados, y el uso de estos caracteres en un valor hace que el controlador interprete las comas como delimitadores de pares clave-valor. Debe especificar valores que contengan comas en una instancia MongoCredential, como se muestra en la pestaña MongoCredential.

MongoClient mongoClient = MongoClients.create(
"mongodb://<hostname>:<port>/?" +
"authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<percent-encoded audience>");

Suplanta el marcador de posición <audience> con el valor del parámetro del servidor audience configurado en tu implementación de MongoDB.

MongoCredential credential = MongoCredential.createOidcCredential()
.withMechanismProperty("ENVIRONMENT", "gcp")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Si tu aplicación se ejecuta en un clúster de Kubernetes, puedes autenticarte en MongoDB usando el soporte integrado para Kubernetes del driver de Streams reactivos de Java.

Selecciona entre las pestañas Connection String o MongoCredential para ver la sintaxis correspondiente.

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.

Reemplace los marcadores de posición <hostname> y <port> con la dirección de red y el número de puerto de su implementación de MongoDB.

MongoClient mongoClient = MongoClients.create(
"mongodb://<hostname>:<port>/" +
"?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:k8s");

Reemplace los marcadores de posición <hostname> y <port> con la dirección de red y el número de puerto de su implementación de MongoDB.

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("ENVIRONMENT", "k8s");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

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 utilices para ejecutar tu aplicación.

El controlador de Java Reactive Streams no ofrece soporte incorporado para todas las plataformas, incluidas Azure Functions y Azure Kubernetes Service (AKS). En su lugar, debe definir una función de retorno personalizada para utilizar OIDC para autenticar desde estas plataformas. Para ello, utiliza la propiedad de autenticación "OIDC_CALLBACK", como se muestra en el siguiente ejemplo de código:

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("OIDC_CALLBACK", (context) -> {
String accessToken = ...
return new OidcCallbackResult(accessToken);
});

El valor de la propiedad "OIDC_CALLBACK" debe ser una lambda u otra implementación de la interfaz funcional OidcCallback que acepte un OidcCallbackContext como parámetro y devuelva un OidcCallbackResult.

El siguiente ejemplo recupera un token OIDC de un archivo llamado "access-token.dat" en el sistema de archivos local:

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("OIDC_CALLBACK", (context) -> {
string accessToken = new String(Files.readAllBytes(Paths.get("access-token.dat"));
return new OidcCallbackResult(accessToken);
});
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

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: