Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Saiba por que o MongoDB foi selecionado como um líder no 2024 Gartner_Magic Quadrupnt()
Desenvolvedor do MongoDB
Centro de desenvolvedores do MongoDB
chevron-right
Produtos
chevron-right
MongoDB
chevron-right

Autenticação do MongoDB Atlas usando contas de serviço (OAuth)

Wojciech Trocki9 min read • Published Jan 23, 2025 • Updated Jan 23, 2025
JavaScriptGoPythonMongoDB
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
A API de administração do Atlas do MongoDB fornece uma maneira eficiente de interagir com os recursos doMongoDB Atlas . Ele permite que você gerencie suas organizações, projetos, implementações e muito mais do Atlas , permitindo automatizar e integrar perfeitamente tarefas administrativas diretamente em seus aplicativos ou sistemas CI/CD. O MongoDB Atlas oferece vários clientes de API, incluindo os provedoresAtlas CLI e Terraform. Em determinados cenários, você pode aproveitar o acesso programático direto de aplicativos e sistemas de automação escritos em linguagens como Go, Python ou Node.js.
Com a introdução das Contas de Serviço para a API de Administração do Atlas , agora você pode usar2 credenciais de token OAuth ao executar solicitações de API. O2 padrão OAuth simplifica a autenticação com a API do Atlas em comparação com a autenticação digest usada anteriormente. As Contas de Serviço, atualmente disponíveis como um recurso de visualização, oferecem uma nova maneira de autenticar no Atlas usando o OAuth padrão do 2 setor.0 com o fluxo de Credenciais do Cliente. Isto fornece um método seguro e eficiente para gerenciar o acesso aos seus recursos do Atlas .
Neste tutorial, orientaremos você pelo processo de configuração de uma conta de serviço usando o Atlas SDK Go, Node.js e Python. Forneceremos instruções sobre como obter as credenciais necessárias e fazer solicitações de API programáticas ao MongoDB Atlas diretamente de seu aplicação.

O que são Contas de Serviço?

As Contas de Serviço fornecem uma nova maneira de autenticar no Atlas usando OAuth.2 0 com o fluxo de Credenciais do Cliente. Uma conta de serviço fornece um ID e um segredo do cliente , que são usados para gerar tokens de acesso para executar solicitações de API. Atualmente, os tokens de acesso são válidos por uma hora. As contas de serviço são criadas dentro de uma organização do Atlas e podem ser configuradas para acessar vários projetos dentro dessa organização.
Infográfico que descreve a autenticação programática do MongoDB Atlas com contas de serviçoA autenticação programática com o MongoDB Atlas permite a integração segura de contas de serviço para automação.Recursos:- Aproveite as contas de serviço para lidar com processos automatizados de forma eficaz. Melhore os fluxos de trabalho de CI/CD e ofereça suporte ao treinamento de IA por meio de interações robustas de API.- Automatize a criação e o gerenciamento de clusters, garantindo backups, dimensionamento e monitoramento confiáveis sem a necessidade de configuração manual. Utilize o OAuth em linguagens de programação de sua escolha- Utilize clientes OAuth estabelecidos como Python, JavaScript e Go para vincular com segurança com MongoDB Atlas e simplificar as operações de dados.- Implemente controles de acesso detalhados para contas de serviço. Atribua funções para leitura, escrita ou tarefas administrativas, seguindo o princípio de privilégio mínimo para maior segurança.

Pré-requisitos

Antes de começar, verifique se tem o seguinte:
  1. Uma conta do MongoDB Atlas . Se você ainda não tiver um, siga o guia Iniciar com Atlas para criar sua conta e primeiro cluster.
  2. Uma conta de serviço com um ID e um segredo do cliente .
  3. Para criar uma conta de serviço, siga as instruções fornecidas em Contas de serviço.
    1. Para este tutorial, sua conta de serviço exigirá um roleORG_READ_ONLY.
    2. Depois de criar uma conta de serviço, você receberá um ID e um segredo do cliente , que usará para gerar tokens de acesso OAuth para solicitações do Atlas API.
OBSERVAÇÃO: as credenciais da conta de serviço darão a qualquer pessoa acesso aos seus recursos do MongoDB Atlas . É crucial armazenar com segurança o ID e o segredo do cliente e nunca expô-los em plataformas públicas de código-fonte como o Github.

TL;DR?

Todos os exemplos estão disponíveis no repositório do Github para consumo direto.
Antes de executar qualquer exemplo, certifique-se de executar todos os pré-requisitos.

Escolhendo seu idioma

Neste tutorial, forneceremos etapas para fazer solicitações de API programáticas em diferentes idiomas:
Consulte a documentação do Atlas para obter uma lista completa de APIs do Atlas para idiomas sem um SDK do Atlas . Você também pode usar nossa integração oficial do Postman para explorar e interagir com a própria API.

Processo de autenticação

O processo de autenticação da API do Atlas consistirá nas seguintes etapas, independentemente da linguagem e estrutura:
  • Carregando credenciais usando variáveis de ambiente
    • A título de exemplo, usaremos variáveis de ambiente para armazenar o ID e o segredo do cliente .
    • Para uso em produção,siga as recomendações da OWASP para segredos.
  • Gerando token de acesso
  • Usando token de acesso
    • O token de acesso será incluído no cabeçalho de autorização das solicitações de API subsequentes para autenticá-las.
    • Um token de acesso precisa ser gerado novamente quando expira, e a API retorna um 401 código de status HTTP.
  • Opcionalmente, podemos revogar o token OAuth criado quando ele não for mais necessário.

Contas de serviço com Python

Usaremos o Python para começar com o exemplo de integração de conta de serviço mais simples e autônomo. O Python fornece muitas bibliotecas para realizar solicitações HTTP. Por exemplo, usaremos a biblioteca de solicitações para lidar com 2 a0 autenticação OAuth..

Pré-requisitos

  1. Certifique-se de ter instalado o Python.3 8 ou posterior em sua máquina.
  2. Instale os pacotes necessários:
1pip install requests
2pip install oauthlib

Criando nosso exemplo

Etapa1 #: Abra seu editor de código favorito e crie um arquivo chamado atlas_request.py.
Etapa2 #: Copie o conteúdo para o novo arquivo. Veja como será o script completo:
1import os
2from requests_oauthlib import OAuth2Session
3from oauthlib.oauth2 import BackendApplicationClient
4from requests.auth import HTTPBasicAuth
5import requests
6
7# Constants
8token_path = "/api/oauth/token"
9api_url = "/api/atlas/v2/"
10client_id = os.environ["MONGODB_ATLAS_CLIENT_ID"]
11client_secret = os.environ["MONGODB_ATLAS_CLIENT_SECRET"]
12base_url = "https://cloud.mongodb.com"
13
14def get_access_token():
15 # Use BackendApplicationClient for the client credentials grant
16 client = BackendApplicationClient(client_id=client_id)
17 oauth = OAuth2Session(client=client)
18
19 # Prepare Basic Auth credentials
20 auth = HTTPBasicAuth(client_id, client_secret)
21 token_url = f"{base_url}{token_path}"
22
23 # Fetch the token using the proper authentication
24 token = oauth.fetch_token(token_url=token_url, auth=auth)
25 return token['access_token']
26
27def fetch_data():
28 access_token = get_access_token()
29 headers = {
30 "Authorization": f"Bearer {access_token}",
31 "Accept": "application/vnd.atlas.2023-01-01+json"
32 }
33
34 response = requests.get(f"{base_url}{api_url}", headers=headers)
35 response.raise_for_status()
36
37 return response.json()
38
39if __name__ == "__main__":
40 try:
41 data = fetch_data()
42 print(data)
43 except Exception as e:
44 print(f"Error: {e}")
Etapa3 #: defina as variáveis de ambiente em seu terminal:
1set +o history # disable history as we're going to paste credentials
2export SA_CLIENT_ID=your_client_id
3export SA_CLIENT_SECRET=your_client_secret
Etapa4 #: execute o exemplo:
1python atlas_request.py
Como resultado, você deverá ver o Status da resposta: 200 no console.

Entendendo o roteiro

Vamos descompactar o que está acontecer no script Python passo a passo.
O script Python executa várias etapas para autenticar com o MongoDB Atlas usando OAuth2 e consultar sua API.
  • Começamos carregando nossas credenciais de variáveis de ambiente.
    • As variáveis de ambiente nos permitem gerenciar informações confidenciais, como o ID e o segredo do cliente MongoDB Atlas , sem codificá-las em seu script.
    • Recuperamos as seguintes variáveis:
      • MONGODB_ATLAS_CLIENT_ID e MONGODB_ATLAS_CLIENT_SECRET para2 autenticação OAuth.
  • Com nossas credenciais em vigor, obtemos um token de acesso, essencial para fazer solicitações de API autenticadas.
    • A função get_access_token:
      • Estamos aproveitando o tipo de concessão de credenciais do cliente por meio do BackendApplicationClient de oauthlib.
        • As operações de gerenciamento de tokens são tratadas inteiramente pela biblioteca.
        • Certifique-se de sempre usar a versão mais recente da bibliotecaoauthlib para evitar possíveis problemas de segurança.
      • Usando HTTPBasicAuth, geramos as credenciais necessárias para solicitar um token.
      • Observe que o token de acesso precisa ser atualizado periodicamente após a expiração.
  • Usando o token de acesso obtido:
    • Primeiro, pegamos nosso token de acesso retornado pelo método get_access_token.
    • Em seguida, configuramos nossa solicitação com os cabeçalhos adequados:
      • A autorização está definida para o portador {access_token}.
      • Aceitar especifica a versão da API do MongoDB Atlas necessária para executar solicitações na API do Atlas (aplicação/vnd.atlas.2023-01-01+json).
    • A função chama o ponto de conexão Atlas API e aguarda a resposta!
      • GET solicitação para o endpoint especificado da API Atlas ({base_url}/api/atlas/v2/).

Contas de serviço com Node.js

O Node.js fornece um grande número de bibliotecas para realizar solicitações HTTP. Nosso exemplo seguirá uma recomendações de arquitetura de referência do Node.JS usando a bibliotecaAxios npm.
Axios é um cliente HTTP popular baseado em promessa para o navegador e Node.js. Por questões de brevidade, o exemplo é escrito em JavaScript, mas pode ser adaptado para o Typescript usando o Axios Typepings.

Pré-requisitos

  1. Certifique-se de ter o Node.js e o npm instalados na sua máquina.
  2. Para projetos existentes, instale os axios necessários e o pacotesimple-oauth :2
1 npm install —-save axios simple-oauth2
Se você estiver recriando um novo projeto, precisará inicializar o arquivo .json do pacote executando:
1npm init

Procedimento

Etapa1 #: Abra seu editor de código favorito e crie um arquivo chamado atlas_request.js.
Etapa2 #: Copie o conteúdo para o novo arquivo. Veja como será o script completo:
1const axios = require('axios');
2const { ClientCredentials } = require('simple-oauth2');
3
4// Can be any API url from https://www.mongodb.com/pt-br/docs/atlas/reference/api-resources-spec/v2/
5const apiURL = '/api/atlas/v2/';
6
7const { MONGODB_ATLAS_CLIENT_ID, MONGODB_ATLAS_CLIENT_SECRET } = process.env;
8
9var baseUrl = "https://cloud.mongodb.com";
10
11// OAuth2 Client Configuration
12const oauth2Config = {
13 client: {
14 id: MONGODB_ATLAS_CLIENT_ID,
15 secret: MONGODB_ATLAS_CLIENT_SECRET,
16 },
17 auth: {
18 tokenHost: baseUrl,
19 tokenPath: '/api/oauth/token',
20 },
21};
22
23// Create OAuth2 Client
24const oauth2Client = new ClientCredentials(oauth2Config);
25
26async function fetchWithOAuth2() {
27 try {
28 // Retrieve access token
29 const tokenParams = {
30 };
31 const tokenResponse = await oauth2Client.getToken(tokenParams);
32 const accessToken = tokenResponse.token.access_token;
33 const headers = {
34 Authorization: `Bearer ${accessToken}`,
35 Accept: 'application/vnd.atlas.2023-01-01+json'
36 }
37 // Make API Request
38 const response = await axios.get(baseUrl + apiURL, {
39 headers: headers
40 });
41
42 console.log('Response data:', response.data);
43 } catch (error) {
44 console.error('Error during request:', error.message);
45 }
46}
47
48fetchWithOAuth2();
Etapa3 #: defina as variáveis de ambiente em seu terminal:
1set +o history # to disable history for credentials
2export MONGODB_ATLAS_CLIENT_ID=your_client_id
3export MONGODB_ATLAS_CLIENT_SECRET=your_client_secret
Etapa4 #: exemplo de execução :
1node atlas-request.js
Como resultado, devo ver a resposta da API no console.

Entendendo o roteiro

Semelhante ao exemplo Python , o código executará várias etapas comuns para OAuth.
  • Carregando as variáveis de ambiente: Recuperamos as variáveis MONGODB_ATLAS_CLIENT_ID e MONGODB_ATLAS_CLIENT_SECRET do ambiente.
  • Para o exemplo, optamos por usar a 2 bibliotecasimple-oauth . A biblioteca nos permite obter e atualizar automaticamente tokens OAuth. Para fazer isso, precisamos fornecer uma configuração do cliente :2
    • client_id e client_secret de variáveis de ambiente.
    • auth.tokenHost faz referência à API de token OAuth fornecida pelo Atlas (/API/oauth/token) Usamos essa URL para recuperação de token.
  • Chamando 2simple-oauth.getToken() para buscar um novo token de acesso: em caso de sucesso, recupera o access_token da resposta do token.
  • Fazer uma solicitação de API:
    • Precisamos definir o Authorization cabeçalho que contém nosso token recém-gerado.
    • O endpoint pode ser alterado para consultar diferentes recursos da API do MongoDB Atlas .
    • Durante várias solicitações, o token de acesso pode expirar e resultar em um código de status HTTP 401.
      • Você pode configurar seu aplicação para emitir outro token de acesso após a expiração.

Contas de serviço com aplicativos Go

O Atlas SDK Go fornece autenticação OAuth usando Contas de serviço, que está atualmente disponível como um recurso de visualização.
Além disso, os desenvolvedores podem usar a API de gerenciamento de contas de serviço para criar, atualizar e excluir contas de serviço diretamente do SDK.

Pré-requisitos

  1. Certifique-se de ter o Go.1 22 ou posterior instalado em sua máquina.
  2. Crie um arquivogo.mod e instale o pacote necessário .
1go mod init example.com/service-accounts
2go get go.mongodb.org/atlas-sdk/v20241023001/admin
Para garantir que você esteja usando a versão mais recente do SDK Go, substitua a20241023001 string de versão v pela versão mais recente das versões do SDK Go.

exemplo de criação do Go

Etapa1 #: Crie um novo arquivo chamado atlas_request.go no editor de sua escolha.
Etapa2 #: Cole o seguinte conteúdo no novo arquivo:
1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7 "os"
8
9 "go.mongodb.org/atlas-sdk/v20241113001/admin"
10)
11
12// Example for Using Service Account for listing Atlas Projects.
13func main() {
14 // Fetch clientID and clientSecret from environment variables
15 clientID := os.Getenv("MONGODB_ATLAS_CLIENT_ID")
16 clientSecret := os.Getenv("MONGODB_ATLAS_CLIENT_SECRET")
17
18 if clientID == "" || clientSecret == "" {
19 log.Fatal("Missing required environment variables")
20 }
21
22 ctx := context.Background()
23 sdk, err := admin.NewClient(
24 admin.UseBaseURL(host),
25 //Out-of-the-box support for OAuth in the SDK
26 admin.UseOAuthAuth(ctx, clientID, clientSecret),
27 )
28 if err != nil {
29 log.Fatalf("Error: %v", err)
30 }
31
32 orgs, _, err := sdk.OrganizationsApi.ListOrganizations(ctx).Execute()
33 if err != nil {
34 log.Fatalf("Error: %v", err)
35 }
36 if orgs.GetTotalCount() == 0 {
37 log.Fatalf("no orgs")
38 }
39 fmt.Println("Successfully used Service Account")
40}
Etapa3 #: defina as variáveis de ambiente em seu terminal:
1export MONGODB_ATLAS_CLIENT_ID=your_client_id
2export MONGODB_ATLAS_CLIENT_SECRET=your_client_secret
3export MONGODB_ATLAS_ORG=your_org_id
Etapa4 #: execute o exemplo:
1go run atlas_request.go
Como resultado, você deverá ver a Conta de serviço usada com sucesso em seu terminal.
O código está usando o método admin.UseOAuthAuth(ctx, clientID, clientSecret) fornecido pelo SDK para autenticar automaticamente usando Contas de Serviço. Nenhuma outra ação é necessária.
Além disso, para autenticar, o SDK Go fornece um exemplo de API de gerenciamento de conta de serviço , que permitirá gerenciar contas de serviço.

Considerações finais

Este tutorial demonstra como configurar contas de serviço e interagir com a API do Atlas usando o SDK Go, Node.js e Python. Com esses exemplos, você pode integrar as operações da API do Atlas em seus aplicativos escritos nessas linguagens.
As Contas de Serviço e a API de Administração do Atlas fornecem um novo conjunto de possibilidades para gerenciar seus recursos do MongoDB Atlas . Ao aproveitar o OAuth2 com o fluxo de credenciais do cliente, os desenvolvedores podem integrar o acesso programático em seus aplicativos e fluxos de trabalho de automação e, ao mesmo tempo, seguir as práticas de segurança padrão do setor.
Esteja você automatizando implantações, gerenciando bancos de dados ou criando ferramentas operacionais, a API de administração do Atlas , combinada com contas de serviço, fornece uma base sólida para a integração perfeita do MongoDB Atlas .
Aviso:
  • Sempre proteja suas credenciais usando variáveis de ambiente ou armazenamento seguro.
  • Gire e revogue regularmente os segredos da conta de serviço para manter a segurança.
  • Explore adocumentação do Atlas Go SDK,Postman Collection e API para obter mais recursos personalizados para seu caso de uso.
Perguntas? comentários? Junte-se a nós na Comunidade de desenvolvedores MongoDB.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Os seis princípios para a criação de aplicativos de dados compartilhados robustos e flexíveis


Sep 23, 2022 | 3 min read
Artigo

Índices desnecessários


Oct 01, 2024 | 4 min read
exemplo de código

GroupUs


Jul 07, 2022 | 1 min read
Início rápido

Início rápido: tipos de dados BSON - Decimal128


Sep 23, 2022 | 2 min read
Sumário