Docs Menu
Docs Home
/ /
Seguridad

Mecanismos de autenticación

En esta guía, aprenderá a autenticarse con MongoDB mediante cada mecanismo de autenticación disponible en MongoDB Community Edition. Los mecanismos de autenticación son procesos mediante los cuales el controlador y el servidor confirman la identidad y establecen la confianza para garantizar la seguridad.

Los mecanismos que puedes utilizar con la última versión de MongoDB Community Edition son los siguientes:

Para autenticarse usando Kerberos o LDAP, consulte el Guía de mecanismos de autenticación empresarial.

Para obtener más información sobre cómo establecer una conexión a su clúster MongoDB, lea nuestra Guía de conexión.

Puede especificar su mecanismo de autenticación y credenciales al conectarse a MongoDB utilizando cualquiera de los siguientes:

  • Una cadena de conexión

  • Un método de fábrica MongoCredential

Una cadena de conexión (también conocida como URI de conexión) especifica cómo conectarse y autenticarse en su clúster MongoDB.

Para autenticarse usando una cadena de conexión, incluya su configuración en su cadena de conexión y pásela al método MongoClient.create() para crear una instancia de su MongoClient. Connection String La pestaña de cada sección proporciona la sintaxis para autenticarse usando una cadena de conexión.

Como alternativa, puede usar la clase MongoCredential para especificar sus datos de autenticación. La clase MongoCredential contiene métodos de fábrica estáticos que construyen instancias con su mecanismo de autenticación y credenciales. Al usar la clase auxiliar MongoCredential, debe usar la clase MongoClientSettings.Builder para configurar sus ajustes de conexión al construir su MongoClient. La pestaña MongoCredential de cada sección proporciona la sintaxis para la autenticación mediante MongoCredential.

Para obtener más información sobre estas clases y métodos, consulte la siguiente documentación de API:

SCRAM-SHA-256 es un mecanismo de autenticación por desafío-respuesta salado (SCRAM) que utiliza tu nombre de usuario y contraseña, cifrados con el algoritmo SHA-256, para autenticar a tu usuario. Este es el mecanismo de autenticación por defecto.

Los siguientes fragmentos de código muestran cómo especificar el mecanismo de autenticación, utilizando los siguientes marcadores de posición:

  • db_username - su nombre de usuario de la base de datos MongoDB.

  • db_password - la contraseña de usuario de su base de datos MongoDB.

  • hostname - dirección de red de su servidor MongoDB, accesible para su cliente.

  • port - número de puerto de su servidor MongoDB.

  • authenticationDb Base de datos MongoDB que contiene los datos de autenticación del usuario. Si omite este parámetro, el controlador usa el valor predeterminado admin.

Seleccione la pestaña Connection String o MongoCredential a continuación para obtener instrucciones y un código de muestra para especificar este mecanismo de autenticación predeterminado:

Para especificar el mecanismo de autenticación predeterminado mediante una cadena de conexión, omítalo. El código para instanciar un MongoClient debería ser similar al siguiente:

val mongoClient =
MongoClient.create("mongodb://<username>:<password>@<hostname>:<port>/?authSource=<authenticationDb>")

Para especificar el mecanismo de autenticación predeterminado mediante la clase MongoCredential, utilice el método createCredential(). El código para instanciar un MongoClient debería ser similar al siguiente:

val credential = MongoCredential.createCredential(
"<username>", "<authenticationDb>", "<password>".toCharArray()
)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<hostname>", "<port>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

También puede especificar explícitamente el mecanismo de autenticación SCRAM-SHA-256, como se muestra en los siguientes fragmentos de código. Seleccione la pestaña Connection String o MongoCredential a continuación para obtener instrucciones y un código de ejemplo para especificar este mecanismo de autenticación:

Para especificar el mecanismo de autenticación SCRAM-SHA-256 mediante una cadena de conexión, asigne al parámetro authMechanism el valor SCRAM-SHA-256 en su cadena de conexión. El código para instanciar un MongoClient debería ser similar al siguiente:

val mongoClient =
MongoClient.create("mongodb://<username>:<password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256")

Para especificar el mecanismo de autenticación predeterminado con la MongoCredential clase, utilice el método createScramSha256Credential(). El código para instanciar un MongoClient debería ser similar al siguiente:

val credential = MongoCredential.createScramSha256Credential(
"<username>", "<authenticationDb>", "<password>".toCharArray()
)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<hostname>", "<port>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

Nota

El mecanismo de autenticación MONGODB-AWS está disponible para las implementaciones de MongoDB en MongoDB Atlas.

El MONGODB-AWS 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 cómo configurar MongoDB Atlas, consulte la guía "Configurar la autenticación sin contraseña con 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().

Aprende cómo especificar este mecanismo de autenticación y las distintas formas de proporcionar tus credenciales de AWS IAM en las siguientes secciones.

Estas secciones contienen ejemplos de código que utilizan los siguientes marcadores de posición:

  • awsKeyId - valor de su ID de clave de acceso de AWS

  • awsSecretKey - valor de su clave de acceso secreta de AWS

  • atlasUri - dirección de red de su implementación de MongoDB Atlas

  • hostname - nombre de host de su implementación de MongoDB Atlas

  • port - puerto de su implementación de MongoDB Atlas

  • awsSessionToken - valor de su token de sesión 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 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 utilizar el SDK de AWS para Java para la autenticación MONGODB-AWS, debe realizar lo siguiente:

  1. Especificar el mecanismo de autenticación

  2. Agregue el SDK como una dependencia a su proyecto

  3. 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.18.9.

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.337.

Para proporcionar sus credenciales, consulte la siguiente documentación de AWS para la versión que necesita:

Nota

Si incluye tanto la versión v1 como la v2 del AWS SDK para Java en su proyecto, debe usar los métodos v2 para proporcionar sus credenciales.

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:

  1. Especificar el mecanismo de autenticación

  2. 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 EC2, asegúrese de que ninguna de las variables de entorno mencionadas esté configurada. El controlador obtiene las credenciales del punto final de metadatos de la instancia EC2 IPv4 predeterminada.

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:

  1. Especificar el mecanismo de autenticación

  2. 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)

El X.509 mecanismo de autenticación utiliza TLS con509 certificados X. para autenticar a su usuario, identificado por los nombres distinguidos relativos (RDN) de su certificado de cliente. Al especificar el X.509 mecanismo de autenticación, el servidor autentica la conexión utilizando el nombre de sujeto del certificado de cliente.

Los siguientes fragmentos de código muestran cómo especificar el mecanismo de autenticación, utilizando los siguientes marcadores de posición:

  • hostname - dirección de red de su servidor MongoDB, accesible para su cliente.

  • port - número de puerto de su servidor MongoDB.

  • authenticationDb Base de datos MongoDB que contiene los datos de autenticación del usuario. Si omite este parámetro, el controlador usa el valor predeterminado admin.

Seleccione la pestaña Connection String o MongoCredential a continuación para obtener instrucciones y un código de muestra para especificar este mecanismo de autenticación:

Para especificar el mecanismo de autenticación X.509 mediante una cadena de conexión, asigne el valor MONGODB-X509 al parámetro authMechanism y habilite TLS asignando el valor true al parámetro tls. El código para instanciar un MongoClient debería ser similar al siguiente:

val mongoClient =
MongoClient.create("mongodb://<username>:<password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=MONGODB-X509&tls=true")

Para especificar el X.509 mecanismo de autenticación mediante la MongoCredential clase, utilice el método createMongoX509Credential(). Además, habilite TLS llamando al método applyToSslSettings() y estableciendo la enabled propiedad en true en el bloque SslSettings.Builder. El código para instanciar un MongoClient debería ser similar al siguiente:

val credential = MongoCredential.createMongoX509Credential()
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(
ServerAddress("<hostname>", "<port>"))
)
}
.applyToSslSettings { builder ->
builder.enabled(true)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

Para obtener información adicional sobre cómo configurar su aplicación para usar certificados y opciones TLS/SSL, consulte nuestra guía TLS/SSL.

Volver

Conexión de proxy SOCKS5

En esta página