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, consulte RFC 5802 y mecanismo de autenticación de desafío-respuesta salado en Wikipedia.
Para obtener más información sobre la implementación de SCRAM de MongoDB, consulte SCRAM en el manual del servidor MongoDB.
Marcadores de posición de código
Los ejemplos de código de 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 de MongoDB del usuario a autenticar.<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 predeterminado
El mecanismo de autenticación DEFAULT es una configuración alternativa que le indica al controlador que negocie el primer mecanismo de autenticación compatible con 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.
Puede especificar el mecanismo de autenticación predeterminado estableciendo el parámetro authMechanism en DEFAULT en la cadena de conexión o omitiendo el parámetro ya que es el valor predeterminado.
El siguiente ejemplo muestra cómo establecer el mecanismo de autenticación al predeterminado 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 que admite MongoDB, consulte la sección SCRAM del manual del servidor MongoDB.
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 predeterminado para las versiones de MongoDB 3.0, 3.2, 3.4 y 3.6.
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.
Puede especificar este mecanismo de autenticación estableciendo el authMechanism parámetro en 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: