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, 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:

  • <db_username>: El nombre de usuario de MongoDB del usuario que se va a autenticar.

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

Para utilizar los ejemplos de código, reemplaza estos marcadores de posición por 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 Máquina Virtual (VM) de Azure o de alguna otra manera utiliza el Servicio de Metadatos de Instancia de Azure (IMDS), puedes autenticarte en MongoDB usando el soporte integrado de Azure del controlador Java.

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

Seleccionar de la Connection String o MongoCredential pestañas 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.

Reemplaza el marcador de posición <percent-encoded audience> en el siguiente código con el valor codificado en porcentaje del parámetro del servidor de audiencia configurado en tu implementación de MongoDB.

El carácter de coma (,) y su codificación (%2C) están reservados, y usar 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://<db_username>@<hostname>:<port>/?" +
"?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:azure,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("<db_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 funciona en una máquina virtual de Google Compute Engine o utiliza el Servicio de metadatos de instancias de GCP, puedes autenticarte en MongoDB usando el soporte integrado de GCP del driver 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.

Reemplaza el marcador de posición <percent-encoded audience> en el siguiente código con el valor codificado en porcentaje del parámetro del servidor de audiencia configurado en tu implementación de MongoDB.

El carácter de coma (,) y su codificación (%2C) están reservados, y usar 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(null)
.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 utilizando la funcionalidad incorporada del controlador Java con Kubernetes.

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.

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

Reemplace los 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 no ofrece soporte de funcionalidad incorporada para todas las plataformas, incluidas Azure Functions y Azure Kubernetes Service (AKS). En cambio, debes definir una función de retorno personalizada para utilizar OIDC y autentificarte 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 utiliza una función de retorno de ejemplo para recuperar un token OIDC de un archivo denominado "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:

Volver

AWS IAM

En esta página