Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Integre seu aplicativo com o Atlas App Connections

Atlas App Connections é a plataforma MongoDB Atlas OAuth 2.1 que permite que seu aplicação aja em nome dos usuários do Atlas por meio de acesso delegado pelo usuário. Quando um usuário autoriza seu aplicação, seu aplicação recebe um conjunto de tokens que pode usar para chamar a API de administração do Atlas com as mesmas permissões que o usuário tem em suas organizações do Atlas . Para obter uma visão geral da plataforma e de como as organizações gerenciam aplicativos conectados, consulte Visão geral das conexões do Atlas App.

Este guia aborda a integração completa:

  • Iniciando o OAuth 2.1 Fluxo de código de autorização com Prova da Chave para Troca de Código (PKCE)

  • Trocando códigos de autorização por tokens e atualizando tokens

  • Utilizando a API de Administração do Atlas com acesso delegado

  • Noções básicas sobre o escopo e os limites do acesso delegado

  • Configurar o acesso à rede e gerenciar usuários do banco de dados

  • Tratamento de revogação e erros

Acesso delegado
Seu aplicação age em nome de um usuário do Atlas , não como si mesmo. As funções da organização e as permissões de projeto do usuário determinam quais operações são bem-sucedidas. Se o usuário não puder executar uma ação, seu aplicação também não poderá executá-la em nome dele.
Configurações de delegação da organização
Cada organização do Atlas controla se as conexões de aplicativos de terceiros são permitidas. Mesmo quando um usuário autoriza seu aplicação, as operações em uma organização específica são bem-sucedidas somente se essa organização tiver conexões de aplicativos de terceiros ativadas. A delegação está desabilitada por padrão para organizações existentes. Como um usuário pode pertencer a várias organizações, uma única autorização pode ser bem-sucedida para algumas organizações do usuário e falhar para outras, dependendo da configuração de delegação de cada organização.
Chave de Prova para Troca de Código (PKCE)
Uma extensão de segurança para o fluxo de código de autorização OAuth 2.1 que protege contra ataques de interceptação de código de autorização . O PKCE exige que o cliente gere um code_verifier aleatório, derive um code_challenge dele e envie o desafio com a solicitação de autorização . Em seguida, o cliente comprova que originou a solicitação enviando o code_verifier original ao trocar o código de autorização por tokens.

Antes de começar, confirme que você tem:

  • Status de parceiro de design aprovado.

  • Um aplicação OAuth registrado . O MongoDB fornece a você um client_id durante a integração. Clientes confidenciais (aplicativos da web do lado do servidor) também recebem um client_secret. Clientes públicos (aplicativos nativos e de página única) autenticam apenas com o client_id e não recebem um segredo.

  • Um URI de redirecionamento registrado com seu aplicação OAuth. Os URIs de redirecionamento devem usar HTTPS, exceto para endereços de loopback (localhost, 127.0.0.1, ::1), que podem usar HTTP em qualquer porta. Os URIs de redirecionamento não devem conter fragmentos (#).

  • Familiaridade com o fluxo de código de autorização OAuth 2.1 e Chave de Prova para Troca de Código (PKCE).

Se você precisar de ativos de marca MongoDB para sua integração, como o logotipo MongoDB , consulte a página Recursos de marca MongoDB .

Desenvolva e inicie sua integração em relação à produção. O Atlas não fornece ambientes parceiros separados.

Todos os endpoints OAuth e API usam duas URLs base de produção:

Base
URL

Base de autorização ({OAUTH_BASE})

https://authorize.mongodb.com

Cloud base ({CLOUD_BASE})

https://cloud.mongodb.com

Neste guia, esses nomes substituem as URLsacima. Por exemplo, o ponto de conexão do token é {OAUTH_BASE}/tokens.

O endpoint de autorização em que os usuários se conectam e concedem acesso é hospedado na base da nuvem ({CLOUD_BASE}/oauth/authorize), enquanto o token e outros endpoints OAuth estão hospedados na base de autorização ({OAUTH_BASE}). Essa divisão é intencional. A API de administração do Atlas é hospedada na base da nuvem ({CLOUD_BASE}/api/atlas).

Dica

Descubra Endpoints Automaticamente

O Atlas publica metadados do servidor OAuth 2.1 em {OAUTH_BASE}/.well-known/oauth-authorization-server. Muitas bibliotecas de cliente OAuth e SDKs podem ler este endpoint para descobrir e configurar a autorização, o token e os endpoints relacionados automaticamente, o que evita a codificação de URLs de endpoint.

O Atlas App Connections usa o fluxo de código de autorização OAuth 2.1 com a chave de prova para troca de código (PKCE). Este fluxo requer interação do usuário: o usuário faz login no Atlas e aprova as permissões que seu aplicação solicita.

Diagrama de sequência mostrando o fluxo de código de autorização OAuth 2.1 com PKCE entre seu aplicação , o navegador do usuário, o endpoint de autorização do MongoDB , o endpoint de token do MongoDB e a API Admin do Atlas .
clique para ampliar

O fluxo prossegue em três etapas:

  1. Seu aplicação gera um verificador e desafio de código PKCE, redireciona o usuário para o ponto de extremidade de autorização do Atlas e o usuário aprova o acesso na tela de consenso.

  2. Seu aplicação troca o código de autorização por um token de acesso e um token de atualização.

  3. Seu aplicação usa o token de acesso para chamar a API de administração do Atlas e usa o token de atualização para obter novos tokens de acesso antes que eles expirem.

Direcione o usuário para o endpoint de autorização do Atlas (https://cloud.mongodb.com/oauth/authorize) com os seguintes parâmetros. Você controla como seu aplicação apresenta esse endpoint: um redirecionamento dentro da janela existente, uma nova janela do navegador ou um pop-up.

Parâmetro
Obrigatório
Descrição

response_type

Obrigatório

Deve ser code.

client_id

Obrigatório

ID do cliente do seu aplicativo, fornecido pelo MongoDB durante a integração.

redirect_uri

Obrigatório

O URI HTTPS para onde o Atlas envia o código de autorização após a aprovação do usuário. Deve corresponder a um URI registrado com seu aplicação OAuth .

code_challenge

Obrigatório

O desafio do código PKCE derivado do seu code_verifier. Gere uma cadeia aleatória de caracteres de 43 a 128 como code_verifier e, em seguida, calcule BASE64URL(SHA256(code_verifier)).

code_challenge_method

Obrigatório

Deve ser S256. O método plain não é suportado e é rejeitado.

state

Obrigatório

Um valor opaco que seu aplicação usa para manter o estado entre a solicitação de autorização e o chamada de resposta. Use isso para se proteger contra ataques de falsificação de solicitação entre sites (CSRF) e para restaurar o estado do aplicação após o redirecionamento.

Envie apenas os parâmetros na tabela anterior. O ponto de extremidade de autorização não exige um parâmetro resource, portanto, omita-o da solicitação de autorização , mesmo que a especificação OAuth 2.1 defina um.

O exemplo a seguir divide a URL em linhas para legibilidade. Envie como uma única linha:

https://cloud.mongodb.com/oauth/authorize
?response_type=code
&client_id=<YOUR_CLIENT_ID>
&redirect_uri=https://yourapp.example.com/callback
&code_challenge=<CODE_CHALLENGE>
&code_challenge_method=S256
&state=<RANDOM_STATE_VALUE>

Após o usuário iniciar sessão no Atlas, ele vê uma tela de autorização que lista as permissões que seu aplicação está solicitando:

  • Saiba a quais recursos do Atlas você tem acesso

  • Aja em seu nome nas organizações Atlas

A tela de autorização também exibe o seguinte aviso para o usuário:

Ao autorizar um aplicação:

  • Você está permitindo que ele acesse e execute ações em seus recursos do MongoDB Atlas da mesma forma que pode, usando as permissões da sua conta.

  • Você pode revogar o acesso a qualquer momento.

Se o usuário clicar em Authorize, o Atlas redirecionará para seu redirect_uri com uma autorização code, o valor state que você forneceu e um parâmetro iss. Se o usuário clicar em Decline, o Atlas redirecionará com um parâmetro error.

Seu manipulador de chamada de resposta deve:

  1. Verifique se state corresponde ao valor que você enviou na solicitação de autorização para evitar ataques CSRF.

  2. Verifique se iss corresponde à base de autorização (https://authorize.mongodb.com) para evitar ataques de combinação do servidor de autorização .

  3. Verifique se há um parâmetro error e manipule a negação normalmente antes de tentar usar o code.

Os códigos de autorização são de uso único e expiram dentro de 10 minutos. Troque-os imediatamente.

Troque o código de autorização por tokens fazendo uma solicitação POST para o endpoint do Atlas token:

POST https://authorize.mongodb.com/tokens
Parâmetro do corpo
Obrigatório
Descrição

grant_type

Obrigatório

Deve ser authorization_code.

code

Obrigatório

O código de autorização recebido do redirecionamento.

redirect_uri

Obrigatório

O mesmo URI de redirecionamento usado na solicitação de autorização .

code_verifier

Obrigatório

A string original do verificador de código PKCE.

client_id

Obrigatório

ID do cliente do seu aplicativo.

client_secret

Condicional

O segredo do cliente do seu aplicativo. Necessário apenas para clientes confidenciais (aplicações da web do lado do servidor). Clientes públicos (aplicativos nativos e de página única) autenticam apenas com o client_id e omitem este parâmetro.

Solicitação de exemplo:

curl --request POST \
--url https://authorize.mongodb.com/tokens \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=authorization_code' \
--data 'code=<AUTHORIZATION_CODE>' \
--data 'code_verifier=<CODE_VERIFIER>' \
--data 'redirect_uri=https://yourapp.example.com/callback' \
--data 'client_id=<YOUR_CLIENT_ID>' \
--data 'client_secret=<YOUR_CLIENT_SECRET>'

A resposta inclui:

Campo
Tipo
Descrição

access_token

string

Token do portador para autenticar solicitações de API de administração do Atlas . Duração curta. Confie no valor expires_in para determinar quando atualizar em vez de codificar a vida inteira.

refresh_token

string

Token usado para obter um novo token de acesso quando o atual expirar. Armazene com segurança.

token_type

string

Sempre Bearer.

expires_in

inteiro

Acesse a vida útil do token em segundos. Atualmente 600 (10 minutos). Confie nesse valor para determinar quando atualizar, em vez de codificar, uma vida inteira, pois o padrão pode mudar.

Os tokens de acesso são de curta duração (atualmente 10 minutos). Antes de fazer chamadas de API de administração do Atlas após a expiração, troque seu token de atualização por um novo token de acesso:

curl --request POST \
--url https://authorize.mongodb.com/tokens \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=refresh_token' \
--data 'refresh_token=<YOUR_REFRESH_TOKEN>' \
--data 'client_id=<YOUR_CLIENT_ID>' \
--data 'client_secret=<YOUR_CLIENT_SECRET>'

A resposta sempre retorna um novo access_token e um novo refresh_token. O token de atualização anterior é imediatamente invalidado. Sempre substitua ambos os valores armazenados.

Importante

A atualização dos tokens expira após 7 dias de inatividade (a duração ociosa). Independentemente da atividade, os usuários devem se autenticar novamente a cada 30 dias (a vida útil máxima). Os proprietários da organização podem configurar limites mais rigorosos. Quando um token de atualização expira, o usuário deve autorizar novamente sua aplicação. Projete seu aplicação para lidar com isso normalmente, solicitando ao usuário que se reconecte.

Depois de obter um token de acesso, use-o para fazer solicitações da API de administração do Atlas , incluindo-o no cabeçalho Authorization:

Authorization: Bearer <ACCESS_TOKEN>

Solicitação de exemplo:

curl --request GET \
--url 'https://cloud.mongodb.com/api/atlas/v2/orgs' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Accept: application/vnd.atlas.2023-01-01+json'

Seu aplicação age com as mesmas permissões que o usuário autorizador tem no momento de cada solicitação. Se as roles do usuário forem alteradas após a autorização, as permissões efetivas do seu aplicativo serão alteradas de acordo.

As operações contra uma organização específica do Atlas são bem-sucedidas somente quando ambos os itens a seguir são verdadeiros:

  • A organização tem conexões de aplicativos de terceiros habilitadas. Os proprietários da organização definem esta configuração em Organization Settings > App Connections. Para saber mais sobre essas configurações, consulte Visão geral das conexões do aplicativo Atlas .

  • O usuário autorizador tem a função necessária para a operação dentro dessa organização ou projeto.

Se a delegação estiver desativada para uma organização depois que um usuário já tiver autorizado seu aplicação, as chamadas da API destinadas a essa organização retornarão uma resposta 403 Forbidden.

Uma autorização concluída não garante que as chamadas da API de administração do Atlas sejam bem-sucedidas. O Atlas avalia a configuração de delegação da organização e as funções do usuário em cada solicitação, não uma vez no momento da autorização , para que o fluxo OAuth e a tela de consenso possam ser concluídos de forma limpa enquanto as solicitações ainda retornam 403 Forbidden.

Ligue para GET /api/atlas/v2/orgs após a autorização para determinar em quais organizações seu aplicação pode atuar. O Atlas retorna apenas as organizações que permitem conexões de aplicativos de terceiros, portanto, uma lista vazia significa que nenhuma organização à qual o usuário pertence as habilitou.

Uma lista vazia é uma etapa de configuração, não uma falha. Instrua o usuário a solicitar a um proprietário da organização que habilite conexões de aplicativos para a organização e ponto para a visão geral de conexões de aplicativos do Atlas . Evite apresentar a lista vazia como um erro de autorização ou autenticação, pois as credenciais e o consenso do usuário são válidos.

Como o acesso delegado carrega as próprias permissões do usuário que o autoriza, as operações de gravação também dependem das roles desse usuário. As operações comuns de provisionamento exigem os seguintes roles:

Um usuário que detém apenas a função Organization Member pode ler os recursos aos quais tem acesso, mas as operações de gravação retornam 403 Forbidden. Nomeie a função necessária em seu tratamento de erros para que o usuário possa solicitar a função correta. Para saber mais sobre todos os papéis disponíveis, consulte Funções de Usuário do Atlas .

Quando seu aplicação cria uma organização em nome de um usuário, a nova organização ainda não permite conexões de aplicativos de terceiros. Habilitá-los é uma etapa manual: entre em contato com o MongoDB para incluir a organização na lista de permissões. Até lá, seu aplicação não pode agir na organização, mesmo que o usuário tenha autorizado seu aplicação.

O acesso delegado atinge a maioria dos endpoints da API de administração do Atlas , mas o Atlas trata alguns endpoints de forma diferente, independentemente das permissões do usuário autorizante.

Os endpoints bloqueados retornam uma resposta 403 Forbidden mesmo quando o usuário que autoriza detém uma função que normalmente permitiria a operação. O Atlas bloqueia os endpoints de configurações de federação, que leem e modificam a configuração de federação e logon único (SSO). A configuração do fornecedor de identidade é compartilhada por todas as organização de uma federação, portanto, o acesso delegado a ela pode expor ou interromper organizações que nunca autorizaram seu aplicação.

Os endpoints filtrados aceitam a chamada, mas restringem o que ela pode ver ou alterar, com base nas organizações que optaram por conexões de aplicativos de terceiros. Seu aplicação pode alcançar somente essas organizações, e o Atlas bloqueia o acesso aos recursos de uma organização que não optou por participar.

Os endpoints que abrangem organizações, como aquelas que listam todos os organização, projeto ou cluster que o usuário pode acessar, retornam apenas organizações que permitem conexões de aplicativos de terceiros. Para solicitações que criam recursos, o Atlas valida a organização de destino e rejeita a chamada quando essa organização não optou por participar.

O proprietário de uma organização ativa a partir de Organization Settings > App Connections. Para saber mais,consulte Permissões e Configurações de delegação da organização.

O Atlas pode bloquear ou filtrar endpoints adicionais para acesso delegado ao longo do tempo.

A API de administração do Atlas fornece acesso ao plano de controle: você pode criar, configurar e gerenciar recursos do Atlas como organizações, projetos, clusters e usuários. Ele não fornece acesso direto ao plano de dados (leitura ou gravação de documentos em seus bancos de dados).

Para acessar dados nos Atlas clusters, recupere a string de conexão do cluster por meio da API de administração do Atlas e conecte-se usando um usuário de banco de dados e o driver ou shell do MongoDB . A string de conexão e as credenciais do banco de dados são separadas do token de portador OAuth.

A revogação afeta o acesso ao plano de controle e ao plano de dados de maneira diferente. Consulte Efeitos do plano de dados.

O acesso delegado vincula os tokens do seu aplicativo ao usuário que o autoriza. Se as funções desse usuário forem alteradas, o usuário será desativado ou o usuário não se autenticar novamente dentro da vida útil do token de atualização, seu aplicação perderá as permissões necessárias, mesmo que a integração em si ainda esteja ativa.

Se a integração precisar de acesso contínuo à API de administração do Atlas que não dependa da autorização de um usuário específico, por exemplo, para redimensionar clusters ou alterar regiões de implantação de forma contínua, crie uma conta de serviço para a organização e o projeto do cliente, em vez de depender do acesso delegado para esse fluxo de trabalho.

Uma conta de serviço autentica usando o fluxo de credenciais do cliente OAuth 2.0 em vez do fluxo de código de autorização, portanto, não depende da sessão contínua de um usuário. Cada conta de serviço pertence a uma organização, e você pode conceder acesso a qualquer número de projetos dentro dessa organização. As funções do Atlas limitam quais operações os tokens de acesso da conta de serviço podem autenticar, da mesma forma que as funções limitam um usuário. Uma conta de serviço não pode fazer login na UI do Atlas e, como o acesso delegado, não fornece acesso ao plano de dados.

Para criar uma conta de serviço para a organização de um cliente , consulte Visão geral de contas de serviço e Criar uma conta de serviço para uma organização.

A maioria das integrações de parceiros provisiona recursos do Atlas em nome do usuário que o autoriza. A seguinte sequência cobre o caminho comum de uma conexão autorizada para uma string de conexão utilizável. Cada solicitação usa o token de portador da Etapa 2: Troca de tokens.

1

Chame GET /api/atlas/v2/orgs para listar as organizações que o usuário autorizador pode acessar e, em seguida, GET /api/atlas/v2/orgs/{orgId}/groups para listar os projetos dentro de uma organização.

Somente as organizações que permitem conexões de aplicativos de terceiros aparecem como destinos utilizáveis. Para saber mais, consulte Permissões e Configurações de delegação da organização.

2

Chame a função POST /api/atlas/v2/groups com o nome do projeto e a orgId da organização de destino. O Atlas valida o orgId no corpo da solicitação e retorna 403 Forbidden quando essa organização não permite conexões de aplicativos de terceiros.

3

Chame POST /api/atlas/v2/groups/{groupId}/clusters com o nome do cluster, o tipo de cluster e a especificação de replicação. A criação de cluster é assíncrona. Pesquise GET /api/atlas/v2/groups/{groupId}/clusters/{clusterName} até que o stateName do cluster seja IDLE.

4

Chame a função POST /api/atlas/v2/groups/{groupId}/databaseUsers para criar a identidade que seu aplicação usa para acesso ao plano de dados. Para obter orientação sobre função e ciclo de vida, consulte Ciclo de vida do usuário do banco de dados.

5

Adicione os endereços IP de saída do seu aplicativo à lista de acesso do projeto ou configure uma opção de conectividade privada. Para saber mais, consulte Configuração de rede e Listagem de permissões de IP.

6

Leia o campo connectionStrings do recurso do cluster e, em seguida, conecte-se a um driver MongoDB usando o usuário de banco de dados que você criou. A string de conexão e as credenciais do banco de dados são separadas do token de portador OAuth.

Para obter os esquemas completos de solicitação e resposta de cada endpoint, consulte a Especificação da API de administração do Atlas .

A API de administração do Atlas está disponível apenas na internet pública. Não está disponível por meio de emparelhamento de nuvem privada virtual (VPC) ou endpoints privados. Seu aplicação deve ser capaz de alcançar cloud.mongodb.com na porta 443.

Observação

O acesso delegado à API de administração do Atlas ignora qualquer restrição da lista de acesso da API do plano de controle (lista de permissões de IP da chave de API) que o cliente configurou. O acesso é regido pelas permissões do usuário que autoriza e pelas configurações de delegação da organização, não por restrições de IP do plano de controle. Para saber mais, consulte Limitações.

Para acesso ao plano de dados, o Atlas cluster ao qual você está se conectando pode ter uma lista de acesso IP configurada. Os endereços IP de saída do seu aplicativo devem ser adicionados à lista de acesso IP do cluster, ou você deve configurar o emparelhamento de rede ou um endpoint privado apropriado para sua implantação.

Padrões de conectividade na versão inicial:

  • Seu aplicação é responsável por configurar a permissão de IP para acesso ao plano de dados. Isso não é tratado automaticamente pela plataforma Atlas App Connections.

  • Para cada cluster que seu aplicação provisionar ou acessar, adicione seus IPs de saída ou intervalos deCIDR (Classless Inter-Domain Routing ) à lista de acesso IP do cluster usando o endpoint POST /api/atlas/v2/groups/{groupId}/accessList.

  • Nunca exponha o plano de dados à Internet pública. Sempre restrinja o acesso ao plano de dados com listas de acesso IP ou conexões privadas, como emparelhamento de rede ou endpoints privados.

Seu aplicação pode precisar criar e gerenciar usuários do banco de dados ao provisionar clusters Atlas em nome dos usuários. Os seguintes padrões são suportados na versão inicial.

Crie usuários de banco de dados por meio do endpoint POST /api/atlas/v2/groups/{groupId}/databaseUsers da API de administração do Atlas usando o token de portador do usuário que autoriza. O usuário deve ter uma função de projeto que permita o gerenciamento de usuário de banco de dados .

  • Fique dentro do limite de usuário de banco de dados . O Atlas impõe um limite padrão de 100 usuários de banco de dados por projeto. Reutilize usuários de banco de dados existentes sempre que possível, em vez de criar um novo usuário para cada operação, e desprovisione os usuários que você não precisa mais para evitar que o limite seja atingido.

  • Use funções com escopo. Crie usuários de banco de dados com as funções mínimas de banco de dados necessárias para seu caso de uso, em vez de atlasAdmin.

  • Desprovisione os usuários quando não forem mais necessários. Quando um usuário revogar o acesso ao seu aplicação, exclua todos os usuários do banco de dados que seu aplicação criou em seu nome. O Atlas não remove automaticamente os usuários do banco de dados quando o acesso é revogado.

  • Gire as credenciais em um cronograma definido. Se o seu aplicação armazenar senhas de usuário de banco de dados , alterne-as regularmente usando o endpoint PATCH /api/atlas/v2/groups/{groupId}/databaseUsers/ {databaseName}/{username}.

Importante

O Atlas não exclui automaticamente os usuários do banco de dados ou outros recursos que seu aplicação criou quando um usuário revoga o acesso. Seu aplicação é responsável por limpar os recursos criados. O não provisionamento dos usuários do banco de dados deixa as credenciais ativas na conta Atlas do usuário depois que ele desconecta o aplicação. Para saber mais, consulte Limitações.

Se o Atlas girar as credenciais de um recurso provisionado pelo aplicação , como a senha de um usuário do banco de dados , ele poderá notificar seu aplicação por meio de um webhook opcional em vez de exigir que você mesmo atualize as credenciais. Isso não está relacionado à rotação do OAuth client_secret; para isso, consulte Token e armazenamento secreto. Para implementar o webhook,consulte Implementar o webhook de rotação de credenciais.

Esta seção descreve os requisitos mínimos de segurança para lidar com credenciais e informações confidenciais em sua integração. Essas práticas reduzem o raio de alcance de um incidente de segurança e são necessárias para parceiros de design.

Seu aplicação lida com várias categorias de informações confidenciais que devem ser criptografadas em repouso:

  • Connection strings. As connection strings do Atlas contêm credenciais incorporadas ou usuários do banco de dados de referência. Criptografe todas as connection strings armazenadas usando o Advanced Encryption Standard (AES)-256 ou criptografia equivalente. Não armazene connection strings em texto simples em arquivos de configuração, armazenamentos de variáveis de ambiente ou bancos de dados.

  • Tokens OAuth. Os tokens de atualização são credenciais de longa duração. Armazene-os em um gerenciador de segredos criptografado (por exemplo, HashiCorp Vault, Amazon Web Services (AWS) Secrets Manager ou Azure Key Vault). Não armazene tokens de atualização em seu banco de dados de aplicativo sem criptografia.

  • Segredos do cliente. Seu client_secret é equivalente a uma senha. Armazene-o em um gerenciador de segredos e gire-o se suspeitar que ele foi exposto.

Dica

Prefira autenticação sem segredo

O Atlas permite autenticação sem segredo usando PKCE, o que remove a necessidade de gerenciar um client_secret completamente. Onde seu tipo de cliente permitir, use a autenticação sem segredo como a opção mais segura, em vez de provisionar e armazenar um segredo de cliente .

Quando seu aplicação recupera connection strings da API de administração do Atlas em nome de um usuário:

  • Recupere connection strings no momento em que forem necessárias, em vez de armazená-las por longo prazo, sempre que possível.

  • Se seu aplicação precisar manter uma string de conexão, armazene somente o que é necessário (por exemplo, o nome do host e a porta) separadamente das credenciais.

  • Não registre connection strings nem as inclua em mensagens de erro ou rastreamento de pilha.

  • Não confirme tokens ou segredos para o controle de origem.

  • Não registre tokens de acesso, tokens de atualização ou segredos de cliente . Se o seu aplicação registrar solicitações de API de Administração do Atlas para depuração, edite o cabeçalho Authorization.

  • Defina o acesso aos segredos em seu gerenciador de segredos apenas para os serviços que os exigem.

  • Gire seu client_secret periodicamente e imediatamente se ocorrer uma suspeita de comprometimento. Entre em contato com o MongoDB para girar o segredo associado ao seu aplicação OAuth.

Entender o comportamento de revogação é importante para projetar uma integração resiliente. A revogação pode ser acionada de várias maneiras e afeta o acesso ao plano de controle e ao plano de dados de maneiras diferentes.

A revogação pode ocorrer por meio de qualquer uma das seguintes ações:

  • O usuário revoga o acesso da UI do Atlas (User Settings > Connected Apps).

  • O proprietário da organização restringe conexões de aplicativos de terceiros para toda a organização a partir de Organization Settings.

  • O token de atualização expira porque o tempo de vida máximo do token de atualização da organização foi atingido ou o token estava ocioso além do limite de tempo de vida ocioso.

  • Seu aplicação revoga seus próprios tokens quando não precisa mais de acesso.

Importante

Os triggers acima revogam tokens emitidos por meio do fluxo OAuth. Elas não afetam uma conta de serviço que você criou para acesso contínuo (consulte Acesso contínuo com contas de serviço), porque uma conta de serviço não está vinculada à autorização de nenhum usuário individual.

Não revogue nem exclua as credenciais da conta de serviço de um cliente apenas porque um usuário individual revoga o acesso delegado ou é removido da organização. A conta de serviço representa a autorização contínua da sua integração, não o acesso individual do usuário.

Revogue as credenciais da conta de serviço quando o cliente excluir ou desconectar sua integração de sua conta, de acordo com o que essa ação significar em seu produto.

Quando um usuário desconectar seu aplicação da sua própria interface ou sua integração não precisar mais de acesso, revogue os tokens em vez de deixá-los expirar. Envie uma solicitação POST para o endpoint de revogação:

curl --request POST \
--url https://authorize.mongodb.com/tokens/revoke \
--header 'Content-Type: application/x-www-form-urlencoded' \
--user '<YOUR_CLIENT_ID>:<YOUR_CLIENT_SECRET>' \
--data 'token=<REFRESH_OR_ACCESS_TOKEN>' \
--data 'token_type_hint=refresh_token'
Parâmetro
Obrigatório
Descrição

token

Obrigatório

O token de acesso ou token de atualização a ser revogado.

token_type_hint

Opcional

access_token ou refresh_token. Ajuda o servidor a otimizar a pesquisa de token.

Revogar um token de atualização também invalida todos os tokens de acesso emitidos a partir dele. O endpoint retorna 200 OK se o token era válido ou não, portanto, trate uma resposta de sucesso como uma confirmação de que o token não pode mais ser usado e não como uma prova de que ele existiu.

A rapidez com que a revogação entra em vigor depende de quem revoga o acesso:

  • O proprietário de uma organização restringe as conexões de aplicativos de terceiros: a API de administração do Atlas verifica as configurações de delegação da organização em cada chamada, para que as solicitações contra essa organização comecem a retornar 403 Forbidden imediatamente.

  • Um usuário revoga o acesso do seu aplicativo: o token de atualização é invalidado imediatamente, mas qualquer token de acesso já emitido permanece válido até expirar. Como os tokens de acesso são de curta duração, seu aplicação pode continuar a fazer chamadas bem-sucedidas por até 10 minutos. Depois disso, as chamadas retornam 401 Unauthorized.

  • O MongoDB exclui seu cliente OAuth : a revogação atinge todas as organização às quais seu aplicação está conectado, o que leva até 15 minutos para ser concluído.

Projete seu aplicação para lidar com respostas 401 e 403 de forma proativa, em vez de depender da propagação imediata.

Revogar o acesso à API de administração do Atlas não encerra imediatamente as conexões do plano de dados existentes. Seu aplicação chega ao plano de dados por meio dos usuários do banco de dados criados, autenticando-se com credenciais independentes dos tokens OAuth. Revogar um token não invalida essas credenciais. As sessões abertas do driver do MongoDB e as conexões do pool de conexões permanecem ativas até que sejam fechadas por eventos normais do ciclo de vida da conexão, como um tempo limite, um fechamento ocioso ou um fechamento explícito pelo seu aplicação.

Como a revogação não remove os usuários do banco de dados criados pelo seu aplicação , limpe-os como parte do fluxo de desconexão. Para saber mais, consulte Ciclo de vida do usuário do banco de dados.

Cenário
Status
Ação recomendada

Token de acesso expirado

401

Use o token de atualização para obter um novo token de acesso.

Token de acesso revogado

401

Solicitar ao usuário que autorize novamente. O token de atualização também é invalidado.

Atualizar token expirado ou revogado

400

Solicitar ao usuário que autorize novamente. Reinicie o fluxo do Código de Autorização.

Credenciais do cliente inválidas

401

Verifique seu client_id e client_secret.

Delegação desabilitada para organização

403

Informe ao usuário que sua organização Atlas não permite conexões de aplicativos de terceiros. Direcione-os para o proprietário da organização .

Endpoint bloqueado

403

O endpoint solicitado não está disponível por meio de acesso delegado. Remova a chamada da sua integração.

O usuário não tem a função necessária

403

O usuário que autoriza não tem a função necessária para esta operação. Informe o usuário e sugira que ele solicite a função necessária ao proprietário da organização .

Os erros dos endpoints de autorização e token seguem a estrutura OAuth padrão:

{
"error": "error_code",
"error_description": "Human-readable explanation"
}

A tabela a seguir lista valores error comuns:

Código de erro
Quando
Ação recomendada

invalid_request

Um parâmetro obrigatório está ausente ou está malformado.

Verifique os parâmetros e a formatação necessários.

invalid_client

Falha na autenticação do cliente.

Verifique seu client_id e client_secret.

invalid_grant

O código de autorização expirou ou já foi usado, ou o token de atualização é inválido.

Reinicie o fluxo do Código de Autorização.

unauthorized_client

O cliente não está autorizado para este tipo de concessão.

Verifique se o registro do seu cliente inclui authorization_code.

access_denied

O usuário nega o autorização.

Informe o usuário. Não tente novamente automaticamente.

invalid_target

O parâmetro resource é inválido ou está ausente.

Verifique se o recurso está registrado para seu cliente.

unsupported_token_type

O valor token_type_hint é inválido.

Use access_token ou refresh_token.

Se o mesmo código de autorização for apresentado mais de uma vez, o servidor invalidará todos os tokens associados a essa concessão como uma medida de segurança contra a interceptação de código. Quando isso ocorre, o usuário deve autorizar novamente desde o início.

O MongoDB pode desabilitar um cliente registrado , por exemplo, durante a resposta a incidentes ou a desativação de um parceiro. Enquanto seu cliente estiver desabilitado, o servidor se recusará a iniciar novos fluxos de autorização ou emitir novos tokens:

  • O ponto de extremidade de autorização redireciona o usuário para seu redirect_uri com error=access_denied e um error_description de client is disabled.

  • O endpoint do token retorna 401 com invalid_client e a mesma descrição. Isso se aplica a todos os tipos de concessão, incluindo refresh_token, portanto, seu aplicação não pode trocar tokens de atualização existentes enquanto ele estiver desativado.

Os tokens de acesso emitidos antes de o cliente ser desabilitado permanecem válidos até expirarem. Desabilitar um cliente bloqueia novos tokens em vez de invalidar os existentes.

Um cliente desativado não pode se recuperar sozinho. Trate client is disabled como uma condição terminal: pare de tentar novamente, mostre a falha e entre em contato com a equipe de parceiros do MongoDB para que o cliente seja reativado.

Avalie esta página