Menu Docs
Página inicial do Docs
/ / /
C#/.NET
/

Mecanismos de autenticação

Nesta página

  • Visão geral
  • Especificar um mecanismo de autenticação
  • Mecanismos
  • Default
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-AWS
  • X.509
  • Documentação da API

Neste guia, você aprenderá como autenticar com o MongoDB usando os mecanismos de autenticação disponíveis no MongoDB Community Edition. Os mecanismos de autenticação são processos pelos quais o driver e o servidor confirmam a identidade de um cliente para garantir maior segurança antes de se conectar.

Você pode usar os seguintes mecanismos de autenticação com a versão mais recente do MongoDB Community Edition:

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-AWS

  • X.509

Para autenticar usando GSSAPI/Kerberos ou LDAP, consulte a página de fundamentos do Enterprise Authentication Mechanisms . Para obter mais informações sobre como estabelecer uma conexão com seu cluster do MongoDB , consulte o Guia de Conexão.

Você pode especificar o mecanismo de autenticação e as credenciais ao se conectar ao MongoDB usando um dos seguintes métodos:

  • Uma connection string, também conhecida como URI de conexão, é uma string que informa ao driver como se conectar a um MongoDB deployment e como se comportar enquanto estiver conectado.

  • Um método de fábrica para o mecanismo de autenticação suportado, contido na classe MongoCredential.

Os exemplos a seguir contêm amostras de código que usam os seguintes espaços reservados:

  • <db_username> - Nome de usuário MongoDB.

  • <db_password> - Senha do usuário do MongoDB.

  • <hostname> - endereço de rede do servidor MongoDB, acessível pelo seu cliente.

  • <port> - número da porta do servidor MongoDB.

  • <authenticationDb> - Banco de dados MongoDB que contém os dados de autenticação do usuário. Se omitir este parâmetro, o condutor utiliza o valor padrão admin.

A configuração do mecanismo de autenticação padrão usa um dos seguintes mecanismos de autenticação, dependendo de quais versões do MongoDB seu servidor suporta:

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

Observação

A versão 4.0 do MongoDB usa SCRAM como mecanismo padrão e não suporta mais o MONGODB-CR.

Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente para especificar o mecanismo de autenticação padrão:

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
var credential = MongoCredential.CreateCredential("<authenticationDb>", "<db_username>", "<db_password>");
var settings = MongoClientSettings.FromConnectionString("<connection string>");
settings.Credential = credential;
var mongoClient = new MongoClient(settings);

SCRAM-SHA-256 é um mecanismo de autenticação de desafio-resposta (SCRAM) que usa seu nome de usuário e senha, criptografados com o algoritmo SHA-256 para autenticar seu usuário.

Você pode especificar o mecanismo de autenticação do SCRAM-SHA-256 com sua cadeia de conexão como segue:

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");

Dica

Mecanismo Padrão

A versão 4.0 e posterior do MongoDB utiliza o SCRAM-SHA-256 como o mecanismo de autenticação padrão se a versão do servidor MongoDB suportar.

Para saber mais sobre como especificar o mecanismo padrão, consulte Padrão.

SCRAM-SHA-1 é um mecanismo de desafio-resposta (SCRAM) que utiliza seu nome de usuário e senha, codificado com o algoritmo do SHA-1, para autenticar seu usuário.

Você pode especificar o mecanismo de autenticação do SCRAM-SHA-1 com sua cadeia de conexão como segue:

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");

Dica

Mecanismo Padrão

A versão 4.0 do MongoDB usa o SCRAM-SHA-1 como o mecanismo de autenticação padrão se o servidor não for compatível com SCRAM-SHA-256.

Para saber mais sobre como especificar o mecanismo padrão, consulte Padrão.

Observação

O mecanismo de autenticação do MONGODB-AWS está disponível somente para sistemas do MongoDB no MongoDB Atlas.

O mecanismo de autenticação do MONGODB-AWS utiliza suas credenciais do Amazon Web Services Identity and Access Management (AWS IAM) para autenticar o usuário. Pode especificar as suas credenciais explicitamente ou instruir o condutor a recuperá-las automaticamente a partir de uma fonte externa.

As seções a seguir contêm amostras de código que usam os seguintes espaços reservados:

  • <awsKeyId> - valor do ID da chave de acesso AWS

  • <awsSecretKey> - valor da chave de acesso secreto AWS

  • <awsSessionToken> - valor do token de sessão AWS

Dica

Para saber mais sobre como configurar o MongoDB Atlas com AWS IAM, consulte a aba Configurar Autenticação sem Senha com Funções AWS IAM.

Você pode fornecer suas credenciais do AWS IAM em um objeto MongoClientSettings usando um objeto MongoCredential ou como parte da cadeia de conexão. Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente para especificar suas credenciais:

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS";
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

Se você estiver utilizando um token de sessão do AWS, inclua o parâmetro authMechanismProperties na connection string como mostrado abaixo:

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]");
mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>"));
var client = new MongoClient(mongoClientSettings);

Se você estiver usando um token de sessão do Amazon Web Services, chame o método WithMechanismProperty() em seu objeto MongoCredential , conforme mostrado abaixo:

mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>"))
.WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");

Em vez de especificar suas credenciais do AWS IAM no MongoClientSettings, você pode instruir o Driver .NET/C# a usar o AWS SDK para recuperar automaticamente suas credenciais de uma fonte externa. Para instruir o driver a recuperar suas credenciais, execute as seguintes ações:

  • Especifique MONGODB-AWS como o mecanismo de autenticação

  • Especifique que a fonte de autenticação é externa ao MongoDB

  • Defina suas credenciais no local apropriado

Você pode especificar o mecanismo de autenticação e origem utilizando um objeto MongoCredential ou como parte da cadeia de conexão. Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente para especificar o mecanismo de autenticação do MONGODB-AWS e fonte de autenticação externa:

var connectionString = "mongodb+srv://<hostname>[:<port>]?authMechanism=MONGODB-AWS&authSource=$external";
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]");
mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalAwsIdentity(), new ExternalEvidence());
var client = new MongoClient(mongoClientSettings);

Depois de especificar o mecanismo de autenticação e a origem, você deve definir suas credenciais na localização apropriada ao tipo de credencial. O driver .NET/C# verifica as credenciais nas seguintes localizações na ordem listada aqui:

  • Fornecedor de identidade web

  • Arquivo de credenciais AWS compartilhado

  • Variáveis de ambiente

  • Credenciais do container ECS

  • Credenciais do container EC2

Você pode usar um fornecedor de identidade da Web compatível com OpenID Connect (OIDC) para autenticar no Amazon Elastic Kubernetes Service (EKS) ou em outros serviços. Para utilizar um fornecedor de identidade da web, crie um arquivo que contenha seu token OIDC e, em seguida, defina o caminho absoluto para este arquivo em uma variável de ambiente utilizando bash ou uma shell semelhante, como mostrado no amostra a seguir:

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

Para autenticar usando um perfil em um arquivo de credenciais compartilhado da AWS, você pode usar um editor de texto, o AWS SDK para .NET ou o AWS CLI para criar o arquivo de credenciais apropriado.

Para recuperar credenciais diretamente de variáveis de ambiente, defina as seguintes variáveis de ambiente usando bash ou um shell semelhante:

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

Observação

Omita a linha que contém AWS_SESSION_TOKEN se não precisar de um token de sessão AWS para essa função.

Para autenticar usando as credenciais do contêiner do ECS, defina o URI do ponto de extremidade do ECS em uma variável de ambiente usando bash ou um shell semelhante. Selecione a aba Full ECS URI ou Relative ECS URI para visualizar a sintaxe para especificar a variável de ambiente correspondente:

export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>

Para autenticar usando as credenciais do contêiner EC2, certifique-se de que nenhuma das variáveis de ambiente mencionadas anteriormente esteja definida. O driver obtém as credenciais do endpoint de metadados de instância IPv4 EC2 padrão.

O X.509 mecanismo de autenticação do utiliza TLS com X.509 certificados do para autenticar seu usuário, identificado pelos nomes diferenciados do seu certificado de cliente . Quando você especifica o mecanismo de autenticação X.509, o servidor autentica a conexão usando o nome do assunto do certificado do cliente .

Para saber mais sobre como usar TLS/SSL, consulte nosso guia TLS/SSL.

Para saber mais sobre os certificados X.509 , consulte o X.509 Entrada manual do servidor.

Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente para especificar o mecanismo de autenticação do X.509:

var connectionString = "mongodb://<hostname>/?authMechanism=MONGODB-X509";
var settings = MongoClientSettings.FromConnectionString(connectionString);
settings.useTls = true;
settings.SslSettings = new SslSettings
{
ClientCertificates = new List<X509Certificate>()
{
new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>")
}
};
var credential = MongoCredential.CreateMongoX509Credential("<X.509 certificate username>")
var settings = new MongoClientSettings
{
Credential = credential
SslSettings = new SslSettings
{
ClientCertificates = new List<X509Certificate>()
{
new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>")
},
},
UseTls = true,
Server = new MongoServerAddress("<hostname", "<port>"),
};

Observação

Tipo de certificado

Seu certificado deve ser um PKCS #12 tipo de certificado com uma .p12 extensão .

Dica

Username parameter

O parâmetro username fornecido a CreateMongoX509Credential deve corresponder exatamente ao nome do assunto distinto do seu certificado X.509 . Como alternativa, você pode passar null como parâmetro para solicitar ao servidor MongoDB que infira o nome de usuário com base em seu certificado X.509 .

Observação

Se você estiver usando o Windows, o driver pode não conseguir localizar um certificado de autenticação X.509 criado na memória. Para saber mais sobre uma possível solução para esse problema, consulte a seção X.509 Erro de credencial do guia Solução de problemas de conexão.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Stable API