Mecanismos de autenticação
Nesta página
Visão geral
Este guia descreve os mecanismos que você pode usar no driver C++ para autenticar usuários.
SCRAM-SHA-256
SCRAM-SHA-256, conforme definido por RFC 7677, é o mecanismo de autenticação padrão em implantações do MongoDB que executam o MongoDB v4.0 ou mais tarde.
Para autenticar com esse mecanismo, defina as seguintes opções de conexão:
db_username
: O nome de usuário do banco de dados de dados a ser autenticado.db_password
: a senha do banco de dados de dados para autenticar.authSource
: O banco de banco de dados MongoDB para autenticar. Por padrão, o driver C++ autentica no banco de banco de dados no URI de conexão, se você incluir um. Caso contrário, ele autentica no banco de banco de dados doadmin
.authMechanism
: Defina como"SCRAM-SHA-256"
.
Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client
, como mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "authSource=admin&authMechanism=SCRAM-SHA-256"); auto client = mongocxx::client(uri);
SCRAM-SHA-1
SCRAM-SHA-1, conforme definido por RFC 5802, é o mecanismo de autenticação padrão em sistemas do MongoDB que executam o MongoDB v3.6.
Para autenticar com esse mecanismo, defina as seguintes opções de conexão:
db_username
: o nome de usuário para autenticar.db_password
: A senha para autenticar.authSource
: O banco de banco de dados MongoDB para autenticar. Por padrão, o driver C++ autentica no banco de banco de dados doadmin
.authMechanism
: Defina como"SCRAM-SHA-1"
.
Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client
, como mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "authSource=admin&authMechanism=SCRAM-SHA-1"); auto client = mongocxx::client(uri);
MONGODB X.509
Se você habilitar o TLS, durante a negociação do TLS, o driver do C++ poderá apresentar um certificado de cliente X.509 ao MongoDB para provar sua identidade. O mecanismo de autenticação do MONGODB-X509
utiliza este certificado para autenticar o cliente.
Para autenticar com esse mecanismo, defina as seguintes opções de conexão:
tls
: Defina comoTrue
.tlsCertificateKeyFile
: o caminho do arquivo.pem
que contém seu certificado de cliente e chave privada.authMechanism
: Defina como"MONGODB-X509"
.
Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client
, como mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "tls=true&tlsCertificateKeyFile=path/to/client.pem&authMechanism=MONGODB-X509"); auto client = mongocxx::client(uri);
Para saber mais sobre como habilitar o TLS, consulte Configurar o TLS (Transport Layer Security).
MONGODB-AWS
Importante
O mecanismo de autenticação MONGODB-AWS requer MongoDB v4.4 ou posterior.
O mecanismo de autenticação do MONGODB-AWS
utiliza Credenciais do Amazon Web Services IAM (Amazon Web Services Identity and Access Management) ou Amazon Web Services Lambda para autenticar seu aplicação. Para autenticar usando esse mecanismo, primeiro crie um usuário com um Amazon Resource Name (ARN) associado no banco de banco de dados $external
e, em seguida, especifique o MONGODB-AWS
authMechanism no URI.
Quando você usa o mecanismo MONGODB-AWS
, o driver C++ tenta recuperar suas credenciais do Amazon Web Services das seguintes fontes, na ordem listada:
Parâmetros nomeados passados para o URI de conexão
Variáveis de ambiente
Solicitação de Amazon Web Services EKS AssumeRoleWithWebIdentity
Metadados do container ECS
Metadados de instância do EC2
As seções a seguir descrevem como usar o driver C++ para recuperar credenciais dessas fontes e usá-las para autenticar seu aplicação.
URI de conexão
Primeiro, o driver C++ verifica se você passou as credenciais do Amazon Web Services para o construtor MongoClient
como parte do URI de conexão. Para passar suas credenciais no URI de conexão, defina as seguintes opções de conexão:
username
: O da Amazon Web Services chave de acesso IAM ID para autenticar.password
: A chave de acesso secreto IAM Amazon Web Services .authMechanism
: Defina como"MONGODB-AWS"
.
Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client
, como mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
Você também pode incluir um token de sessão Amazon Web Services passando-o para o parâmetro authMechanismProperties
:
auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?" "authMechanism=MONGODB-AWSS&authMechanismProperties=AWS_SESSION_TOKEN:<token>"); auto client = mongocxx::client(uri);
Variáveis de ambiente
Se você não fornecer um nome de usuário e senha ao construir seu objeto MongoClient
, o driver C++ tentará recuperar as credenciais do Amazon Web Services a partir das seguintes variáveis de ambiente:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
(Opcional)
Para usar essas variáveis de ambiente para autenticar seu aplicativo, primeiro defina-as para os valores do Amazon Web Services IAM necessários para a autenticação, conforme mostrado no exemplo de código a seguir:
export AWS_ACCESS_KEY_ID=<AWS IAM access key ID> export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key> export AWS_SESSION_TOKEN=<AWS session token>
Após definir essas variáveis de ambiente, defina o parâmetro authMechanism
em seu URI de conexão para "MONGODB-AWS"
, conforme mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
Solicitação AssumeRoleWithWebIdentity
Se o seu aplicação autenticar usuários para o seu cluster EKS a partir de um provedor de identidade OpenID Connect (OIDC), o driver C++ poderá fazer uma solicitação do AssumeRoleWithWebIdentity
para trocar o token OIDC por credenciais temporárias do Amazon Web Services para seu aplicação.
Para autenticar com credenciais temporárias Amazon Web Services IAM retornadas por uma solicitação do AssumeRoleWithWebIdentity
, verifique se o arquivo de configuração do Amazon Web Services existe em seu ambiente e está configurado com as variáveis de ambiente do AWS_WEB_IDENTITY_TOKEN_FILE
e AWS_ROLE_ARN
. Para saber como criar e configurar um Amazon Web Services arquivo de configuração do , consulte Configuração na documentação do Amazon Web Services .
Após configurar seu ambiente para uma solicitação do AssumeRoleWithWebIdentity
, configure o parâmetro authMechanism
em seu URI de conexão para "MONGODB-AWS"
, como mostrado no seguinte exemplo:
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
Para obter mais informações sobre como usar uma solicitação AssumeRoleWithWebIdentity
para autenticar seu aplicativo, consulte a seguinte documentação do Amazon Web Services:
ECS Metadata
Se o seu aplicação for executado em um container do Elastic Container Service (ECS), o driver do C++ poderá recuperar automaticamente credenciais temporárias Amazon Web Services de um endpoint do ECS. Para fazer isso, especifique o URI do ponto de conexão ECS em uma variável de ambiente chamada AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
, conforme mostrado no exemplo a seguir:
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
Após definir a variável de ambiente, defina o parâmetro authMechanism
em seu URI de conexão para "MONGODB-AWS"
, conforme mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
EC2 Metadados de instância
O driver C++ pode recuperar automaticamente credenciais temporárias Amazon Web Services de uma instância da Amazon Elastic Cloud Compute (EC2). Para usar credenciais temporárias de dentro de uma instância do EC2 , configure o parâmetro authMechanism
em seu URI de conexão para "MONGODB-AWS"
, como mostrado no exemplo a seguir :
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
Observação
Se você definir qualquer uma das variáveis de ambiente dos métodos de autenticação anteriores do Amazon Web Services , o driver C++ tentará recuperar as credenciais usando esses métodos antes de tentar recuperá-las de uma instância do EC2. Para tentar recuperar credenciais somente de uma instância do EC2 , certifique-se de que as variáveis de ambiente não estejam definidas.
Documentação da API
Para saber mais sobre como criar um objeto mongocxx::client
no driver C++ , consulte a seguinte documentação da API: