Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/ /

Mecanismo de autenticação OIDC

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

O mecanismo de autenticação MONGODB-OIDC requer MongoDB Server v7.0 ou posterior em execução em uma plataforma Linux. Você pode usar esse mecanismo somente ao autenticar no MongoDB Atlas ou Enterprise Advanced.

Dica

Saiba mais sobre 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 saber mais sobre como usar a autenticação OIDC com o MongoDB, consulte Authentication and Authorization with OIDC/OAuth 2.0 e oidcIdentityProviders no manual do MongoDB Server.

As seções seguintes descrevem como utilizar o mecanismo de autenticação do MONGODB-OIDC para autenticar a partir 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 driver Node.js

Para especificar o Azure IMDS OIDC como o mecanismo de autenticação, defina as seguintes opções em sua string de conexão:

  • username: Se você estiver usando uma identidade gerenciada pelo Azure, defina para a ID do cliente da identidade gerenciada. Caso contrário, omita esta opção.

  • authMechanism: Defina como MONGODB-OIDC.

  • authMechanismProperties: Defina como ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>. Substitua o espaço reservado <audience> pelo valor do parâmetro audience configurado em sua deployment do MongoDB .

O seguinte exemplo de código mostra como definir as opções de conexão anteriores:

const { MongoClient } = require("mongodb");
const uri = "mongodb+srv://<username>@<hostname>:<port>/?authMechanism=MONGODB-OIDC"
+ "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>";
const client = new MongoClient(uri);

Se seu aplicação é executado em uma VM do Google Compute Engine ou usa o GCP Instance Metadata Service, você pode autenticar no MongoDB usando o suporte integrado ao GCP do driver do Node.js

Para especificar o GCP IMDS OIDC como o mecanismo de autenticação, defina as seguintes opções em sua string de conexão:

  • authMechanism: Defina como MONGODB-OIDC.

  • authMechanismProperties: Defina como ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>. Substitua o espaço reservado <audience> pelo valor do parâmetro audience configurado em sua deployment do MongoDB .

O seguinte exemplo de código mostra como definir as opções de conexão anteriores:

const { MongoClient } = require("mongodb");
const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC"
+ "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>";
const client = new MongoClient(uri);

Se seu aplicação for executado em um cluster Kubernetes, você poderá autenticar no MongoDB usando o suporte integrado do Kubernetes do driver do Node.js

Para especificar o Kubernetes OIDC como o mecanismo de autenticação, defina as seguintes opções em sua string de conexão:

  • authMechanism: Defina como MONGODB-OIDC.

  • authMechanismProperties: Defina como ENVIRONMENT:k8s.

O seguinte exemplo de código mostra como definir as opções de conexão anteriores:

import { MongoClient } from "mongodb";
const uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-OIDC"
+ "&authMechanismProperties=ENVIRONMENT:k8s";
const client = new MongoClient(uri);

Se você especificar Kubernetes OIDC como o mecanismo de autenticação, o driver lerá o conteúdo do token OIDC de um dos seguintes locais:

Você deve armazenar seu token OIDC no local que corresponde ao serviço que você usa para executar seu aplicação.

O driver Node.js não oferece suporte integrado para todas as plataformas, incluindo Azure Functions. Em vez disso, você deve definir um chamada de resposta personalizado para usar o OIDC para autenticar a partir dessas plataformas.

Primeiro, defina uma função que recupera o token de acesso a ser usado para autenticação OIDC. Esta função deve ter a seguinte assinatura:

const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => { }

O parâmetro OIDCCallbackParams contém as seguintes propriedades, que você pode acessar dentro da função:

Propriedade
Valor

timeoutContext

Um AbortSignal que cancela o fluxo de trabalho de autenticação após 30 segundos

version

A versão atual da API do OIDC

idpInfo

As informações do provedor de identidade retornadas do servidor

username

O nome de usuário incluído na string de conexão, se houver

refreshToken

O token de atualização para solicitar um novo token de acesso do emissor, se houver

A função de chamada de resposta de resposta deve retornar um objeto OIDCResponse . Este objeto contém as seguintes propriedades:

Propriedade
Valor

accessToken

O token de acesso a ser usado para autenticação.

expiresInSeconds

Opcional. O número de segundos até que o token de acesso expire.

refreshToken

Opcional. O token de atualização para solicitar um novo token de acesso do emissor.

O exemplo a seguir mostra uma função de chamada de resposta de chamada que recupera um token de acesso OIDC de um arquivo chamado access-token.dat no sistema de arquivos local:

const fs = require("node:fs");
const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => {
const token = fs.readFileSync("access-token.dat", "utf8");
return {
accessToken: token,
expiresInSeconds: 300,
refreshToken: token
};
}

Depois de definir sua função de chamada de resposta de chamada, passe-a para o construtor MongoClient como parte do parâmetro authMechanismProperties . O driver Node.js é compatível com os seguintes padrões de autenticação:

  • Autenticação de máquina: usada por serviços da web e outros aplicativos que não exigem interação humana. Selecione a aba Machine Callback para ver um exemplo desta sintaxe.

  • Autenticação humana: usada por ferramentas de banco de dados de dados, utilitários de linha de comando e outros aplicativos que envolvem interação humana direta. Selecione a aba Human Callback para ver um exemplo desta sintaxe.

Para autenticação de máquina, atribua a função de chamada de resposta de chamada à propriedade authMechanismProperties.OIDC_CALLBACK , conforme mostrado no exemplo a seguir:

const { MongoClient } = require("mongodb");
const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC";
const client = new MongoClient(uri, {
authMechanismProperties: {
OIDC_CALLBACK: myCallback
}
});

Para autenticação humana, atribua a função de chamada de resposta de chamada à propriedade authMechanismProperties.OIDC_HUMAN_CALLBACK , conforme mostrado no exemplo a seguir:

const { MongoClient } = require("mongodb");
const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC";
const client = new MongoClient(uri, {
authMechanismProperties: {
OIDC_HUMAN_CALLBACK: myCallback
}
});

Para saber mais sobre os métodos e tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

AWS IAM

Nesta página