Overview
Nota
El mecanismo de autenticación MONGODB-AWS está disponible para las implementaciones de MongoDB en MongoDB Atlas.
El MONGODB-AWS El mecanismo de autenticación utiliza sus credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a su usuario. Para obtener más información sobre la configuración de MongoDB Atlas, consulte
Configurar la autenticación sin contraseña con la guía de roles de AWS IAM.
Para indicarle al controlador que utilice este mecanismo de autenticación, puede especificar MONGODB-AWS como parámetro en la cadena de conexión o utilizando el método de fábrica MongoCredential.createAwsCredential().
Marcadores de posición de código
Los ejemplos de código de esta página utilizan los siguientes marcadores de posición:
awsKeyId- valor de su ID de clave de acceso de AWSawsSecretKey- valor de su clave de acceso secreta de AWSatlasUri- dirección de red de su implementación de MongoDB Atlashostname- nombre de host de su implementación de MongoDB Atlasport- puerto de su implementación de MongoDB AtlasawsSessionToken- valor de su token de sesión de AWS
Kit de desarrollo de software de AWS
Puede usar uno de los SDK de AWS para Java v1 o v2 para especificar sus credenciales. Este método ofrece las siguientes funciones:
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 utilizar el SDK de AWS para Java para la autenticación MONGODB-AWS, debe realizar lo siguiente:
Especificar el mecanismo de autenticación
Agregue el SDK como una dependencia a su proyecto
Proporcione sus credenciales utilizando uno de los métodos en la cadena de proveedores de credenciales
Para especificar el mecanismo de autenticación utilizando un MongoCredential, utiliza el método de fábrica MongoCredential.createAwsCredential() y añade la instancia MongoCredential a tu 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 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")
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 SDK de AWS para Java v2, el controlador de Java actualmente realiza pruebas utilizando la dependencia software.amazon.awssdk:auth:2.30.31.
Para el SDK de AWS para Java v1, el controlador de Java actualmente realiza pruebas utilizando la dependencia com.amazonaws:aws-java-sdk-core:1.12.782.
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, debe realizar lo siguiente:
Especificar el mecanismo de autenticación
Agregue las variables de entorno apropiadas
Puede especificar el mecanismo de autenticación utilizando un MongoCredential o en la cadena de conexión.
Para especificar el mecanismo de autenticación utilizando un MongoCredential, utiliza el método de fábrica MongoCredential.createAwsCredential() y añade la instancia MongoCredential a tu 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 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")
Los siguientes ejemplos muestran 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 contiene 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 credenciales del contenedor EC,2 asegúrese de que ninguna de las variables de entorno mencionadas esté configurada. El controlador obtiene las credenciales4 del2 punto final 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, utilice el método de fábrica createAwsCredential().
Solo puede proporcionar claves de acceso programático al MongoCredential.createAwsCredential() método. Si necesita proporcionar credenciales de contenedor ECS o EC,2 siga las instrucciones de "Especifique sus credenciales en el entorno o en el SDK de AWS".
Para utilizar la autenticación MongoCredential para MONGODB-AWS, debe realizar lo siguiente:
Especificar el mecanismo de autenticación
Proporcionar las credenciales
Para especificar el mecanismo de autenticación utilizando un MongoCredential, utiliza el método de fábrica MongoCredential.createAwsCredential() y añade la instancia MongoCredential a tu 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 necesita 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 debe proporcionar credenciales de AWS IAM en una cadena de conexión, puede agregarla a su 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)