Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Mecanismos de Autenticación SCRAM

El Salted Challenge Response Authentication Mechanism (SCRAM) es una familia de mecanismos de autenticación que utiliza un mecanismo de desafío-respuesta para autenticar al usuario. SCRAM-SHA-256, que utiliza el algoritmo SHA-256 para crear hash de tu contraseña, es el mecanismo de autenticación por defecto en MongoDB Server versión 4.0 y posteriores. SCRAM-SHA-1, que utiliza el algoritmo SHA-1 en su lugar, es el mecanismo de autenticación por defecto en las versiones de MongoDB Server anteriores a la 4.0.

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 con Desafío y Respuesta Sazonada en Wikipedia.

Para obtener más información sobre la implementación SCRAM de MongoDB, consulte SCRAM en el manual del servidor de MongoDB.

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.

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:

  1. SCRAM-SHA-256

  2. SCRAM-SHA-1

  3. MONGODB-CR

Si se especifica la opción DEFAULT, el controlador primero intenta autenticar usando SCRAM-SHA-256. Si la versión de la instancia de MongoDB no admite ese mecanismo, el controlador intentará autenticar utilizando 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.

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 configurando el authMechanism con el valor SCRAM-SHA-256 en la cadena de conexión como se muestra en el siguiente código de ejemplo.

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);

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);

Para aprender más sobre cualquiera de los métodos o tipos tratados en esta página, consulta la siguiente documentación de la API: