Error 500 al intentar enviar a GitLab con autenticación de Active Directory

Error 500 al intentar enviar a GitLab con autenticación de Active Directory

Actualmente utilizamos SubVersion, pero estamos buscando migrar a una solución basada en Git para poder realizar revisiones de código previas a la confirmación. Los requisitos son que el repositorio central de Git esté alojado localmente, tenga una interfaz visual para permitir la gestión de proyectos y utilice autenticación de Active Directory.

Como prueba, instalé GitLab EE en una máquina virtual que ejecuta el servidor Ubuntu 18.04. Configuré la autenticación AD usando la siguiente configuración:

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
 main:
  label: 'MyOrganisation'
  host: '172.16.0.6'
  port: 389
  uid: 'sAMAccountName'
  bind_dn: 'CN=ldapbinduser,CN=Users,DC=myorganisation,DC=com'
  password: 'password' 
  timeout: 30
  active_directory: true
  allow_username_or_mail_login: false
  lowercase_usernames: true
  block_auto_created_users: true
  base: 'OU=Software,OU=Engineering,DC=myorganisation,DC=com'
  group_base: 'OU=Software,OU=Engineering,DC=myorganisation,DC=com'
  admin_group: 'internal software dept'
EOS

Esto ha sido parcialmente exitoso. Aparece una pestaña MiOrganización en la página de inicio de sesión de GitLab y los miembros del grupo de Software pueden iniciar sesión utilizando su inicio de sesión y contraseña de AD, mientras que los que no son miembros no. A los miembros del grupo "Departamento de software interno" no se les asignan automáticamente derechos de administrador, pero está bien porque podemos agregarlos manualmente.

El problema surge al intentar enviar el historial de un repositorio SVN a GitLab o clonar un repositorio. Creé un grupo de software interno en GitLab y le agregué un proyecto TestProject con un archivo readme.txt. En mi PC con Windows 10 instalé Git Credential Manager para Windows. Cuando intento clonar esto en mi PC usando: git clonehttp://gitlab/internal-software/testproject.git Recibo un mensaje de:

fatal: no se puede acceder 'http://gitlab/internal-software/testproject.git/': La URL solicitada devolvió el error: 500 WireShark muestra dos intentos de conexión con un 401: respuesta no autorizada al primero, seguido de un 500: respuesta de error interno del servidor al segundo:

1   local IP    gitlab IP   TCP 66  59710 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
2   gitlab IP   local IP    TCP 66  80 → 59710 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=128
3   local IP    gitlab IP   TCP 54  59710 → 80 [ACK] Seq=1 Ack=1 Win=525568 Len=0
4   local IP    gitlab IP   HTTP    241 GET /internal-software/testproject.git/info/refs?service=git-upload-pack HTTP/1.1
5   gitlab IP   local IP    TCP 60  80 → 59710 [ACK] Seq=1 Ack=188 Win=30336 Len=0
6   gitlab IP   local IP    HTTP    618 HTTP/1.1 401 Unauthorized  (text/plain)
7   local IP    gitlab IP   TCP 54  59710 → 80 [ACK] Seq=188 Ack=565 Win=524800 Len=0
8   local IP    gitlab IP   HTTP    292 GET /internal-software/testproject.git/info/refs?service=git-upload-pack HTTP/1.1 
9   gitlab IP   local IP    TCP 60  80 → 59710 [ACK] Seq=565 Ack=426 Win=31360 Len=0
10  gitlab IP   local IP    TCP 1514    80 → 59710 [ACK] Seq=565 Ack=426 Win=31360 Len=1460 [TCP segment of a reassembled PDU]
11  gitlab IP   local IP    TCP 1514    80 → 59710 [ACK] Seq=2025 Ack=426 Win=31360 Len=1460 [TCP segment of a reassembled PDU]
12  gitlab IP   local IP    HTTP    309 HTTP/1.1 500 Internal Server Error  (text/html)
13  local IP    gitlab IP   TCP 54  59710 → 80 [ACK] Seq=426 Ack=3740 Win=525568 Len=0
14  local IP    gitlab IP   TCP 54  59710 → 80 [RST, ACK] Seq=426 Ack=3740 Win=0 Len=0

El contenido de la respuesta 500 – Error interno del servidor es la página estándar GitLab 500 – “Vaya, algo salió mal por nuestra parte”.

En el servidor, revisé los archivos .log en var/logs/gitlab/gitlab-rails y encontré esto en Production_json.log:

{"method":"GET","path":"/internal-software/testproject/git/info/refs","format":"/","controller":"Proyectos::GitHttpController","action":"info_refs","status":401,"duration":35.81,"view":1.05,"db":9.7,"time":" 2019-09-19T08:37:55.371Z","params":[{"key":"service","value":git-upload-pack"},{"key":"namespage_id","value" :"software-interno"},{"key":"project_id","value":"testproject.git"}],"remote_ip":"172.16.1.46","user_id":null,"username":null ,"ua":git/2.17.0.windows.1","queue_duration":null,"correlation_id":"long_uid"} {"method":"GET","path":"/internal-software/testproject /git/info/refs","formato":"/","controller":"Projects::GitHttpController","action":"info_refs","status":500,"error":"ArgumentError: SE DEBE proporcionar cifrado o método","duration":215.3,"view ":0.0,"db":14.11,"time":"2019-09-19T08:37:55.803Z","params":[{"key":"service","value":git-upload-pack "},{"key":"namespage_id","value":"software-interno"},{"key":"project_id","value":"testproject.git"}],"remote_ip":"172.16 .1.46","user_id":null,"username":null,"ua":git/2.17.0.windows.1","queue_duration":null,"correlation_id":"long_uid"}

Estos parecerían coincidir con las solicitudes y respuestas HTTP anteriores. El primero es el 401 y el segundo es el 500.

El mensaje de error es ArgumentError: SE DEBE proporcionar cifrado o método. Intenté buscar esto en el sitio de GitLab, Stack Overflow, Stack Exchange y algunos motores de búsqueda conocidos, pero solo obtuve resultados aproximados que no coinciden con mi problema.

Respuesta1

La respuesta, proporcionada por el soporte de GitLab, fue que me faltaban las siguientes configuraciones en la configuración:

  encryption: 'plain'
  verify_certificates: true

Con esto en su lugar, pude clonar y empujar. Lo que sí noté fue que a cualquier otra persona que se conectara se le dijo que su cuenta estaba bloqueada hasta que yo la desbloqueé usando una cuenta de administrador.

información relacionada