Integración de GitLab con LDAP/ADDS
Para habilitar Autenticación por LDAP y/o AD debe asegurarse de lo siguiente:
- Tener una cuenta de servicio que pueda leer el Árbol de LDAP
- Si tiene un controlador de LDAP Samba tendrá que deshabilitar la autenticación fuerte con el siguiente parámetro en la sección global
SOLO RECOMENDADO PARA TESTING O AMBIENTES SEGUROS
- Para deshabilitar la "strong auth" añada el siguiente parámetro (sección global):
ldap server require strong auth = no
Es recomendable deshabilitar el login interactivo para esta cuenta en
el controlador de LDAP o Active Directory, ya que es una cuenta de servicio.
Cree una OU y Grupo de Seguridad para los Usuarios de LDAP/AD que añadirá
a GitLAB
Una vez hecho eso puede modificar el archivo de configuración gitlab.rb (en /etc/gitlab) descomentando los siguientes parámetros.
Para revisar si el usuario puede leer el árbol de LDAP puede usar el siguiente comando en una consola shell
$ ldapsearch -x -LLL -h ldapserver.yourdomain.com -D "gitlabldap" -w password -b "dc=yourdomain,dc=com" -s sub "(&(memberOf=CN=gitlab,OU=gitlab,DC=yourdomain,DC=com))" sAMAccount
### LDAP Settings
###! Docs: https://docs.gitlab.com/omnibus/settings/ldap.html
###! **Be careful not to break the indentation in the ldap_servers block. It is
###! in yaml format and the spaces must be retained. Using tabs will not work.**
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 'ldapserver'
port: 389
uid: 'sAMAccountName'
bind_dn: 'CN=gitlabldap,OU=oucontainername,DC=yourdomain,DC=com'
password: 'yourpassword'
encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
verify_certificates: true
smartcard_auth: false
active_directory: false
allow_username_or_email_login: true
lowercase_usernames: true
block_auto_created_users: false
base: 'DC=yourdomain,DC=com'
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
user_filter: '(&(memberOf=CN=gitlab,OU=gitlab,DC=yourdomain,DC=com))'
# ## EE only
# group_base: ''
# admin_group: ''
# sync_ssh_keys: false
#
# secondary: # 'secondary' is the GitLab 'provider ID' of second LDAP server
# label: 'LDAP'
# host: '_your_ldap_server'
# port: 389
# uid: 'sAMAccountName'
# bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
# password: '_the_password_of_the_bind_user'
# encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
# verify_certificates: true
# smartcard_auth: false
# active_directory: true
# allow_username_or_email_login: false
# lowercase_usernames: false
# block_auto_created_users: false
# base: ''
# user_filter: ''
# ## EE only
# group_base: ''
# admin_group: ''
# sync_ssh_keys: false
EOS
Recomiendo configurar la flag de “block_auto_created_users” en falso así
no tiene que crear manualmente cada usuario que añada al LDAP/AD en el
grupo de Gitlab.
Luego de guardar y cerrar puede ejecutar lo siguiente en una terminal shell:
$ gitlab-ctl reconfigure && gitlab-rake gitlab:ldap:check
La salida debería ser la siguiente:
¡Ya debería poder iniciar sesión en su GitLAB CE con credenciales de LDAP / Active Directory!