Visão geral
O mecanismo de autenticação da API de serviços de segurança genérica (GSSAPI) permite que você use seu nome principal para autenticar em um serviço Kerberos. Você pode usar esse mecanismo somente ao autenticar para Enterprise Advanced.
Espaços reservados de código
Os exemplos de código nesta página usam os seguintes espaços reservados:
kerberos_principal
: 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 arquivokeytab
para evitar expor sua senha no código.connection_uri
Seu URI da cadeia de conexão.
Especifique a autenticação Kerberos (GSSAPI)
You must use the gssapi
build tag and specify cgo support during compilation to use Kerberos authentication. cgo
support is enabled by default unless you previously set environment variables to cross-compile to a different platform. To use the gssapi
build tag, compile your code with the following command:
go build -tags gssapi
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: "<kerberos_principal>", Password: "<password>", PasswordSet: true, } uri := "<connection_uri>" clientOpts := options.Client().ApplyURI(uri).SetAuth(credential) client, err := mongo.Connect(clientOpts)
You can omit a password or the PasswordSet
field in your Credential
struct if you store authentication keys in keytab
files. You can initialize a credential cache for authenticating the Kerberos principal using the kinit
binary. To learn more about the kinit
binary, see the Oracle documentation.
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://<kerberos_principal>:<password>@<hostname>/?authMechanism=GSSAPI"
Definir campos SERVIÇOS_NAME e SERVIÇO_REALM personalizados
Você pode especificar mais propriedades 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 definir valores personalizados para os campos SERVICE_NAME
e SERVICE_REALM
ao definir uma estrutura Credential
:
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<kerberos_principal>", Password: "<password>", AuthMechanismProperties: map[string]string{ "SERVICE_REALM": "<kerberos_service_realm>", "SERVICE_NAME": "<service_name>", }, }
Para obter mais propriedades, consulte a entrada manual do servidor sobre propriedades de autenticação.
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: