Visão geral
O SCRAM (Salted Challenge Response Authentication Mechanism) é uma família de mecanismos de autenticação que usa um mecanismo de desafio-resposta para autenticar o usuário. SCRAM-SHA-256, que utiliza o algoritmo SHA-256 para hash sua senha, é o mecanismo de autenticação padrão no MongoDB Server versão 4.0 e posterior. SCRAM-SHA-1, que usa o algoritmo SHA-1, é o mecanismo de autenticação padrão nas versões do MongoDB Server anteriores à 4.0.
Você pode usar o SCRAM para autenticar no MongoDB Atlas, Enterprise Advanced e MongoDB Community Edition.
Dica
Mecanismos SCRAM
Para saber mais sobre a família SCRAM de mecanismos de autenticação, consulte RFC 5802 e Mecanismo de autenticação de resposta de desafio salgado na Wikipedia.
Para obter mais informações sobre a implementação do MongoDB do SCRAM, consulte SCRAM no manual do MongoDB Server .
Observação
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.
Espaços reservados de código
Os exemplos de código nesta página usam os seguintes espaços reservados:
<db_username>: O nome de usuário MongoDB do usuário a ser autenticado.<db_password>: A senha MongoDB do usuário para autenticar.<hostname>: O endereço de rede da sua implantação MongoDB .<port>: o número da porta da sua implantação do MongoDB . Se você omitir este parâmetro, o driver utilizará o número de porta padrão (27017). Você não precisa de um número de porta ao se conectar a um cluster MongoDB Atlas .<authenticationDb>: O banco de dados MongoDB que contém os dados de autenticação do usuário. Se omitir este parâmetro, o driver utiliza o valor padrão,admin.
Para usar os exemplos de código, substitua esses espaços reservados por seus próprios valores.
Especifique o mecanismo de autenticação SCRAM padrão
Para usar o mecanismo SCRAM padrão para autenticar seu usuário MongoDB , especifique suas credenciais MongoDB , mas não especifique um mecanismo de autenticação. Selecione a aba Connection String ou MongoCredential abaixo para obter instruções e amostras de código para a sintaxe correspondente:
Para especificar o mecanismo de autenticação padrão usando uma string de conexão, omita o mecanismo. O código para instanciar um MongoClient se assemelha ao seguinte:
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
Para especificar o mecanismo de autenticação padrão usando a classe MongoCredential, use o método createCredential(). O código para instanciar um MongoClient se assemelha ao seguinte:
String user = "<db_username>"; // the user name String source = "<authenticationDb>"; // the source where the user is defined char[] password = "<db_password>".toCharArray(); // 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("<hostname>", "<port>")))) .credential(credential) .build());
Para obter mais informações sobre os mecanismos SCRAM compatíveis com o MongoDB , consulte a seção SCRAM do manual do MongoDB Server .
Especificar SCRAM-SHA-256 autenticação
SCRAM-SHA-256 é o método de autenticação padrão para o MongoDB começando no MongoDB 4.0, mas este exemplo de código mostra como usar explicitamente esse mecanismo. Selecione a aba Connection String ou MongoCredential para obter instruções e amostras de código para especificar este mecanismo de autenticação:
Para especificar o mecanismo de autenticação do SCRAM-SHA-256 utilizando uma string de conexão, atribua ao parâmetro authMechanism o valor SCRAM-SHA-256 em sua string de conexão. O código para instanciar um MongoClient se assemelha ao seguinte:
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");
Para especificar o mecanismo de autenticação SCRAM-SHA-256 usando a classe MongoCredential, use o método createScramSha256Credential(). O código para instanciar um MongoClient se assemelha ao seguinte:
String user = "<db_username>"; // the user name String source = "<authenticationDb>"; // the source where the user is defined char[] password = "<db_password>".toCharArray(); // 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("<hostname>", "<port>")))) .credential(credential) .build());
Especificar SCRAM-SHA-1 autenticação
SCRAM-SHA-1 é o método de autenticação padrão para versões do MongoDB anteriores a 4.0, mas este exemplo de código mostra como usar explicitamente esse mecanismo. Selecione a aba Connection String ou MongoCredential para obter instruções e amostras de código para especificar este mecanismo de autenticação:
Para especificar o mecanismo de autenticação do SCRAM-SHA-1 utilizando uma string de conexão, atribua ao parâmetro authMechanism o valor SCRAM-SHA-1 em sua string de conexão. O código para instanciar um MongoClient se assemelha ao seguinte:
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");
Para especificar o mecanismo de autenticação SCRAM-SHA-1 usando a classe MongoCredential, use o método createScramSha1Credential(). O código para instanciar um MongoClient se assemelha ao seguinte:
String user = "<db_username>"; // the user name String source = "<authenticationDb>"; // the source where the user is defined char[] password = "<db_password>".toCharArray(); // 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("<hostname>", "<port>")))) .credential(credential) .build());
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos nesta página, consulte a seguinte documentação da API: