Overview
El mecanismo de autenticación de la API de Servicios de Seguridad Genéricos (GSSAPI) le permite usar su nombre principal para autenticarse en un servicio Kerberos. Este mecanismo solo se puede usar al autenticarse en MongoDB Enterprise Advanced.
Marcadores de posición de código
Los ejemplos de código de 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 cadena de conexión URI.
Especificar la autenticación Kerberos (GSSAPI)
Debes utilizar el gssapi La etiqueta de compilación y la especificación de la compatibilidad con cgo durante la compilación para usar la autenticación Kerberos. cgo La compatibilidad con está habilitada por defecto, a menos que haya configurado previamente las variables de entorno para la compilación cruzada en 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 puede definir una estructura Credential para autenticarse en Kerberos y crear un cliente con sus 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 PasswordSet campo en su Credential estructura si almacena las claves de autenticación en keytab archivos. Puede inicializar una caché de credenciales para autenticar el principal Kerberos mediante el kinit binario. Para obtener más información sobre el kinit binario, consulte la documentación de Oracle.
El siguiente comando muestra cómo puedes invocar un caché de credenciales para un nombre de usuario de muestra:
kinit myuser@KERBEROS.EXAMPLE.COM
También puede autenticarse utilizando una cadena de conexión URI, especificando su principal Kerberos codificado en URL, contraseña hostname y, la dirección de red de su servidor MongoDB:
uri := "mongodb://<kerberos_principal>:<password>@<hostname>/?authMechanism=GSSAPI"
Establecer campos SERVICE_NAME y SERVICE_REALM personalizados
Puede especificar más propiedades con su mecanismo de autenticación mediante el campo AuthMechanismProperties en la estructura Credential. El nombre de servicio predeterminado para Kerberos es "mongodb". El siguiente código muestra cómo 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 conocer más propiedades, consulte la entrada del manual del servidor sobre propiedades de autenticación.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos analizados en esta página, consulte la siguiente documentación de API: