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.
Importante
O mecanismo de autenticação do MONGODB-OIDC
exige MongoDB Server v7.0 ou posterior executando em uma plataforma Linux.
Dica
Autenticação OIDC
Para obter mais informações sobre o mecanismo de autenticação MONGODB-OIDC
, consulte Autenticação do OpenID Connect e Parâmetros do MongoDB Server no manual do MongoDB Server.
Especifique a autenticação OIDC
As seções a seguir descrevem como usar a autenticação OIDC para autenticar de diferentes plataformas. Os exemplos de código usam os seguintes espaços reservados:
<OIDC principal>
: o ID do cliente ou do ID do aplicativo de identidade gerenciada pelo Azure ou do aplicação empresarial , se estiver autenticando no Azure IMDS.<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 especificar uma porta ao se conectar a um cluster MongoDB Atlas .
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 Kotlin Sync.
Você pode especificar a autenticação do Azure IMDS OIDC utilizando uma instância do MongoCredential
ou especificando suas credenciais na string de conexão.
Selecione nas abas Connection String ou MongoCredential para ver a sintaxe correspondente.
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 .
val connectionString = ConnectionString( "mongodb://<OIDC principal>@<hostname>:<port>/?" + "?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>") val mongoClient = MongoClient.create(connectionString)
Substitua o espaço reservado <audience>
pelo valor do parâmetro de servidor audience
configurado em sua implantação do MongoDB .
val credential = MongoCredential.createOidcCredential("<OIDC principal>") .withMechanismProperty("ENVIRONMENT", "azure") .withMechanismProperty("TOKEN_RESOURCE", "<audience>") val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build())
GCP IMDS
Se seu aplicação é executado em uma VM do Google Compute Engine ou usa o GCP Instance Metadata Service, você pode autenticar no MongoDB usando o suporte integrado ao GCP do driver Kotlin Sync.
Você pode especificar a autenticação GCP IMDS OIDC usando uma instância MongoCredential
ou especificando suas credenciais na string de conexão.
Selecione nas abas Connection String ou MongoCredential para ver a sintaxe correspondente.
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 .
val connectionString = ConnectionString( "mongodb://<OIDC principal>@<hostname>:<port>/?" + "authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<percent-encoded audience>") val mongoClient = MongoClient.create(connectionString)
Substitua o espaço reservado <audience>
pelo valor do parâmetro de servidor audience
configurado em sua implantação do MongoDB .
val credential = MongoCredential.createOidcCredential("<OIDC principal>") .withMechanismProperty("ENVIRONMENT", "gcp") .withMechanismProperty("TOKEN_RESOURCE", "<audience>") val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build())
Chamada de resposta personalizada
O driver Kotlin Sync não oferece suporte interno para todas as plataformas, incluindo Azure Functions e Azure Kubernetes Service (AKS). Em vez disso, você deve definir um chamada de resposta 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:
val credential = MongoCredential.createOidcCredential(null) .withMechanismProperty("OIDC_CALLBACK") { context: Context -> val accessToken = "..." 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:
val credential = MongoCredential.createOidcCredential(null) .withMechanismProperty("OIDC_CALLBACK") { context: Context -> val accessToken = String(Files.readAllBytes(Paths.get("access-token.dat"))) OidcCallbackResult(accessToken) } val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build() )
Informações adicionais
Para saber mais sobre autenticação no MongoDB, consulte Autenticação no manual do MongoDB Server .
Para saber mais sobre como criar um objeto MongoClient
usando o driver Kotlin Sync, consulte o guia Criar um MongoClient.
Documentação da API
Para saber mais sobre as classes e métodos para autenticar seu aplicação com o driver Kotlin Sync, consulte a seguinte documentação da API: