Visão geral
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.
Especifique a autenticação OIDC
As seções seguintes descrevem como utilizar o mecanismo de autenticação do MONGODB-OIDC
para autenticar a partir de várias plataformas.
IMDS do Azure
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 comoMONGODB-OIDC
.authMechanismProperties
: Defina comoENVIRONMENT:azure,TOKEN_RESOURCE:<audience>
. Substitua o espaço reservado<audience>
pelo valor do parâmetroaudience
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);
GCP IMDS
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 comoMONGODB-OIDC
.authMechanismProperties
: Defina comoENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>
. Substitua o espaço reservado<audience>
pelo valor do parâmetroaudience
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);
Kubernetes
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 comoMONGODB-OIDC
.authMechanismProperties
: Defina comoENVIRONMENT: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:
AZURE_FEDERATED_TOKEN_FILE
variável de ambiente para aplicativos em execução no Azure Kubernetes Service (AKS)AWS_WEB_IDENTITY_TOKEN_FILE
variável de ambiente para aplicativos em execução no Elastic Kubernetes Service (EKS)/var/run/secrets/kubernetes.io/serviceaccount/token
arquivo, o local padrão para todos os outros aplicativos, incluindo aqueles que são executados no Google Kubernetes Engine (GKE)
Você deve armazenar seu token OIDC no local que corresponde ao serviço que você usa para executar seu aplicação.
Chamada de resposta personalizada
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 |
---|---|
| Um |
| A versão atual da API do OIDC |
| As informações do provedor de identidade retornadas do servidor |
| O nome de usuário incluído na string de conexão, se houver |
| 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 |
---|---|
| O token de acesso a ser usado para autenticação. |
| Opcional. O número de segundos até que o token de acesso expire. |
| 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 } });
Documentação da API
Para saber mais sobre os métodos e tipos discutidos neste guia, consulte a seguinte documentação da API: