Overview
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.
Importante
La MONGODB-OIDC El mecanismo de autenticación requiere MongoDB Server v7.0 o posterior funcionando en una plataforma Linux.
Tip
Autenticación OIDC
Para más información sobre el mecanismo de autenticación MONGODB-OIDC, consulta
Autenticación de OpenID Connect y parámetros del servidor MongoDB en el manual del servidor MongoDB.
Especificar autenticación OIDC
Las siguientes secciones describen cómo utilizar la autenticación OIDC para autenticarse desde diferentes plataformas. Los ejemplos de código utilizan los siguientes marcadores:
<OIDC principal>ID de cliente o ID de la aplicación de la identidad gestionada de Azure o de la aplicación empresarial, si está realizando la autenticación con 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 driver usará el puerto por defecto (27017). No necesitas especificar un puerto al conectar a un clúster de MongoDB Atlas.
IMDS de Azure
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 de sincronización de Kotlin.
Puedes especificar la autenticación OAuth de IMDS de Azure mediante el uso de una instancia MongoCredential o indicando tus credenciales en la cadena de conexión.
Seleccionar de la Connection String o MongoCredential pestañas para ver la sintaxis correspondiente.
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, como se muestra en la pestaña 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)
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", "azure") .withMechanismProperty("TOKEN_RESOURCE", "<audience>") val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build())
GCP IMDS
Si tu aplicación se ejecuta en una máquina virtual de Google Compute Engine, o de otro modo utiliza el Servicio de Metadatos de Instancias de GCP, puedes autenticarte con MongoDB utilizando la funcionalidad incorporada de GCP del controlador Kotlin Sync.
Puedes especificar la autenticación OIDC de GCP IMDS usando una instancia MongoCredential o especificando tus credenciales en la cadena de conexión.
Selecciona entre las pestañas Connection String o MongoCredential para ver la sintaxis correspondiente.
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, como se muestra en la pestaña 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())
Kubernetes
Si tu aplicación se ejecuta en un clúster de Kubernetes, puedes autenticarte en MongoDB utilizando el soporte integrado de Kubernetes del controlador de sincronización de Kotlin.
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 enMONGODB-OIDC.authMechanismProperties:Establecer enENVIRONMENT: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)
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", "k8s") .withMechanismProperty("TOKEN_RESOURCE", "<audience>") val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build())
Función de retorno personalizado
El driver de Kotlin Sync no ofrece soporte de funcionalidad incorporada 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:
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 función de retorno de muestra 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() )
Información Adicional
Para obtener más información sobre la autenticación en MongoDB, consulta Autenticación en el manual del servidor de MongoDB.
Para obtener más información sobre cómo crear un objeto MongoClient usando el Driver Synchronization de Kotlin, consulta la Crear una guía de MongoClient.
Documentación de la API
Para aprender más sobre las clases y métodos para autenticar tu aplicación con el driver Kotlin Sync, consulta la siguiente documentación de la API: