OIDC (Federação de Identidade do Volume de Trabalho)
Visão geral
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.
Espaços reservados de código
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.
Especifique a autenticação OIDC
As seções a seguir descrevem como usar a autenticação OIDC para autenticar de várias plataformas.
IMDS do Azure
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 comoMONGODB-OIDC
.authMechanismProperties
: Defina comoENVIRONMENT: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());
GCP IMDS
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 comoMONGODB-OIDC
.authMechanismProperties
: Defina comoENVIRONMENT: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());
Kubernetes
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 comoMONGODB-OIDC
.authMechanismProperties
: Defina comoENVIRONMENT: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());
Chamada de resposta personalizada
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());
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: