Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Autenticação

Neste guia, você aprenderá como autenticar com o MongoDB usando os mecanismos de autenticação disponíveis no MongoDB Community Edition. Os mecanismos de autenticação são processos pelos quais o driver e o servidor confirmam a identidade de um cliente para garantir maior segurança antes de se conectar.

Inclua as seguintes declarações de importação:

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

Uma credencial de autenticação é representada como uma instância da classe MongoCredential . A classe MongoCredential inclui métodos de fábrica estáticos para cada um dos mecanismos de autenticação suportados.

Para criar uma credencial que se autentica usando o mecanismo de autenticação padrão, SCRAM-SHA-256, crie uma credencial usando o método estático de fábrica 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

O driver Java Reactive Streams não suporta objetosUnixServerAddress ou conexões de soquete de domínio. Para usar um soquete de domínio para se conectar, use o driver Java Sync. Caso contrário, use um objeto ServerAddress para se conectar a partir do driver Java Reactive Streams.

Ou você pode usar uma connection string sem especificar explicitamente o mecanismo de autenticação:

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

Para mecanismos de desafio e resposta, recomendamos usar o mecanismo de autenticação padrão. Isso simplifica as atualizações e garante que o algoritmo de hash correto seja usado.

O Mecanismo de Autenticação de Resposta e Desafio SalgadoSCRAM() é baseado no padrão IETF RFC 5802 que define as melhores práticas para a implementação de mecanismos de resposta e desafio para autenticar usuários com senhas. O MongoDB SCRAM-SHA-1 suporta, que usa a SHA-1 função de hash, e,SCRAM- SHA-256 que usa a SHA-256 função de hash.

Para criar explicitamente uma credencial do tipo SCRAM-SHA-256, utilize o 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());

Ou você pode usar uma connection string que especifique explicitamente authMechanism=SCRAM-SHA-256:

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

Para criar explicitamente uma credencial do tipo SCRAM-SHA-1, utilize o 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());

Ou você pode usar uma connection string que especifique explicitamente authMechanism=SCRAM-SHA-1:

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

Importante

O MongoDB não suporta mais o mecanismo de autenticação do MongoDB Challenge-Response (MONGODB-CR) obsoleto. Se seu sistema tiver credenciais de usuário armazenadas em um esquema do MONGODB-CR, você deverá atualizar para um mecanismo baseado em SCRAM.

Para criar explicitamente uma credencial do tipo MONGODB-CR utilize o 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());

Ou você pode usar uma connection string que especifique explicitamente authMechanism=MONGODB-CR:

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

Observação

Depois de atualizar o esquema de autenticação de MONGODB-CR para SCRAM, as credenciais MONGODB-CR não serão autenticadas.

Com o mecanismo X.509 , o MongoDB usa o certificado X.509 apresentado durante a negociação SSL para autenticar um usuário cujo nome é derivado do nome distinto do certificado X.509 .

X. A autenticação 509 requer o uso de conexões SSL com validação de certificado. Para criar uma credencial deste tipo, utilize o método de fábrica estática 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());

Ou você pode usar uma connection string que especifique explicitamente authMechanism=MONGODB-X509:

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

Veja Usar x.509 Tutorial de certificados para autenticação de clientes no manual do servidor MongoDB para saber mais sobre como determinar o nome do assunto a partir do certificado.

Voltar

Segurança

Nesta página