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 no MongoDB.
Importante
Codificação percentual
Você deve por cento codificar para um nome de usuário e uma senha antes de incluí-los em um URI do MongoDB .
SCRAM-SHA-256
SCRAM-SHA-256, conforme definido por RFC 7677, é o mecanismo de autenticação padrão em sistemas do MongoDB que executam o MongoDB v4.0 ou mais tarde.
Para autenticar usando SCRAM-SHA-256, defina as seguintes opções de conexão:
username
: o nome de usuário para autenticar. Porcentagem Codifique esse valor antes de incluí-lo no URI de conexão.password
: A senha para autenticar. Porcentagem Codifique esse valor antes de incluí-lo no URI de conexão.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. Se você não especificar um banco de banco de dados de autenticação, ele autenticará no banco de banco de dados doadmin
.authMechanism
: Defina comoSCRAM-SHA-256
.
Você pode definir essas opções usando parâmetros em sua string de conexão, conforme mostrado no exemplo de código a seguir:
const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-256&authSource=<authentication database>"; mongoc_client_t *client = mongoc_client_new(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:
username
: o nome de usuário para autenticar. Porcentagem Codifique esse valor antes de incluí-lo no URI de conexão.password
: A senha para autenticar. Porcentagem Codifique esse valor antes de incluí-lo no URI de conexão.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 essas opções usando parâmetros em sua string de conexão, conforme mostrado no exemplo de código a seguir:
const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-1&authSource=<authentication database>"; mongoc_client_t *client = mongoc_client_new(uri);
MONGODB-X509
Se você compilar o driver C com suporte para TLS, o driver C poderá apresentar um certificado de cliente X.509 ao MongoDB para provar sua identidade durante o handshake TLS. O mecanismo de autenticação MONGODB-X509 utiliza este certificado para autenticar o cliente.
Para autenticar com este mecanismo, execute as seguintes etapas:
Crie uma estrutura
mongoc_ssl_opt_t
. Nesta estrutura, defina o campopem_file
para o caminho do arquivo.pem
que contém seu certificado do cliente e chave privada.Em seu URI de conexão, defina a opção de conexão
authMechanism
como"MONGODB-X509"
.
O exemplo de código a seguir mostra como criar um cliente MongoDB que se autentica usando o mecanismo MONGODB-X509:
mongoc_client_t *client; mongoc_ssl_opt_t ssl_opts = {0}; ssl_opts.pem_file = "mycert.pem"; const char *uri = "mongodb://<percent-encoded username>@<hostname>:<port>/?authMechanism=MONGODB-X509"; mongoc_client_t *client = mongoc_client_new(uri); mongoc_client_set_ssl_opts(client, &ssl_opts);
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 AWS IAM (Amazon Web Services Identity and Access Management) ou AWS Lambda para autenticar seu aplicação. Para usar esse mecanismo para autenticar seu aplicação, primeiro crie um usuário com um Amazon Resource Name (ARN) associado no banco de banco de dados $external
. Em seguida, especifique o authMechanism do MONGODB-AWS
no URI de conexão.
Quando você usa o mecanismo MONGODB-AWS
, o driver C tenta recuperar suas credenciais da AWS 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 credenciais AWS para o construtor do mongoc_client_t
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 essas opções no URI de conexão, conforme mostrado no exemplo a seguir:
const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
Você também pode incluir um token de sessão Amazon Web Services passando-o para o parâmetro authMechanismProperties
:
const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<token>"); mongoc_client_t *client = mongoc_client_new(uri);
Variáveis de ambiente
Se você não incluir um nome de usuário e senha em seu URI de conexão, o driver C tentará recuperar as credenciais da AWS 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:
const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
ECS Metadata
Se seu aplicação for executado em um container do Elastic Container Service (ECS), o driver C poderá recuperar automaticamente credenciais temporárias da AWS 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:
const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
EC2 Metadados de instância
O driver C pode recuperar automaticamente credenciais temporárias da AWS de uma instância do 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 :
const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
Observação
Se você definir qualquer uma das variáveis de ambiente dos métodos de autenticação anteriores da AWS, o driver C tentará recuperar as credenciais usando esses métodos antes de tentar recuperá-las de uma instância2 do EC. 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 autenticar seu aplicação no driver C, consulte a seguinte documentação da API: