Configuração
Nesta página
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.
Configurando TLS/SSL
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"}};
Configurando autenticação
Mecanismo de autenticação padrão
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:
auto client = mongocxx::client{uri{"mongodb://user1:pwd1@host1/?authSource=db1"}};
SCRAM-SHA-1
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"
:
auto client = mongocxx::client{ uri{"mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1"} };
MONGODB-CR
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.
X.509
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:
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.
Kerberos (GSSAPI
)
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"
:
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.
LDAP
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"
:
auto client = mongocxx::client{ uri{"mongodb://user1:pwd1@host1/?authSource=$external&authMechanism=PLAIN"} };
Configurar um pool de conexões
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.
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.
Compactando dados de e para MongoDB
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.