Mecanismos de autenticação empresarial
Nesta página
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)
.
Kerberos (GSSAPI/SSPI)
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
paraGSSAPI
.Configure o valor
SERVICE_NAME
no parâmetroauthMechanismProperties
se utilizar um valor diferente demongodb
.Especifique um valor
SERVICE_REALM
no parâmetroauthMechanismProperties
se um realm do serviço personalizado for exigido.Especifique um valor
CANONICALIZE_HOST_NAME
no parâmetroauthMechanismProperties
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 hostforward
: Executa uma pesquisa de DNS direta para canonicalizar o nome do hostforwardAndReverse
: 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.
LDAP (PLAIN)
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.