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

OIDC (Federação de Identidade do Volume de Trabalho)

Nesta página

  • Visão geral
  • Espaços reservados de código
  • Usando a autenticação OIDC em seu aplicativo
  • IMDS do Azure
  • GCP IMDS
  • Chamada de resposta personalizada
  • Documentação da API

O mecanismo de autenticação OpenID Connect (OIDC) permite que você autentique no MongoDB usando um provedor de identidade de terceiros, como o Azure ou o Google Cloud Platform (GCP).

Você pode usar esse mecanismo somente ao autenticar para MongoDB Atlas ou Enterprise Advanced e somente ao autenticar para MongoDB v7.0 ou posterior.

Dica

Autenticação OIDC

Para saber mais sobre como configurar o MongoDB Atlas para autenticação OIDC, consulte Configurar Federação de Identidade da Força de Trabalho com OIDC na documentação do Atlas .

Para obter mais informações sobre o uso da autenticação OIDC com o MongoDB, consulte Autenticação do OpenID Connect e Parâmetros do MongoDB Server MongoDB Server .

Os exemplos de código nesta página usam os seguintes espaços reservados:

  • +srv: inclua essa opção no prefixo da string de conexão somente se estiver se conectando a um cluster MongoDB Atlas . Para saber mais sobre a +srv opção, consulte Formatos de connection string no manual do MongoDB Server .

  • <username>: o ID do cliente ou do ID do aplicativo de identidade gerenciada pelo Azure ou do aplicação empresarial , se estiver autenticando no Azure IMDS.

  • <hostname>: O endereço de rede da sua implantação MongoDB .

  • <port>: o número da porta da sua implantação do MongoDB . Se você omitir este parâmetro, o driver utilizará o número de porta padrão (27017). Você não precisa especificar uma porta ao se conectar a um cluster MongoDB Atlas .

  • <audience>: O parâmetro de público configurado em sua implementação do MongoDB .

Para usar os exemplos de código nesta página, substitua esses espaços reservados por seus próprios valores.

As seções a seguir descrevem como usar a autenticação OIDC para autenticar de várias plataformas.

Se o seu aplicação for executado em uma VM do Azure ou de outra forma usar o Azure Instance Metadata Service (IMDS), você poderá autenticar no MongoDB usando o suporte integrado do Azure .NET/C# Driver.

Você pode especificar a autenticação do Azure IMDS OIDC em um objeto MongoClientSettings usando um objeto MongoCredential ou como parte da string de conexão. Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente.

Observação

Você não pode passar valores contendo o caractere vírgula (,) para o parâmetro de string de conexão authMechanismProperties. Você deve especificar valores que contêm vírgulas em um objeto MongoCredential, conforme demonstrado na aba MongoCredential.

O seguinte exemplo de código mostra como especificar a autenticação do Azure IMDS OIDC. Substitua o espaço reservado <percent-encoded audience> pelo valor codificado por porcentagem do parâmetro audience configurado em sua implantação do MongoDB .

var connectionString = "mongodb://<username>@<hostname>[:<port>]/?" +
"authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>");
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

O seguinte exemplo de código mostra como especificar a autenticação do Azure IMDS OIDC:

var mongoClientSettings = MongoClientSettings.FromConnectionString(
"mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential
.CreateOidcCredential("azure", "<username>")
.WithMechanismProperty("TOKEN_RESOURCE", "<audience>");
var client = new MongoClient(mongoClientSettings);

Se seu aplicação é executado em uma VM do Google Compute Engine ou usa o Serviço de Metadados de Instância GCP, você pode autenticar no MongoDB usando o suporte GCP integrado do Driver .NET/C#.

Você pode especificar a autenticação GCP IMDS OIDC em um objeto MongoClientSettings usando um objeto MongoCredential ou como parte da string de conexão. Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente.

Observação

Você não pode passar valores contendo o caractere vírgula (,) para o parâmetro de string de conexão authMechanismProperties. Você deve especificar valores que contêm vírgulas em um objeto MongoCredential, conforme demonstrado na aba MongoCredential.

O seguinte exemplo de código mostra como especificar a autenticação GCP IMDS OIDC como parte da string de autenticação:

var connectionString = "mongodb://<hostname>[:<port>]/?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>");
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

O exemplo de código a seguir mostra como especificar a autenticação GCP IMDS OIDC usando um objeto MongoCredential :

var mongoClientSettings = MongoClientSettings.FromConnectionString(
"mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential
.CreateOidcCredential("gcp")
.WithMechanismProperty("TOKEN_RESOURCE", "<audience>");
var client = new MongoClient(mongoClientSettings);

O driver .NET/C# não oferece suporte integrado para todas as plataformas, incluindo Azure Functions e Azure Kubernetes Service (AKS). Em vez disso, você deve definir um retorno de chamada de resposta personalizado para usar o OIDC para autenticar a partir dessas plataformas.

Primeiro, defina uma classe que implemente a interface IOidcCallback. Essa interface contém dois métodos:

  • GetOidcAccessToken(): este método aceita os parâmetros para o método de chamada de resposta de resposta e retorna a resposta de chamada de resposta de resposta.

  • GetOidcAccessTokenAsync(): este método é uma versão assíncrona do método anterior.

O código a seguir é um exemplo de implementação da interface IOidcCallback. Neste exemplo, os métodos recuperam um token OIDC de um arquivo chamado "access-token.dat" no sistema de arquivos local.

public class MyCallback : IOidcCallback
{
public OidcAccessToken GetOidcAccessToken(
OidcCallbackParameters parameters,
CancellationToken cancellationToken)
{
var accessToken = File.ReadAllText("access-token.dat");
return new(accessToken, expiresIn: null);
}
public async Task<OidcAccessToken> GetOidcAccessTokenAsync(
OidcCallbackParameters parameters,
CancellationToken cancellationToken)
{
var accessToken = await File.ReadAllTextAsync(
"access-token.dat",
cancellationToken)
.ConfigureAwait(false);
return new(accessToken, expiresIn: null);
}
}

Depois de definir uma classe que contenha seus métodos de chamada de resposta de chamada personalizados, chame o método MongoCredential.CreateOidcCredential() e passe uma nova instância de sua classe. Armazene o resultado desta chamada de método na propriedade Credential do seu objeto MongoClientSettings , como mostrado no seguinte exemplo de código:

var mongoClientSettings = MongoClientSettings
.FromConnectionString("mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new MyCallback());
var client = new MongoClient(mongoClientSettings);

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

Voltar

AWS IAM