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

Mecanismos de autenticação

Nesta página

  • Visão geral
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-X509
  • MONGODB-AWS
  • URI de conexão
  • Variáveis de ambiente
  • ECS Metadata
  • EC2 Metadados de instância
  • Documentação da API

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, 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 do admin.

  • authMechanism: Defina como SCRAM-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, 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 do admin.

  • 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);

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:

  1. Crie uma estrutura mongoc_ssl_opt_t . Nesta estrutura, defina o campo pem_file para o caminho do arquivo .pem que contém seu certificado do cliente e chave privada.

  2. 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);

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:

  1. Parâmetros nomeados passados para o URI de conexão

  2. Variáveis de ambiente

  3. Solicitação de Amazon Web Services EKS AssumeRoleWithWebIdentity

  4. Metadados do container ECS

  5. 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.

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);

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);

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);

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.

Para saber mais sobre como autenticar seu aplicação no driver C, consulte a seguinte documentação da API:

Voltar

Segurança