Visão geral
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
Conceitos chave
- 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_verifieraleatório, derive umcode_challengedele e envie o desafio com a solicitação de autorização . Em seguida, o cliente comprova que originou a solicitação enviando ocode_verifieroriginal ao trocar o código de autorização por tokens.
Pré-requisitos
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_iddurante a integração. Clientes confidenciais (aplicativos da web do lado do servidor) também recebem umclient_secret. Clientes públicos (aplicativos nativos e de página única) autenticam apenas com oclient_ide 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).
Diretivas de marca
Se você precisar de ativos de marca MongoDB para sua integração, como o logotipo MongoDB , consulte a página Recursos de marca MongoDB .
URLs de base
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 ( |
|
Cloud base ( |
|
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.
OAuth 2.1 Fluxo de código de autorização com PKCE
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.
Visão geral do fluxo

O fluxo prossegue em três etapas:
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.
Seu aplicação troca o código de autorização por um token de acesso e um token de atualização.
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.
Etapa 1: solicitação de autorização
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 |
|---|---|---|
| Obrigatório | Deve ser |
| Obrigatório | ID do cliente do seu aplicativo, fornecido pelo MongoDB durante a integração. |
| 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 . |
| Obrigatório | O desafio do código PKCE derivado do seu |
| Obrigatório | Deve ser |
| 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>
Tela de autorização
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:
Verifique se
statecorresponde ao valor que você enviou na solicitação de autorização para evitar ataques CSRF.Verifique se
isscorresponde à base de autorização (https://authorize.mongodb.com) para evitar ataques de combinação do servidor de autorização .Verifique se há um parâmetro
errore manipule a negação normalmente antes de tentar usar ocode.
Os códigos de autorização são de uso único e expiram dentro de 10 minutos. Troque-os imediatamente.
Etapa 2: troca de tokens
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 |
|---|---|---|
| Obrigatório | Deve ser |
| Obrigatório | O código de autorização recebido do redirecionamento. |
| Obrigatório | O mesmo URI de redirecionamento usado na solicitação de autorização . |
| Obrigatório | A string original do verificador de código PKCE. |
| Obrigatório | ID do cliente do seu aplicativo. |
| 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 |
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 |
|---|---|---|
| string | Token do portador para autenticar solicitações de API de administração do Atlas . Duração curta. Confie no valor |
| string | Token usado para obter um novo token de acesso quando o atual expirar. Armazene com segurança. |
| string | Sempre |
| inteiro | Acesse a vida útil do token em segundos. Atualmente |
Etapa 3: atualizar tokens de acesso
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.
Utilizando a API do Atlas Admin com Acesso Delegado
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.
Permissões e configurações de delegação da organização
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.
Verificando o acesso da organização
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:
Para criar um projeto, o usuário precisa ter a função
Organization OwnerouOrganization Project Creator.Para criar um cluster, o usuário precisa ter a função
Project OwnerouProject Cluster Creatorno projeto de destino.
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.
Endpoints bloqueados e filtrados
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.
Plano de controle versus plano de dados
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.
Acesso contínuo com contas de serviço
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.
Provisionamento de recursos para um usuário
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.
Identifique a organização e o projeto alvo .
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.
Criar um utilizador de banco de dados.
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.
Configure o acesso à rede.
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.
Para obter os esquemas completos de solicitação e resposta de cada endpoint, consulte a Especificação da API de administração do Atlas .
Configuração de rede e lista de permissões de IP
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.
Ciclo de vida do usuário do banco de dados
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.
Criando usuários do banco de dados
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 .
Práticas recomendadas
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.
Melhores práticas de segurança
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.
Criptografando credenciais em repouso
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 .
Tratamento de connection strings
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.
Armazenamento secreto e de token
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_secretperiodicamente e imediatamente se ocorrer uma suspeita de comprometimento. Entre em contato com o MongoDB para girar o segredo associado ao seu aplicação OAuth.
Revogação e tratamento de erros
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.
Gatilhos de revogação
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.
Revogando tokens do seu aplicativo
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 |
|---|---|---|
| Obrigatório | O token de acesso ou token de atualização a ser revogado. |
| Opcional |
|
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.
Efeitos do plano de controle
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 Forbiddenimediatamente.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.
Efeitos do plano de dados
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.
Error Scenarios
Cenário | Status | Ação recomendada |
|---|---|---|
Token de acesso expirado |
| Use o token de atualização para obter um novo token de acesso. |
Token de acesso revogado |
| Solicitar ao usuário que autorize novamente. O token de atualização também é invalidado. |
Atualizar token expirado ou revogado |
| Solicitar ao usuário que autorize novamente. Reinicie o fluxo do Código de Autorização. |
Credenciais do cliente inválidas |
| Verifique seu |
Delegação desabilitada para organização |
| 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 |
| 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 |
| 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 . |
Respostas de erro OAuth
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 |
|---|---|---|
| Um parâmetro obrigatório está ausente ou está malformado. | Verifique os parâmetros e a formatação necessários. |
| Falha na autenticação do cliente. | Verifique seu |
| 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. |
| O cliente não está autorizado para este tipo de concessão. | Verifique se o registro do seu cliente inclui |
| O usuário nega o autorização. | Informe o usuário. Não tente novamente automaticamente. |
| O parâmetro | Verifique se o recurso está registrado para seu cliente. |
| O valor | Use |
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.
Clientes desativados
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_uricomerror=access_deniede umerror_descriptiondeclient is disabled.O endpoint do token retorna
401cominvalid_cliente a mesma descrição. Isso se aplica a todos os tipos de concessão, incluindorefresh_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.