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.

Las siguientes secciones describen cómo utilizar el mecanismo de autenticación MONGODB-OIDC para autenticarse en 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 de Azure del controlador Kotlin.

Puede especificar la autenticación OIDC de Azure IMDS especificando sus credenciales en la cadena de conexión o mediante un MongoCredential instancia. Seleccione el Connection String o la pestaña MongoCredential para obtener información sobre cómo especificar la autenticación OIDC de Azure IMDS.

Reemplace 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 su 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)

Reemplace el marcador <OIDC principal> con el identificador de cliente o de aplicación de la identidad administrada de Azure o la aplicación empresarial. Reemplace el marcador <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 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 Kotlin.

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

Reemplace 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 su 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)

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", "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 mecanismo de autenticación, configure las siguientes opciones en su cadena de conexión:

  • authMechanism:Establecer en MONGODB-OIDC.

  • authMechanismProperties:Establecer en ENVIRONMENT:k8s.

Reemplace 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 su 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)

Reemplace hostname y port con la dirección de red y el número de puerto de su implementación de MongoDB. Además, reemplace el marcador <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", "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