Visão geral
Observação
A autenticação GSSAPI está disponível apenas no MongoDB Enterprise Edition.
O mecanismo de autenticação da API de Serviços de Segurança Genérica (GSSAPI) permite que você use seu nome principal do Kerberos para autenticar em uma implementação do MongoDB configurada para a autenticação do Kerberos.
Para usar o Kerberos a partir do driver C++ , seu sistema do MongoDB já deve estar configurado para autenticação Kerberos e seu host de aplicação deve ser capaz de obter credenciais Kerberos.
Espaços reservados de código
O exemplo de código nesta página utiliza os seguintes espaços reservados:
<kerberos_principal>: Seu principal Kerberos para autenticar.<hostname>: nome de domínio totalmente qualificado (FQDN) de um hostmongodoumongosem seu sistema. O Kerberos requer FQDNs em vez de endereços IP ou nomes de host curtos para uma resolução correta do Realm .<port>: número da porta da sua implantação do MongoDB . Se você omitir este parâmetro, o MongoDB utilizará o número de porta padrão (27017).
Para usar o exemplo de código nesta página, substitua esses espaços reservados por seus próprios valores.
Observação
Ao incorporar <kerberos_principal> em um URI de conexão do MongoDB , você deve codificar percentualmente o caractere @ como %40.
Usando a autenticação GSSAPI em seu aplicativo
Antes de usar o mecanismo de autenticação Kerberos com o driver C++ , você deve configurar seu sistema do MongoDB para usar o Kerberos. Para configurar seu sistema, consulte a documentação do MongoDB Server MongoDB Server Kerberos e conclua as etapas descritas lá.
Observação
Para autenticar com GSSAPI, você deve construir o driver MongoDB C com suporte SASL. Se você estiver criando o driver a partir da origem, poderá habilitar o suporte a SASL com a opção ENABLE_SASL cmake .
Depois de configurar seu sistema, conclua as seguintes etapas para autenticar usando GSSAPI:
Obtenha um ticket de concessão de ticket
Em ambientes Unix, você deve primeiro executar o comando kinit para obter e armazenar em cache um ticket inicial de concessão de ticket. Se você estiver executando um ambiente Windows, poderá pular para a próxima etapa.
O exemplo a seguir usa o comando kinit para obter um ticket de concessão de ticket para o principal mongodbuser@EXAMPLE.COM. Em seguida, ele usa o comando klist para exibir o principal e o ticket no cache de credenciais.
kinit mongodbuser@EXAMPLE.COM mongodbuser@EXAMPLE.COM's Password: klist Credentials cache: FILE:/tmp/krb5cc_1000 Principal: mongodbuser@EXAMPLE.COM Issued Expires Principal Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/mongodbuser@EXAMPLE.COM
Definir as opções de conexão
Em seguida, defina as seguintes opções de conexão:
kerberos_principal: O principal Kerberos para autenticar.authMechanism: Defina como"GSSAPI".authMechanismProperties: Opcional. Por padrão, o MongoDB usamongodbcomo o nome do serviço de autenticação. Para especificar um nome de serviço diferente, defina esta opção como"SERVICE_NAME: <authentication service name>".
Você pode definir essas opções por meio de parâmetros em seu URI de conexão, conforme mostrado no exemplo a seguir:
auto uri = mongocxx::uri("mongodb://<kerberos_principal>@<hostname>:<port>/?" "authMechanism=GSSAPI" "&authMechanismProperties=SERVICE_NAME:<authentication service name>"); auto client = mongocxx::client(uri);
Observação
Você deve substituir o símbolo @ no principal por %40, como mostrado no exemplo anterior.
Documentação da API
Para saber mais sobre como criar um objeto mongocxx::client no driver C++ , consulte a seguinte documentação da API: