Mecanismos de autenticação
Nesta página
Visão geral
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:
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.
Especificar um mecanismo de autenticaçã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
.
Mecanismos
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ãoadmin
.
Default
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
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
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.
MONGODB-AWS
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.
Especifique suas credenciais 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>");
Recuperar credenciais automaticamente
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çãoEspecifique 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.
X.509
O X.509
mecanismo de autenticação do utiliza TLS com X.509
certificados 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.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: