Menu Docs
Página inicial do Docs
/ / /
Driver GO
/

Mecanismos de autenticação empresarial

Nesta página

  • Visão geral
  • Autenticação no GSSAPI/Kerberos
  • Exemplo
  • Definir campos personalizados SERVICE_NAME e SERVICE_REALM
  • Autenticar no LDAP (PLAIN)
  • Exemplo
  • Informações adicionais
  • Documentação da API

Neste guia, você aprenderá como autenticar no MongoDB usando os mecanismos de autenticação disponíveis no MongoDB Enterprise Edition. Os mecanismos de autenticação são processos pelos quais o driver e o servidor confirmam a identidade de um cliente para garantir maior segurança antes de se conectar.

Você pode usar os seguintes mecanismos de autenticação com a versão mais recente do MongoDB Enterprise Edition:

  • GSSAPI/Kerberos

  • LDAP (Plain)

Para autenticar usando outro mecanismo, consulte a página de fundamentos do Autenticação Mecanismos . Para saber mais sobre como estabelecer uma conexão com seu Cluster MongoDB, consulte o Guia de Conexão.

Você pode especificar seu mecanismo de autenticação e credenciais ao se conectar ao MongoDB por meio dos seguintes métodos:

  • Usando um URI de string de conexão. Para saber mais sobre como usar um URI de string de conexão para autenticação empresarial, consulte a entrada manual do servidor em URIs de string.

  • Especificar credenciais e um mecanismo de autenticação no tipo Credential .

O mecanismo de autenticação GSSAPI (Generic Security Services API) permite que o usuário autentique em um serviço Kerberos usando a entidade de segurança do usuário.

Você deve usar a tag de construção gssapi e especificar o suporte cgo durante a compilação para usar a autenticação Kerberos. O suporte cgo é habilitado por padrão, a menos que você defina anteriormente variáveis de ambiente para compilação cruzada em uma plataforma diferente. Para usar a tag de construção gssapi, compile seu código com o seguinte comando:

go build -tags gssapi

Este exemplo especifica o mecanismo de autenticação usando os seguintes espaços reservados:

  • username: Seu principal Kerberos. Um exemplo de nome de usuário é myuser@KERBEROS.EXAMPLE.COM.

  • password: A senha do usuário Kerberos. Você também pode armazenar sua senha em um arquivo keytab para evitar expor sua senha no código.

  • connection uriSeu URI da cadeia de conexão.

O código a seguir mostra como você pode definir uma estrutura Credential para se autenticar no Kerberos e criar um cliente com suas preferências de autenticação:

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<username>",
Password: "<password>",
PasswordSet: true,
}
uri := "<connection uri>"
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

Você não precisa definir uma senha nem o campo PasswordSet em sua estrutura Credential se armazenar chaves de autenticação em arquivos keytab. Você pode inicializar um cache de credenciais para autenticar a entidade Kerberos utilizando o binário kinit. Para saber mais sobre o kinit binário, consulte a documentação da Oracle.

O comando a seguir mostra como você pode chamar um cache de credenciais para um exemplo de nome de usuário:

kinit myuser@KERBEROS.EXAMPLE.COM

Como alternativa, é possível se autenticar usando uma URI de string de conexão especificando a entidade Kerberos codificada por URL, a senha, o hostname e o endereço de rede do servidor MongoDB:

uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=GSSAPI"

Você pode especificar propriedades adicionais com seu mecanismo de autenticação usando o campo AuthMechanismProperties na estrutura Credential. O nome de serviço padrão para Kerberos é "mongodb". O código a seguir mostra como você pode definir valores personalizados para os campos SERVICE_NAME e SERVICE_REALM ao definir uma estrutura Credential:

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<username>",
Password: "<password>",
AuthMechanismProperties: map[string]string{
"SERVICE_REALM": "<Kerberos service realm>",
"SERVICE_NAME": "<service name>",
},
}

Para mais informações sobre propriedades adicionais, consulte a entrada manual do servidor sobre propriedades de autenticação.

Você pode autenticar em um servidor LDAP (Lightweight Directory Access Protocol) usando seu nome de usuário e senha do servidor de diretórios.

Aviso

Esse mecanismo de autenticação envia a senha para o servidor em texto simples, portanto, use esse mecanismo somente com conexões TLS.

Este exemplo especifica o mecanismo de autenticação usando os seguintes espaços reservados:

  • username: Seu nome de usuário LDAP

  • password: Sua senha LDAP

  • connection uri: Seu URI da cadeia de conexão

O código a seguir mostra como você pode definir uma estrutura Credential para se autenticar no LDAP e criar um cliente com suas preferências de autenticação:

credential := options.Credential{
AuthMechanism: "PLAIN",
Username: "<username>",
Password: "<password>",
}
uri := "<connection uri>"
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

Como alternativa, você pode autenticar usando uma URI de string de conexão, especificando seu nome de usuário LDAP, senha e hostname, o endereço de rede do seu servidor MongoDB:

uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=PLAIN"

Observação

O método refere-se a PLAIN em vez de LDAP, pois ele autentica usando o PLAIN Simple Authentication and Security Layer (SASL) definido em RFC-4616.

Para saber mais sobre os conceitos deste guia, consulte a seguinte documentação:

← Mecanismos de autenticação