Menu Docs
Página inicial do Docs
/ / /
Node.js
/ /

Mecanismos de autenticação empresarial

Nesta página

  • Kerberos (GSSAPI/SSPI)
  • LDAP (PLAIN)

Neste guia, você pode encontrar exemplos de código para conexão ao MongoDB com cada mecanismo de autenticação disponível na MongoDB Enterprise Edition: Kerberos (GSSAPI/SSPI) e LDAP (PLAIN).

Observação

O driver do Node.js suporta Kerberos no UNIX utilizando a biblioteca MIT Kerberos e no Windows utilizando a API SSLI.

O mecanismo de autenticação do GSSAPI utiliza seu principal de usuário para autenticar em um serviço Kerberos.

Você pode especificar esse mecanismo de autenticação executando as seguintes ações ao especificar opções em sua connection string:

  • Configure o parâmetro authMechanism para GSSAPI.

  • Configure o valor SERVICE_NAME no parâmetro authMechanismProperties se utilizar um valor diferente de mongodb.

  • Especifique um valor SERVICE_REALM no parâmetro authMechanismProperties se um realm do serviço personalizado for exigido.

  • Especifique um valor CANONICALIZE_HOST_NAME no parâmetro authMechanismProperties se a canonicalização do nome do host for necessária. Esta propriedade pode assumir os seguintes valores:

    • none: (padrão) Não executa canonicalização de nome de host

    • forward: Executa uma pesquisa de DNS direta para canonicalizar o nome do host

    • forwardAndReverse: Executa uma pesquisa de DNS encaminhada e, em seguida, uma pesquisa reversa sobre esse valor para canonicalizar o nome do host

Importante

O parâmetro gssapiServiceName é preterido e pode ser removido em futuras versões do driver. Em vez disso, use authMechanismProperties=SERVICE_NAME:<your service name> no URI de conexão. Consulte a documentação do parâmetro authMechanismProperties para obter mais informações.

A seguinte amostra de código autentica para Kerberos para UNIX utilizando GSSAPI.

Importante

Sempre codifique o URI do principal usando o método encodeURIComponent para garantir que ele seja analisado corretamente.

const { MongoClient } = require("mongodb");
// specify the placeholder values for your environment in the following lines
const clusterUrl = "<MongoDB cluster URL>";
const principal = encodeURIComponent("<Kerberos principal and realm>");
const serviceRealm = "<Kerberos service realm>";
const canonicalizationSetting = "<canonicalization setting>";
const authMechanismProperties = `SERVICE_REALM:${serviceRealm},CANONICALIZE_HOST_NAME:${canonicalizationSetting}`;
const authMechanism = "GSSAPI";
// Connection URI
const uri = `mongodb+srv://${principal}@${clusterUrl}/?authMechanism=${authMechanism}&authMechanismProperties=${authMechanismProperties}`;
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);

Observação

O método refere-se ao GSSAPI mecanismo de autenticação em vez de Kerberos porque o driver autentica via GSSAPI RFC-4652 o mecanismo SASL.

O mecanismo de autenticação do PLAIN utiliza seu nome de usuário e senha para autenticar em um servidor LDAP (Lightweight Directory Access Protocol).

Você pode especificar esse mecanismo de autenticação definindo o parâmetro authMechanism como PLAIN e incluindo seu nome de usuário e senha do LDAP na connection string , conforme mostrado no código de exemplo a seguir.

const { MongoClient } = require("mongodb");
// specify the placeholder values for your environment in the following lines
const clusterUrl = "<MongoDB cluster URL>";
const ldapUsername = "<LDAP username>";
const ldapPassword = "<LDAP password>";
const authMechanism = "PLAIN";
// Connection URI
const uri = `mongodb+srv://${ldapUsername}:${ldapPassword}@${clusterUrl}/?authMechanism=${authMechanism}`;
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);

Observação

O mecanismo de autenticação é nomeado PLAIN em vez de LDAP , pois autentica usando a camada simples de autenticação e segurança PLAIN (SASL) definida em RFC-4616.

Voltar

Mecanismos de autenticação