Menu Docs
Página inicial do Docs
/ / /
Driver C++

Configuração

Nesta página

  • Configurando TLS/SSL
  • Configurando autenticação
  • Configurar um pool de conexões
  • Compactando dados de e para MongoDB

No driver mongocxx, a maior parte da configuração é feita por meio doURI de conexão . Algumas opções de conexão adicionais são possíveis por meio do cliente mongocxx::options:: classe.

Para habilitar o TLS (SSL), defina tls=true no URI:

mongodb://mongodb.example.com/?tls=true

Por padrão, o mongocxx verificará os certificados do servidor em relação à lista de CA do sistema local. Você pode substituir isso especificando configurações diferentes na string de conexão ou criando um mongocxx::options::tls objeto e passando-o para tls_opts em mongocxx::options::client.

Por exemplo, para usar uma CA personalizada ou para desabilitar a validação do certificado, consulte o exemplo a seguir:

// 1) Using tls_options
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
// If the server certificate is not signed by a well-known CA,
// you can set a custom CA file with the `ca_file` option.
tls_options.ca_file("/path/to/custom/cert.pem");
// If you want to disable certificate verification, you
// can set the `allow_invalid_certificates` option.
tls_options.allow_invalid_certificates(true);
client_options.tls_opts(tls_options);
auto client1 = mongocxx::client{uri{"mongodb://host1/?tls=true"}, client_options};
// 2) Using the URI
auto client2 = mongocxx::client{uri{"mongodb://host1/?tls=true&tlsAllowInvalidCertificates=true&tlsCAFile=/path/to/custom/cert.pem"}};

O MongoDB 3.0 alterou o mecanismo de autenticação padrão de MONGODB-CR para SCRAM-SHA-1. Para criar uma credencial que autentique corretamente, independentemente da versão do servidor, use uma connection string com o usuário e a senha diretamente no URI e com um parâmetro especificando o banco de dados do qual autenticar:

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{uri{"mongodb://user1:pwd1@host1/?authSource=db1"}};

Para criar explicitamente uma credencial do tipo SCRAM-SHA-1 utilize uma connection string como acima, mas com um parâmetro especificando o mecanismo de autenticação como "SCRAM-SHA-1":

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1"}
};

O MONGODB-CR authMechanism está obsoleto e não funcionará mais no MongoDB 4.0. Em vez disso, não especifique nenhum authMechanism e o driver usará um mecanismo de autenticação compatível com seu servidor.

O mecanismo X.509 autentica um usuário cujo nome é derivado do nome do assunto distinto do certificado X.509 apresentado pelo driver durante a negociação TLS. Esse método de autenticação requer o uso de conexões TLS com validação de certificado e está disponível no MongoDB 2.6 e mais recentes. Para criar uma credencial desse tipo, use uma string de conexão com um parâmetro que especifique o mecanismo de autenticação como "MONGODB-X509", que especifique o caminho para o arquivo PEM que contém a chave privada e o certificado do cliente e que tenha o TLS habilitado:

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://host1/?authMechanism=MONGODB-X509&tlsCertificateKeyFile=client.pem&tls=true"}
};

Consulte o tutorial MongoDB servidor X.509 para obter mais informações sobre como determinar o nome do assunto a partir do certificado.

O arquivo PEM também pode ser especificado usando o mongocxx::options::tls classe, consulte o exemplo de configuração TLS/SSL padrão acima.

O MongoDB Enterprise oferece suporte à autenticação proxy através do serviço Kerberos. Para criar uma credencial do tipo Kerberos (GSSAPI), use uma string de conexão com o nome de usuário e o Realm no URI, bem como um parâmetro que especifica o mecanismo de autenticação como "GSSAPI":

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://username%40REALM.COM@host1/?authMechanism=GSSAPI"}
};

Observação

O símbolo @ na string URI deve ser escapado para %40 como mostrado no exemplo acima.

O MongoDB Enterprise oferece suporte à autenticação proxy por meio de um serviço Lightweight Directory Access Protocol (LDAP). Para criar uma credencial do tipo LDAP, utilize uma string de conexão especificando o usuário, bem como parâmetros que especificam a origem de autenticação como "$external" e o mecanismo de autenticação como "PLAIN":

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://user1:pwd1@host1/?authSource=$external&authMechanism=PLAIN"}
};

Para configurar um pool de conexões, primeiro crie um mongocxx::pool, passando o URI como argumento. O tamanho do pool pode ser configurado no URI. Em seguida, chame mongocxx::pool::acquire para receber um cliente do pool. O cliente será automaticamente devolvido ao pool quando sair do escopo.

#include <mongocxx/pool.hpp>
#include <mongocxx/uri.hpp>
auto pool = mongocxx::pool{uri{"mongodb://host1/?minPoolSize=3&maxPoolSize=5"}};
{
// To get a client from the pool, call `acquire()`.
auto client = pool.acquire();
// The client is returned to the pool when it goes out of scope.
}

Consulte a documentação do pool de conexões para obter mais detalhes.

O MongoDB 3.4 adicionou suporte à compactação Snappy, enquanto a compactação zlib foi adicionada em 3.6 e a compactação zstd em 4.2.

Você pode ativar a compactação de dados nas opções apropriadas de URI. Saiba mais sobre essas opções na documentação da API do driver MongoDB C.

Voltar

Opções avançadas de configuração e instalação