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 más información sobre el uso de la autenticación OIDC con MongoDB, consulte Autenticación OpenID Connect y Parámetros de MongoDB Server en el manual del servidor MongoDB.

Las siguientes secciones describen cómo utilizar el mecanismo de autenticación MONGODB-OIDC para autenticarse en varias plataformas.

Si tu aplicación se ejecuta en una VM de Azure, o utiliza de otro modo el Servicio de metadatos de instancias de Azure (IMDS), puedes autenticarte en MongoDB usando el soporte incorporado de Azure del driver de Kotlin.

Puedes especificar la autenticación Azure IMDS OIDC especificando tus credenciales en la cadena de conexión o utilizando un MongoCredential instancia. Selecciona el Connection String o la pestaña MongoCredential para obtener información sobre cómo especificar la autenticación OIDC de Azure IMDS.

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. Su uso 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.

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

Sustituya el marcador de posición <OIDC principal> 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.

val credential = MongoCredential.createOidcCredential("<OIDC principal>")
.withMechanismProperty("ENVIRONMENT", "azure")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>")
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress("<hostname>", <port>)))
}
.credential(credential)
.build())

Si tu aplicación se ejecuta en una VM de Google Compute Engine o utiliza de otro modo el Servicio de metadatos de instancia de GCP, puedes autenticarte en MongoDB utilizando la compatibilidad de funcionalidad incorporada de GCP del controlador Kotlin.

Puede especificar la autenticación OIDC de GCP IMDS especificando sus credenciales en una cadena de conexión o utilizando una instancia MongoCredential.

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. Su uso 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.

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

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

val credential = MongoCredential.createOidcCredential("<OIDC principal>")
.withMechanismProperty("ENVIRONMENT", "gcp")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>")
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress("<hostname>", <port>)))
}
.credential(credential)
.build())

Si su aplicación se ejecuta en un clúster de Kubernetes, puede autenticarse en MongoDB mediante la compatibilidad integrada con Kubernetes del controlador Kotlin. Puede especificar la autenticación OIDC de Kubernetes especificando sus credenciales en una cadena de conexión o usando una instancia MongoCredential.

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.

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.

val connectionString = ConnectionString(
"mongodb://<OIDC principal>@<hostname>:<port>/?" +
"authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:k8s,TOKEN_RESOURCE:<percent-encoded audience>")
val mongoClient = MongoClient.create(connectionString)

Reemplaza el hostname y el port por la dirección de red y el número de puerto de tu implementación de MongoDB. Además, reemplaza el marcador de posición <audience> con el valor del parámetro del servidor audience configurado en tu implementación de MongoDB.

val credential = MongoCredential.createOidcCredential("<OIDC principal>")
.withMechanismProperty("ENVIRONMENT", "k8s")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>")
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress("<hostname>", <port>)))
}
.credential(credential)
.build())

El controlador Kotlin 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 para la autenticación desde estas plataformas. Para ello, utilice la propiedad de autenticación "OIDC_CALLBACK", como se muestra en el siguiente ejemplo de código:

val credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("OIDC_CALLBACK") { context: Context ->
val accessToken = "..."
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 devolución de llamada de ejemplo para recuperar un token OIDC de un archivo llamado "access-token.dat" en el sistema de archivos local:

val credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("OIDC_CALLBACK") { context: Context ->
val accessToken = String(Files.readAllBytes(Paths.get("access-token.dat")))
OidcCallbackResult(accessToken)
}
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress("<hostname>", <port>)))
}
.credential(credential)
.build()
)

Volver

AWS IAM

En esta página