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-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.
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: