Docs Menu
Docs Home
/ /

Autenticación

En esta guía, aprenderá a autenticarse con MongoDB mediante los mecanismos de autenticación disponibles en MongoDB Community Edition. Los mecanismos de autenticación son procesos mediante los cuales el controlador y el servidor confirman la identidad de un cliente para garantizar la seguridad antes de conectarse.

Incluya las siguientes declaraciones de importación:

import com.mongodb.MongoCredential;
import com.mongodb.ConnectionString;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;

Una credencial de autenticación se representa como una instancia de la MongoCredential clase. La clase MongoCredential incluye métodos de fábrica estáticos para cada uno de los mecanismos de autenticación admitidos.

Para crear una credencial que se autentique mediante el mecanismo de autenticación predeterminado, SCRAM-SHA-256, cree una credencial utilizando el método de fábrica estático createCredential():

String user; // the user name
String source; // the source where the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createCredential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

Importante

El controlador Java Reactive Streams no es compatible ObjetosUnixServerAddress o conexiones de socket de dominio. Para usar un socket de dominio, utilice el controlador Java Sync. De lo contrario, utilice un objeto ServerAddress para conectarse desde el controlador Java Reactive Streams.

O bien, puede utilizar una cadena de conexión sin especificar explícitamente el mecanismo de autenticación:

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1");

Para los mecanismos de desafío y respuesta, recomendamos usar el mecanismo de autenticación predeterminado. Esto simplifica las actualizaciones y garantiza el uso del algoritmo hash correcto.

El mecanismo de autenticación desafío-respuesta conSCRAM sal () se basa en el estándar RFC 5802 de la IETF, que define las mejores prácticas para la implementación de mecanismos de desafío-respuesta para la autenticación de usuarios con contraseñas. MongoDB admite SCRAM-SHA-1 tanto, que utiliza la SHA-1 función hash,SCRAM- SHA-256 como, que utiliza la SHA-256 función hash.

Para crear explícitamente una credencial de tipo SCRAM-SHA-256, utilice el método createScramSha256Credential():

String user; // the user name
String source; // the source where the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha256Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

O bien, puedes utilizar una cadena de conexión que especifique explícitamente authMechanism=SCRAM-SHA-256:

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-256");

Para crear explícitamente una credencial de tipo SCRAM-SHA-1, utilice el método createScramSha1Credential():

String user; // the user name
String source; // the source where the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha1Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

O bien, puedes utilizar una cadena de conexión que especifique explícitamente authMechanism=SCRAM-SHA-1:

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1");

Importante

MongoDB ya no admite el mecanismo de autenticación de desafío-respuesta (MONGODB-CR), que ya no se utiliza. Si su implementación tiene credenciales de usuario almacenadas en un esquema MONGODB-CR, debe actualizar a un mecanismo basado en SCRAM.

Para crear explícitamente una credencial de tipo MONGODB-CR utilice el método de fábrica estático createMongCRCredential():

String user; // the user name
String database; // the name of the database in which the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createMongoCRCredential(user, database, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

O bien, puedes utilizar una cadena de conexión que especifique explícitamente authMechanism=MONGODB-CR:

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=MONGODB-CR");

Nota

Después de actualizar el esquema de autenticación de MONGODB-CR a SCRAM, las credenciales de MONGODB-CR no se autenticarán.

Con el mecanismo X.509, MongoDB utiliza el certificado X.509 presentado durante la negociación SSL para autenticar a un usuario cuyo nombre se deriva del nombre distinguido del certificado X.509.

La autenticación X.509 requiere el uso de conexiones SSL con validación de certificado. Para crear una credencial de este tipo, utilice el método de fábrica estático createMongoX509Credential():

String user; // The X.509 certificate derived user name, e.g. "CN=user,OU=OrgUnit,O=myOrg,..."
// ...
MongoCredential credential = MongoCredential.createMongoX509Credential(user);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

O bien, puedes utilizar una cadena de conexión que especifique explícitamente authMechanism=MONGODB-X509:

MongoClient mongoClient = MongoClients.create("mongodb://subjectName@host1/?authMechanism=MONGODB-X509&ssl=true");

Consulte el tutorial Usar certificados x. para autenticar clientes en509 el manual del servidor para obtener más información sobre cómo determinar el nombre del sujeto a partir del certificado.

Volver

Agregación

En esta página