Overview
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.
Importante
El MONGODB-OIDC El mecanismo de autenticación requiere MongoDB Server v7.0 o posterior ejecutándose en una plataforma Linux.
Tip
Autenticación OIDC
Para obtener más información sobre el mecanismo de autenticación MONGODB-OIDC, consulte
Autenticación de OpenID Connect y parámetros del servidor MongoDB en el manual del servidor MongoDB.
Especificar la autenticación OIDC
Las siguientes secciones describen cómo usar la autenticación OIDC para autenticarse desde diferentes plataformas. Los ejemplos de código utilizan los siguientes marcadores de posición:
<OIDC principal>:El identificador de cliente o el identificador de aplicación de la identidad administrada de Azure o la aplicación empresarial, si se autentica en Azure IMDS.<hostname>: La dirección de red de tu implementación de MongoDB.<port>El número de puerto de su implementación de MongoDB. Si omite este parámetro, el controlador usa el número de puerto predeterminado (27017). No es necesario especificar un puerto al conectarse 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.
Puede especificar la autenticación OIDC de Azure IMDS utilizando una instancia MongoCredential o especificando sus credenciales en la cadena de conexión.
Seleccione de la Connection String o MongoCredential pestañas para ver la sintaxis correspondiente.
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, 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)
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())
GCP IMDS
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 de sincronización de Kotlin.
Puede especificar la autenticación OIDC de GCP IMDS utilizando una instancia MongoCredential o especificando sus credenciales en la cadena de conexión.
Seleccione una de las pestañas Connection String o MongoCredential para ver la sintaxis correspondiente.
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, 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)
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())
Kubernetes
Si su aplicación se ejecuta en un clúster de Kubernetes, puede autenticarse en MongoDB utilizando la compatibilidad con Kubernetes integrada del controlador Kotlin Sync.
Seleccione una de las pestañas Connection String o MongoCredential para ver la sintaxis correspondiente.
Para especificar Kubernetes OIDC como mecanismo de autenticación, configure las siguientes opciones en su cadena de conexión:
authMechanism:Establecer enMONGODB-OIDC.authMechanismProperties:Establecer enENVIRONMENT: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 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", "k8s") .withMechanismProperty("TOKEN_RESOURCE", "<audience>") val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build())
Devolución de llamada personalizada
El controlador de sincronización de 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, use 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, consulte Autenticación en el manual del servidor MongoDB.
Para obtener más información sobre cómo crear un objeto MongoClient mediante el controlador Kotlin Sync, consulte la Crear una guía de MongoClient.
Documentación de la API
Para obtener más información sobre las clases y los métodos para autenticar su aplicación con el controlador Kotlin Sync, consulte la siguiente documentación de API: