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.
For more information about the MongoDB implementation of SCRAM, see SCRAM in the MongoDB Server manual.
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-256SCRAM-SHA-1MONGODB-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.
You can specify this authentication mechanism by setting the authMechanism parameter to the value SCRAM-SHA-1 in the connection string as shown in the following sample code.
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: