Overview
El mecanismo de autenticación MONGODB-AWS utiliza credenciales de IAM (Identity and Access Gestión) de Amazon Web Services para autenticar un usuario en MongoDB. Solo puedes utilizar este mecanismo al autenticarte en MongoDB Atlas.
Tip
Configurar Atlas para la autenticación de AWS IAM
Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación de AWS IAM, consulte Configurar la autenticación con AWS IAM en la documentación de Atlas.
Especificar la autenticación de MONGODB-AWS
Para indicarle al controlador de sincronización de Kotlin que utilice el MONGODB-AWS mecanismo de autenticación, puede especificar MONGODB-AWS como parámetro en la cadena de conexión o llamar al método de fábrica MongoCredential.createAwsCredential().
En las siguientes secciones, puede aprender diferentes formas de especificar el mecanismo de autenticación MONGODB-AWS y proporcionar sus credenciales de AWS IAM.
Estas secciones contienen ejemplos de código que utilizan los siguientes marcadores de posición:
awsKeyId:El valor de su ID de clave de acceso de AWSawsSecretKey:El valor de su clave de acceso secreta de AWSatlasUri:La dirección de red de su implementación de MongoDB Atlashostname:El nombre de host de su implementación de MongoDB Atlasport: El puerto de tu implementación de MongoDB AtlasawsSessionToken:El valor de su token de sesión de AWS
Kit de desarrollo de software de AWS
Nota
Fin del soporte para AWS SDK para Java v1
El SDK de AWS para Java v1 finalizará su soporte el de diciembre 31 2025del. AWS recomienda migrar al SDK de AWS para Java v.2 Para obtener más información, consulte el anuncio de finalización del soporte en el sitio web de AWS.
AWS proporciona kits de desarrollo de software (SDK) para Java v1 y v2. El SDK de AWS ofrece las siguientes características:
Múltiples opciones para obtener credenciales
Almacenamiento en caché de credenciales, que ayuda a su aplicación a evitar la limitación de velocidad
Gestión de proveedores de credenciales para su uso con el servicio Elastic Kubernetes
Para usar el AWS SDK para la autenticación de MONGODB-AWS, sigue los siguientes pasos:
Especificar el mecanismo de autenticación
Puede especificar el mecanismo de autenticación MONGODB-AWS mediante una cadena de conexión o un objeto MongoCredential. Seleccione el Connection String
o la pestaña MongoCredential a continuación para obtener las instrucciones correspondientes y el código de muestra:
Para especificar el mecanismo de autenticación MONGODB-AWS en la cadena de conexión, establezca el parámetro authMechanism en MONGODB-AWS, como se muestra en el siguiente ejemplo:
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
Para especificar el mecanismo de autenticación MONGODB-AWS utilizando un objeto MongoCredential, llame al método de fábrica MongoCredential.createAwsCredential() y agregue la instancia MongoCredential a su MongoClient, como se muestra en el siguiente ejemplo:
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Agregar la dependencia del SDK de AWS
Para agregar el SDK de AWS como una dependencia a su proyecto, consulte la siguiente documentación de AWS para la versión que necesita:
Para el SDK de AWS para Java v,2 consulte la guía de configuración.
Para el SDK de AWS para Java v,1 consulte la guía de introducción.
Nota
Para el AWS SDK for Java v2, el controlador Java ejecuta pruebas usando la dependencia software.amazon.awssdk:auth:2.30.31.
Para el AWS SDK for Java v1, el controlador Java ejecuta pruebas usando la dependencia com.amazonaws:aws-java-sdk-core:1.12.782.
Proporcione sus credenciales
Para proporcionar sus credenciales, consulte la siguiente documentación de AWS para la versión que necesita:
Para obtener más información sobre la clase AWS SDK para Java v2 que utiliza el controlador para obtener las credenciales, consulte la documentación de la API DefaultCredentialsProvider.
Aprenda cómo proporcionar sus credenciales a esta clase desde la sección Utilizar la cadena de proveedor de credenciales predeterminada.
Para obtener más información sobre la clase AWS SDK para Java v1 que utiliza el controlador para obtener las credenciales, consulte la documentación de la API DefaultAWSCredentialsProviderChain.
Aprenda cómo proporcionar sus credenciales a esta clase desde la sección Uso de la cadena de proveedor de credenciales predeterminada.
Nota
Si incluye v1 y v2 del AWS SDK para Java en su proyecto, debe usar los métodos v2 para proporcionar sus credenciales.
Especifique sus credenciales en el entorno
Puede proporcionar sus credenciales de AWS IAM indicando al controlador que utilice el mecanismo de autenticación MONGODB-AWS y configurando las variables de entorno adecuadas.
Para utilizar las variables de entorno para proporcionar sus credenciales, realice los siguientes pasos:
Especificar el mecanismo de autenticación
Puede especificar el mecanismo de autenticación MONGODB-AWS utilizando un objeto MongoCredential o en la cadena de conexión.
Para especificar el mecanismo de autenticación utilizando un objeto MongoCredential, llame al método de fábrica MongoCredential.createAwsCredential() y agregue la instancia MongoCredential a su MongoClient, como se muestra en el siguiente ejemplo:
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Para especificar el mecanismo de autenticación MONGODB-AWS en la cadena de conexión, agréguelo como parámetro como se muestra en el siguiente ejemplo:
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
Establecer variables de entorno
Esta sección muestra cómo proporcionar sus credenciales configurando variables de entorno para los siguientes tipos de autenticación:
Teclas de acceso programático
Credenciales del contenedor ECS
Credenciales del contenedor EC2
El siguiente ejemplo muestra cómo puede configurar sus claves de acceso programático en variables de entorno utilizando bash o un shell similar:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
Omita la línea que establece la variable AWS_SESSION_TOKEN si no necesita un token de sesión de AWS para esa función.
Para autenticarse mediante las credenciales del contenedor ECS, configure el URI relativo del punto final ECS en una variable de entorno utilizando bash o un shell similar, como se muestra en el siguiente ejemplo:
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>
Para autenticarse con las 2 credenciales del contenedor EC, no configure las variables de entorno de AWS. El controlador obtiene las credenciales4 del2 punto de conexión de metadatos de la instancia EC IPv predeterminada.
Especifique sus credenciales en un MongoCredential
Puede proporcionar sus credenciales de AWS IAM a una instancia MongoClient mediante una MongoCredential instancia. Para construir la MongoCredential instancia para la MONGODB-AWS autenticación, llame al método de fábrica createAwsCredential().
Tip
Solo puede proporcionar claves de acceso programático al MongoCredential.createAwsCredential() método. Si debe proporcionar credenciales de contenedor ECS o EC,2 siga las instrucciones de "Especificar sus credenciales en el entorno".
Para utilizar un objeto MongoCredential para la autenticación de MONGODB-AWS, realizar los siguientes pasos:
Especifique el mecanismo de autenticación.
Proporcionar las credenciales.
Para especificar el mecanismo de autenticación utilizando un objeto MongoCredential, llame al método de fábrica MongoCredential.createAwsCredential() y agregue la instancia MongoCredential a su MongoClient, como se muestra en el siguiente ejemplo:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Si debe especificar un token de sesión de AWS, páselo al método withMechanismProperty(), como se muestra en el siguiente ejemplo:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>") val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Para actualizar sus credenciales, puede declarar una expresión lambda Supplier que devuelva nuevas credenciales, como se muestra en el siguiente ejemplo:
val awsFreshCredentialSupplier: Supplier<AwsCredential> = Supplier { // Add your code here to fetch new credentials // Return the new credentials AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>") } val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Si debes proporcionar credenciales AWS IAM en una cadena de conexión, puedes agregarlas a tu objeto MongoClientSettings llamando al método applyConnectionString():
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val connectionString = ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>") val settings = MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build() val mongoClient = MongoClient.create(settings)
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.