Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Autenticação Kerberos (GSSAPI)

O mecanismo de autenticação da API de serviços de segurança genérica (GSSAPI) permite que você autentique em um serviço Kerberos especificando seu nome principal.

Observação

Terminologia

A página usa GSSAPI ao se referir ao mecanismo de autenticação e Kerberos ao se referir ao protocolo ou serviço subjacente. O driver autentica usando o mecanismo SASL GSSAPI RFC-4752, que é criado sobre o protocolo Kerberos.

Os exemplos nesta seção mostram como especificar o mecanismo de autenticação do GSSAPI e utilizar os seguintes valores de espaço reservado:

  • <Kerberos principal>: seu nome principal codificado para URL.

  • <hostname>: O endereço de rede da sua MongoDB deployment, acessível pelo seu cliente.

  • <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).

Selecione a aba Connection String ou MongoCredential para ver as instruções e um exemplo de código:

Para especificar o mecanismo de autenticação GSSAPI em sua string de conexão, execute as seguintes ações:

  • Defina o parâmetro de URL authMechanism como GSSAPI.

  • (Opcional) Defina o parâmetro de URL do authSource para $external.

Observação

Se você especificar o mecanismo GSSAPI , não poderá atribuir authSource a nenhum valor diferente de $external.

O exemplo a seguir especifica o mecanismo de autenticação em uma string de conexão:

val mongoClient = MongoClient(
"mongodb://<Kerberos principal>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI"
)

Para especificar o mecanismo de autenticação GSSAPI usando a classe MongoCredential, use o método createGSSAPICredential() conforme mostrado no exemplo a seguir:

val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
val mongoClient = MongoClient(MongoClientSettings
.builder()
.applyToClusterSettings(builder =>
builder.hosts(List(new ServerAddress("<hostname>", <port>)).asJava))
.credential(credential)
.build())

Para adquirir um ticket Kerberos, as bibliotecas GSSAPI Java exigem que você especifique as propriedades do sistema Realm e Key Distribution Center (KDC).

O seguinte código mostra valores de amostra para estas propriedades:

java.security.krb5.realm=MYREALM.ME
java.security.krb5.kdc=mykdc.myrealm.me

Talvez seja necessário especificar uma ou mais das seguintes propriedades adicionais do mecanismo de autenticação, dependendo da configuração do Kerberos:

  • SERVICE_NAME

  • CANONICALIZE_HOST_NAME

  • JAVA_SUBJECT

  • JAVA_SASL_CLIENT_PROPERTIES

  • JAVA_SUBJECT_PROVIDER

Selecione a aba Connection String ou MongoCredential abaixo para obter instruções e amostras de código para especificar estas propriedades:

Para especificar as propriedades adicionais do GSSAPI, inclua a propriedade na string de conexão como um parâmetro de URL no formato <PROPERTY_NAME>:<value>.

O exemplo a seguir autentica para GSSAPI e especifica a propriedade SERVICE_NAME:

val mongoClient = MongoClient(
"mongodb://<Kerberos principal>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:myService"
)

Importante

Você pode especificar as seguintes propriedades GSSAPI somente usando o MongoCredential:

  • JAVA_SUBJECT

  • JAVA_SASL_CLIENT_PROPERTIES

  • JAVA_SUBJECT_PROVIDER

Selecione a guia MongoCredential para ver como especificá-los.

Para especificar as propriedades adicionais do GSSAPI, chame o método withMechanismProperty() na sua instância do MongoCredential e passe o nome e o valor da propriedade como parâmetros. Use as seguintes constantes de nome de propriedade definidas na classe MongoCredential :

O exemplo a seguir autentica para GSSAPI e especifica a constante SERVICE_NAME_KEY:

val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
.withMechanismProperty(MongoCredential.SERVICE_NAME_KEY, "myService")

A propriedade JAVA_SUBJECT_KEY requer um objeto javax.security.auth.Subject. Para recuperar um Subject, você deve primeiro autenticar através do Java Authentication and Authorization Service (JAAS) usando um LoginContext. O exemplo a seguir mostra esta configuração:

val loginContext = new LoginContext("<LoginModule implementation from JAAS config>")
loginContext.login()
val subject: Subject = loginContext.getSubject()
val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
.withMechanismProperty(MongoCredential.JAVA_SUBJECT_KEY, subject)

Por padrão, o driver Scala armazena em cache os tickets Kerberos pela instância MongoClient que os criou. Se sua implantação criar e destruir instâncias MongoClient com frequência, você poderá melhorar o desempenho alterando o comportamento padrão de cache de tickets Kerberos para cache por processo.

Importante

Você deve usar a classe MongoCredential para alterar o comportamento de cache padrão, porque o mecanismo de autenticação da string de conexão não oferece suporte à propriedade de mecanismo JAVA_SUBJECT_PROVIDER.

Para armazenar em cache tickets Kerberos por processo, especifique a propriedade de mecanismo JAVA_SUBJECT_PROVIDER e forneça um KerberosSubjectProvider em sua instância MongoCredential, conforme mostrado no exemplo a seguir:

/* All MongoClient instances sharing this instance of KerberosSubjectProvider
will share a Kerberos ticket cache */
val myLoginContext = "myContext"
/* Login context defaults to "com.sun.security.jgss.krb5.initiate"
if unspecified in KerberosSubjectProvider */
val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
.withMechanismProperty(
MongoCredential.JAVA_SUBJECT_PROVIDER_KEY,
new KerberosSubjectProvider(myLoginContext)
)

Observação

No Windows, o JRE da Oracle usa LSA em vez de SSPI em sua implementação de GSSAPI. Esse comportamento limita a interoperabilidade com o Windows Active Directory e as implementações de logon único. Para saber mais, consulte os seguintes recursos:

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 Scala, consulte o guia Criar um MongoClient.

Para saber mais sobre as classes e métodos para autenticar seu aplicativo com o driver Scala, consulte a seguinte documentação da API: