Overview
El Mecanismo de Autenticación por Desafío-Respuesta con Sal (SCRAM) es una familia de mecanismos de autenticación que utilizan un mecanismo de desafío-respuesta para autenticar al usuario. SCRAM-SHA-,256 que utiliza el256 algoritmo SHA- para cifrar la contraseña, es el mecanismo de autenticación predeterminado en MongoDB Server versión 4.0 y posteriores. SCRAM-SHA-,1 que utiliza el1 algoritmo SHA-, es el mecanismo de autenticación predeterminado en MongoDB Server versiones anteriores 4.0 a.
Puede utilizar SCRAM para autenticarse en MongoDB Atlas, MongoDB Enterprise Advanced y MongoDB Community Edition.
Tip
Mecanismos SCRAM
Para obtener más información sobre la familia de mecanismos de autenticación SCRAM, consulta RFC 5802 y Mecanismo de Autenticación por Desafío con Sal en Wikipedia.
Para obtener más información sobre la implementación SCRAM de MongoDB, consulte SCRAM en el manual del servidor de MongoDB.
Marcadores de posición de código
Los ejemplos de código en esta página utilizan los siguientes marcadores de posición:
<db_username>: El nombre de usuario de MongoDB del usuario que se va a autenticar.<db_password>La contraseña MongoDB del usuario para autenticarse.<cluster_url>: La dirección de red de tu implementación de MongoDB.
Para utilizar los ejemplos de código, reemplaza estos marcadores de posición por tus propios valores.
Mecanismo de autenticación por defecto
El mecanismo de autenticación DEFAULT es una configuración de respaldo que instruye al driver a negociar el primer mecanismo de autenticación soportado por el servidor en el siguiente orden de preferencia:
SCRAM-SHA-256SCRAM-SHA-1MONGODB-CR
Si se especifica la opción DEFAULT, el controlador primero intenta autenticarse usando SCRAM-SHA-256. Si la versión de la instancia de MongoDB no admite ese mecanismo, el controlador intenta autenticarse usando SCRAM-SHA-1. Si la instancia tampoco admite ese mecanismo, el controlador intenta autenticarse usando MONGODB-CR.
Puedes especificar el mecanismo de autenticación predeterminado configurando el parámetro authMechanism en DEFAULT en la cadena de conexión, o bien omitiendo el parámetro porque es el valor predeterminado.
El siguiente ejemplo muestra cómo establecer el mecanismo de autenticación en el por defecto configurando authMechanism en DEFAULT en la cadena de conexión:
Importante
Siempre codifica URI el nombre de usuario y la contraseña usando el método encodeURIComponent para asegurarte de que se interpreten correctamente.
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 obtener más información sobre la versión SCRAM compatible con MongoDB, consulte la sección SCRAM del manual de MongoDB Server.
SCRAM-SHA-256
Nota
SCRAM-SHA-256 es el método de autenticación por defecto para MongoDB a partir de la versión 4.0
SCRAM-SHA-256 es una versión de SCRAM que utiliza tu nombre de usuario y contraseña, cifrada con el algoritmo SHA-256 para autenticar al usuario.
Puede especificar este mecanismo de autenticación estableciendo authMechanism en SCRAM-SHA-256 el valor en la cadena de conexión como se muestra en el siguiente código de muestra.
Importante
Siempre codifica URI el nombre de usuario y la contraseña usando el método encodeURIComponent para asegurarte de que se interpreten correctamente.
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
Nota
SCRAM-SHA-1 es el método de autenticación por defecto para las versiones 3.0, 3.2, 3.4 y 3.6 de MongoDB.
SCRAM-SHA-1 es una versión de SCRAM que utiliza tu nombre de usuario y contraseña, cifrada con el algoritmo SHA-1 para autenticar al usuario.
Puedes especificar este mecanismo de autenticación configurando el parámetro authMechanism con el valor SCRAM-SHA-1 en la cadena de conexión como se muestra en el siguiente código de muestra.
Importante
Siempre codifica URI el nombre de usuario y la contraseña usando el método encodeURIComponent para asegurarte de que se interpreten correctamente.
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);
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos analizados en esta página, consulte la siguiente documentación de API: