Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java
/ /

OIDC (Federação de Identidade do Volume de Trabalho)

O mecanismo de autenticação OpenID Connect (OIDC) permite que você autentique no MongoDB usando um provedor de identidade de terceiros, como o Azure ou o Google Cloud Platform (GCP).

Você pode usar esse mecanismo somente ao autenticar para MongoDB Atlas ou Enterprise Advanced e somente ao autenticar para MongoDB v7.0 ou posterior.

Dica

Autenticação OIDC

Para saber mais sobre como configurar o MongoDB Atlas para autenticação OIDC, consulte Configurar Federação de Identidade da Força de Trabalho com OIDC na documentação do Atlas .

Para obter mais informações sobre o uso da autenticação OIDC com o MongoDB, consulte Authentication and Authorization with OIDC/OAuth 2.0 e oidcIdentityProviders no manual do MongoDB Server.

Os exemplos de código nesta página usam os seguintes espaços reservados:

  • <db_username>: O nome de usuário MongoDB do usuário a ser autenticado.

  • <hostname>: O endereço de rede da sua implantação MongoDB .

  • <port>: o número da porta da sua implantação do MongoDB . Se você omitir este parâmetro, o driver utilizará o número de porta padrão (27017). Você não precisa de um número de porta ao se conectar a um cluster MongoDB Atlas .

Para usar os exemplos de código, substitua esses espaços reservados por seus próprios valores.

As seções a seguir descrevem como usar a autenticação OIDC para autenticar de várias plataformas.

Se o seu aplicação for executado em uma VM do Azure ou de outra forma usar o Azure Instance Metadata Service (IMDS), você poderá autenticar no MongoDB usando o suporte integrado do Azure driver Java .

Você pode especificar a autenticação do Azure IMDS OIDC utilizando um MongoCredential ou como parte da string de conexão.

Selecione nas abas Connection String ou MongoCredential para ver a sintaxe correspondente:

Para especificar o Azure IMDS OIDC como o mecanismo de autenticação, defina as seguintes opções em sua string de conexão:

  • authMechanism: Defina como MONGODB-OIDC.

  • authMechanismProperties: Defina como ENVIRONMENT:azure.

Substitua o espaço reservado <percent-encoded audience> no seguinte código pelo valor codificado por porcentagem do parâmetro do servidor de público configurado em sua implantação do MongoDB .

O caractere de vírgula (,) e sua codificação (%2C) são reservados, e o uso desses caracteres em um valor faz com que o driver interprete as vírgulas como delimitadores de pares de valores-chave. Você deve especificar valores que contêm vírgulas em uma instância do MongoCredential , como demonstrado na aba MongoCredential .

MongoClient mongoClient = MongoClients.create(
"mongodb://<db_username>@<hostname>:<port>/?" +
"?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>");

Substitua o espaço reservado <audience> pelo valor do parâmetro de servidor audience configurado em sua implantação do MongoDB .

MongoCredential credential = MongoCredential.createOidcCredential("<db_username>")
.withMechanismProperty("ENVIRONMENT", "azure")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Se seu aplicação é executado em uma VM do Google Compute Engine ou usa o Serviço de Metadados de Instância GCP, você pode autenticar no MongoDB usando o suporte GCP integrado do driver Java .

Você pode especificar a autenticação GCP IMDS OIDC usando um MongoCredential ou como parte da string de conexão.

Selecione nas abas Connection String ou MongoCredential para ver a sintaxe correspondente:

Para especificar o GCP IMDS OIDC como o mecanismo de autenticação, defina as seguintes opções em sua string de conexão:

  • authMechanism: Defina como MONGODB-OIDC.

  • authMechanismProperties: Defina como ENVIRONMENT:gcp.

Substitua o espaço reservado <percent-encoded audience> no seguinte código pelo valor codificado por porcentagem do parâmetro do servidor de público configurado em sua implantação do MongoDB .

O caractere de vírgula (,) e sua codificação (%2C) são reservados, e o uso desses caracteres em um valor faz com que o driver interprete as vírgulas como delimitadores de pares de valores-chave. Você deve especificar valores que contêm vírgulas em uma instância do MongoCredential , como demonstrado na aba MongoCredential .

MongoClient mongoClient = MongoClients.create(
"mongodb://<hostname>:<port>/?" +
"authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<percent-encoded audience>");

Substitua o espaço reservado <audience> pelo valor do parâmetro de servidor audience configurado em sua implantação do MongoDB .

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("ENVIRONMENT", "gcp")
.withMechanismProperty("TOKEN_RESOURCE", "<audience>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Se seu aplicação for executado em um cluster Kubernetes, você poderá autenticar no MongoDB usando o suporte integrado ao Kubernetes do driver Java .

Selecione nas abas Connection String ou MongoCredential para ver a sintaxe correspondente.

Para especificar o Kubernetes OIDC como o mecanismo de autenticação, defina as seguintes opções em sua string de conexão:

  • authMechanism: Defina como MONGODB-OIDC.

  • authMechanismProperties: Defina como ENVIRONMENT:k8s.

MongoClient mongoClient = MongoClients.create(
"mongodb://<hostname>:<port>/" +
"?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:k8s");

Substitua hostname e port pelo endereço de rede e o número da porta da sua implantação do MongoDB .

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("ENVIRONMENT", "k8s");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

O driver Java não oferece suporte integrado para todas as plataformas, incluindo Azure Functions e Azure Kubernetes Service (AKS). Em vez disso, você deve definir um retorno de chamada personalizado para usar o OIDC para autenticar a partir dessas plataformas. Para fazer isso, use a propriedade de autenticação "OIDC_CALLBACK" , como mostrado no seguinte exemplo de código:

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("OIDC_CALLBACK", (context) -> {
String accessToken = ...
return new OidcCallbackResult(accessToken);
});

O valor da propriedade "OIDC_CALLBACK" deve ser um Lambda ou outra implementação da interface funcional OidcCallback que aceite um OidcCallbackContext como parâmetro e retorne um OidcCallbackResult.

O exemplo a seguir usa um exemplo de chamada de resposta para recuperar um token OIDC de um arquivo chamado "access-token.dat" no sistema de arquivos local:

MongoCredential credential = MongoCredential.createOidcCredential(null)
.withMechanismProperty("OIDC_CALLBACK", (context) -> {
string accessToken = new String(Files.readAllBytes(Paths.get("access-token.dat"));
return new OidcCallbackResult(accessToken);
});
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Para saber mais sobre qualquer um dos métodos ou tipos discutidos nesta página, consulte a seguinte documentação da API:

Voltar

AWS IAM

Nesta página

  • Visão geral
  • Espaços reservados de código
  • Especifique a autenticação OIDC
  • IMDS do Azure
  • GCP IMDS
  • Kubernetes
  • Chamada de resposta personalizada
  • Documentação da API