Overview
El mecanismo de autenticación de la API de Servicios de Seguridad Genéricos (GSSAPI) te permite usar tu nombre principal para autenticarte en un servicio de Kerberos. Solamente se puede utilizar este mecanismo al autenticar en MongoDB Enterprise Advanced.
Marcadores de posición de código
Los ejemplos de código en esta página utilizan los siguientes marcadores de posición:
kerberos_principal: Tu principal de Kerberos. Un nombre de usuario de muestra esmyuser@KERBEROS.EXAMPLE.COM.password: La contraseña del usuario Kerberos. También se puede almacenar la contraseña en un archivokeytabpara evitar exponerla en el código.connection_uri: Su URI de cadena de conexión.
Especificar la autenticación Kerberos (GSSAPI)
Debe usar la gssapi etiqueta de compilación y especificar la compatibilidad con cgo durante la compilación para usar la autenticación Kerberos. La compatibilidadcgo con está habilitada de forma predeterminada, a menos que haya configurado previamente variables de entorno para realizar la compilación cruzada a una plataforma diferente. Para usar la gssapi etiqueta de compilación, compile su código con el siguiente comando:
go build -tags gssapi
El siguiente código muestra cómo puedes definir una estructura Credential para autenticarte en Kerberos y crear un cliente con tus preferencias de autenticación:
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)
Puede omitir una contraseña o el campo PasswordSet en su estructura Credential si almacena las claves de autenticación en archivos keytab. Puedes inicializar un caché de credenciales para autenticar el principal de Kerberos utilizando el binario kinit. Para aprender más sobre el binario kinit, consulta la documentación de Oracle.
El siguiente comando muestra cómo se puede invocar una caché de credenciales para un nombre de usuario de ejemplo:
kinit myuser@KERBEROS.EXAMPLE.COM
También puede autenticarse utilizando una URI de cadena de conexión, especificando su entidad principal Kerberos codificada en URL, contraseña hostname y, la dirección de red de su servidor MongoDB:
uri := "mongodb://<kerberos_principal>:<password>@<hostname>/?authMechanism=GSSAPI"
Configura los campos personalizados SERVICE_NAME y SERVICE_REALM
Puedes especificar más propiedades con tu mecanismo de autenticación usando el campo AuthMechanismProperties en la estructura Credential. El nombre de servicio por defecto para Kerberos es "MongoDB". El siguiente código muestra cómo puede establecer valores personalizados para los campos SERVICE_NAME y SERVICE_REALM al definir una estructura 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 más propiedades, consulta la entrada del manual del servidor sobre propiedades de autenticación.
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos tratados en esta página, consulta la siguiente documentación de la API: