Visão geral
O mecanismo de autenticação do MONGODB-AWS utiliza credenciais do Amazon Web Services Identity and Access Management (Amazon Web Services IAM) para autenticar um usuário no MongoDB. Você pode usar esse mecanismo somente ao autenticar no MongoDB Atlas.
Para saber mais sobre como configurar o MongoDB Atlas para a autenticação do Amazon Web Services IAM, consulte Configurar a autenticação com o Amazon Web Services IAM na documentação do Atlas .
Observação
Teste do SDK do Amazon Web Services
O driver Reactive Streams do Java testa o MONGODB-AWS com as versões 2.30.31 e 1.12.782 do AWS SDK.
Espaços reservados de código
Os exemplos de código nesta página usam os seguintes espaços reservados:
<awsKeyId>: IDda chave de acesso do Amazon Web Services<atlasUri>: O endereço de rede da sua implantação do MongoDB Atlas<awsSecretKey>: Sua chave de acesso secreto Amazon Web Services<awsSessionToken>: Seu token de sessão do Amazon Web Services<hostname>: O nome do host da sua implantação do MongoDB Atlas<port>: A porta da sua implantação do MongoDB Atlas
Para usar os exemplos de código nesta página, substitua esses espaços reservados por seus próprios valores.
Especifique a autenticação MONGODB-AWS
Para instruir o driver a usar esse mecanismo de autenticação, você pode especificar MONGODB-AWS como um parâmetro na cadeia de conexão ou usando o método de fábrica MongoCredential.createAwsCredential().
Esta seção descreve como especificar esse mecanismo de autenticação e várias maneiras de fornecer suas credenciais do AWS IAM para o driver Java Reactive Streams.
Use o Amazon Web Services SDK para Java
Importante
Este método de fornecer credenciais do MONGODB-AWS está disponível somente no driver Java Reactive Streams v4.8 e posterior.
Você pode especificar suas credenciais usando v1 ou v2 do Amazon Web Services SDK para Java, que oferece os seguintes recursos:
Várias opções para obter credenciais
Cache de credenciais que ajuda seu aplicativo a evitar limitação de taxa
Gerenciamento de fornecedor de credencial para uso com o Serviço Elastic Kubernetes.
Para usar o Amazon Web Services SDK para Java para autenticação MONGODB-AWS, você deve executar as seguintes ações:
Especifique o mecanismo de autenticação.
Adicione o SDK como uma dependência ao seu projeto.
Forneça suas credenciais usando um dos métodos na cadeia de fornecedores de credencial.
Especifique o mecanismo de autenticação usando MongoCredential
Para especificar o mecanismo de autenticação usando um MongoCredential, use o método de fábrica MongoCredential.createAwsCredential() e adicione a instância MongoCredential ao seu MongoClient, conforme mostrado no exemplo a seguir:
MongoCredential credential = MongoCredential.createAwsCredential(null, null); // Creates a MongoClient that receives configuration information from a MongoCredential and environment variables MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
Para especificar o mecanismo de autenticação na string de conexão, adicione-o como um parâmetro, conforme mostrado no exemplo a seguir:
MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");
Adicione a dependência do SDK do Amazon Web Services
Para adicionar a AWS SDK como uma dependência ao seu projeto, consulte a seguinte documentação da AWS:
Para o AWS SDK for Java v2, consulte a página de Configuração do guia.
Para o AWS SDK for Java v1, consulte o Guia de Primeiros passos.
Observação
Para o AWS SDK para Java v2, o driver Java Reactive Streams é testado usando a dependência software.amazon.awssdk:auth:2.30.31.
Para o AWS SDK para Java v1, o driver Java Reactive Streams é testado usando a dependência com.amazonaws:aws-java-sdk-core:1.12.782.
Forneça suas Credenciais
Para fornecer suas credenciais para o driver Java Reactive Streams, consulte a seguinte documentação da AWS:
Para saber mais sobre a classe AWS SDK para Java v2 que o driver usa para obter as credenciais, consulte a documentação da API DefaultCredentialsProvider da AWS.
Saiba como fornecer suas credenciais a essa classe na seção Usar a cadeia de fornecedores de credencial padrão na documentação da API da AWS.
Para saber mais sobre a classe AWS SDK para Java v1 que o driver usa para obter as credenciais, consulte a documentação da API DefaultAWSCredentialsProviderChain da AWS.
Saiba como fornecer suas credenciais a essa classe na seção Usar a cadeia de fornecedores de credenciais padrão na documentação da API da AWS.
Observação
Se você incluir v1 e v2 do AWS SDK para Java em seu projeto, deverá usar os métodos v2 para fornecer suas credenciais para o driver Java Reactive Streams.
Usar variáveis de ambiente
Você pode fornecer suas credenciais do AWS IAM instruindo o driver a usar o mecanismo de autenticação MONGODB-AWS e definindo suas variáveis de ambiente.
Para usar as variáveis de ambiente para fornecer suas credenciais, você deve executar as seguintes ações:
Especifique o mecanismo de autenticação
Adicionar suas variáveis de ambiente
Especifique o mecanismo de autenticação
Você pode especificar o mecanismo de autenticação utilizando um MongoCredential ou na string de conexão.
Para especificar o mecanismo de autenticação usando um MongoCredential, use o método de fábrica MongoCredential.createAwsCredential() e adicione a instância MongoCredential ao seu MongoClient, conforme mostrado no exemplo a seguir:
MongoCredential credential = MongoCredential.createAwsCredential(null, null); // Creates a MongoClient that receives configuration information from a MongoCredential and environment variables MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
Para especificar o mecanismo de autenticação na string de conexão, adicione-o como um parâmetro, conforme mostrado no exemplo a seguir:
MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");
Definir variáveis de ambiente
Você pode definir variáveis de ambiente para habilitar os seguintes tipos de autenticação:
Chaves de acesso programático
Fornecedor de identidade web
Credenciais do container ECS
Credenciais do container EC2
Chaves de acesso programático
O exemplo a seguir mostra como você pode definir suas chaves de acesso programático em variáveis de ambiente usando bash ou um shell similar:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
Se você não precisar de um token de sessão AWS para essa função, omita o comando que contém AWS_SESSION_TOKEN.
Fornecedor de identidade web
Você pode usar um provedor de identidade da Web compatível com OpenID Connect (OIDC) para autenticar no Amazon Elastic Kubernetes Service (EKS) ou em outros serviços.
Importante
Seu projeto deve incluir v1 ou v2 do AWS SDK como uma dependência para autenticar usando um fornecedor de identidade da Web.
Para usar um fornecedor de identidade web, crie um arquivo que contenha seu token OIDC. Em seguida, use bash ou um shell semelhante para definir uma variável de ambiente para o caminho absoluto para esse arquivo, conforme mostrado no exemplo a seguir:
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
Credenciais do container ECS
Para autenticar usando credenciais de container do ECS, defina o URI relativo do ponto de extremidade do ECS em uma variável de ambiente usando bash ou um shell semelhante, conforme mostrado no exemplo a seguir:
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>
Credenciais de container EC2
Para autenticar usando as credenciais do contêiner EC2, certifique-se de que nenhuma das variáveis de ambiente mencionadas nesta seção esteja definida. O driver obtém as credenciais do endpoint de metadados de instância IPv4 EC2 padrão em vez de variáveis de ambiente.
Usar uma instância do MongoCredential
Você pode fornecer suas credenciais do Amazon Web Services IAM para um MongoClient usando uma instância MongoCredential. Para construir a instância do MongoCredential para autenticação do MONGODB-AWS, utilize o método de fábrica do createAwsCredential().
Você pode fornecer somente chaves de acesso programáticas para o MongoCredential.createAwsCredential() método. Se você precisar fornecer2 credenciais de contêiner ECS ou EC, use as instruções nas seções Usar Variáveis de Ambiente ou Usar AWS SDK para Java .
Para usar o MongoCredential para autenticação do MONGODB-AWS, você deve executar as seguintes ações:
Especifique o mecanismo de autenticação
Fornecer as credenciais
Especifique o mecanismo de autenticação usando MongoCredential
Para especificar o mecanismo de autenticação usando um MongoCredential, use o método de fábrica MongoCredential.createAwsCredential() e adicione a instância MongoCredential ao seu MongoClient, conforme mostrado no exemplo a seguir:
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); // Creates a MongoClient that receives AWS credentials from the MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
Especificar um token de sessão
Se você precisar especificar um token de sessão AWS, passe para o método withMechanismProperty(), como mostrado no exemplo a seguir:
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>"); // Creates a MongoClient that receives configuration information from a MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
Atualize suas credenciais
Para atualizar suas credenciais do AWS IAM, declare uma expressão lambda do Supplier que retorna novas credenciais, como mostrado no seguinte exemplo:
Supplier<AwsCredential> awsFreshCredentialSupplier = () -> { // Add your code to fetch new credentials return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>"); }; // Creates a MongoCredential instance to specify the new AWS credentials MongoCredential credential = MongoCredential.createAwsCredential(null, null) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); // Creates a MongoClient that receives new configuration information from a MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos nesta página, consulte a seguinte documentação da API: