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 de mecanismos de autenticação SCRAM, 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 .
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.<cluster_url>
: O endereço de rede da sua implantação MongoDB .
Para usar os exemplos de código, substitua esses espaços reservados por seus próprios valores.
Mecanismo de autenticação padrão
O mecanismo de autenticação do DEFAULT
é uma configuração de contingência que instrui o driver a negociar o primeiro mecanismo de autenticação suportado pelo servidor na seguinte ordem de preferência:
SCRAM-SHA-256
SCRAM-SHA-1
MONGODB-CR
Se a opção DEFAULT
for especificada, o driver primeiro tentará autenticar usando SCRAM-SHA-256
. Se a versão da instância MongoDB não suportar este mecanismo, o driver tentará autenticar utilizando o SCRAM-SHA-1
. Se a instância também não oferecer suporte a esse mecanismo, o driver tentará se autenticar usando MONGODB-CR
.
Você pode especificar o mecanismo de autenticação padrão definindo o parâmetro authMechanism
como DEFAULT
na string de conexão ou omitindo o parâmetro, pois é o valor padrão.
O exemplo a seguir mostra como definir o mecanismo de autenticação para o padrão definindo authMechanism
como DEFAULT
na string de conexão:
Importante
Sempre codifique em URI o nome de usuário e a senha usando o encodeURIComponent
método para garantir que sejam analisados corretamente.
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const username = encodeURIComponent("<db_username>"); const password = encodeURIComponent("<db_password>"); const clusterUrl = "<cluster_url>"; const authMechanism = "DEFAULT"; // Replace the following with your MongoDB deployment's connection string. const uri = `mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() { try { // Establish and verify connection await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
Para saber mais sobre a versão SCRAM compatível com o MongoDB, consulte a seção SCRAM do manual do MongoDB Server.
SCRAM-SHA-256
Observação
SCRAM-SHA-256
é o método de autenticação padrão para MongoDB a partir da versão 4.0
SCRAM-SHA-256
é uma versão SCRAM que utiliza seu nome de usuário e senha, codificado com o algoritmo do SHA-256
para autenticar seu usuário.
Você pode especificar esse mecanismo de autenticação definindo o authMechanism
para o valor SCRAM-SHA-256
na string de conexão , conforme mostrado no código de exemplo a seguir.
Importante
Sempre codifique em URI o nome de usuário e a senha usando o encodeURIComponent
método para garantir que sejam analisados corretamente.
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const username = encodeURIComponent("<db_username>"); const password = encodeURIComponent("<db_password>"); const clusterUrl = "<cluster_url>"; const authMechanism = "SCRAM-SHA-256"; // Replace the following with your MongoDB deployment's connection string. const uri = `mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() { try { // Establish and verify connection await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
SCRAM-SHA-1
Observação
SCRAM-SHA-1
é o método de autenticação padrão para as versões 3.0, 3.2, 3.4 e 3.6. do MongoDB.
SCRAM-SHA-1
é uma versão SCRAM que utiliza seu nome de usuário e senha, codificado com o algoritmo do SHA-1
para autenticar seu usuário.
Você pode especificar este mecanismo de autenticação configurando o parâmetro authMechanism
para o valor SCRAM-SHA-1
na string de conexão como mostrado no seguinte código de amostra.
Importante
Sempre codifique em URI o nome de usuário e a senha usando o encodeURIComponent
método para garantir que sejam analisados corretamente.
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const username = encodeURIComponent("<db_username>"); const password = encodeURIComponent("<db_password>"); const clusterUrl = "<cluster_url>"; const authMechanism = "SCRAM-SHA-1"; // Replace the following with your MongoDB deployment's connection string. const uri = `mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() { try { // Establish and verify connection await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
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: