Beliebt

500 Fehler beim Versuch, mit Active Directory-Authentifizierung auf GitLab zu pushen - Active Directory, Gitlab, http-status-code-500

Wir verwenden derzeit SubVersion, suchen aber nachMigrieren Sie zu einer Git-basierten Lösung, um Codeüberprüfungen vor dem Festschreiben durchführen zu können. Voraussetzung ist, dass das zentrale Git-Repository lokal gehostet wird, über ein visuelles Front-End verfügt, mit dem Projekte verwaltet werden können, und die Active Directory-Authentifizierung verwendet wird.

Als Testversion habe ich GitLab EE auf einer virtuellen Maschine mit Ubuntu Server 18.04 installiert. Ich habe die AD-Authentifizierung mit der folgenden Konfiguration eingerichtet:

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

Dies war teilweise erfolgreich. Auf der GitLab-Anmeldeseite wird eine Registerkarte "MyOrganisation" angezeigt. Mitglieder der Softwaregruppe können sich mit ihrer AD-Anmeldung und ihrem Kennwort anmelden, Nichtmitglieder hingegen nicht. Mitgliedern der Gruppe "Internal Software Dept" werden nicht automatisch Administratorrechte zugewiesen. Dies ist jedoch in Ordnung, da wir sie manuell hinzufügen können.

Das Problem tritt beim Versuch auf, die Historie zu pusheneines SVN-Repos in GitLab, oder klonen Sie ein Repository. Ich habe eine interne Softwaregruppe in GitLab erstellt und ein TestProject-Projekt mit einer readme.txt-Datei hinzugefĂĽgt. Auf meinem Windows 10 PC habe ich den Git Credential Manager fĂĽr Windows installiert. Wenn ich versuche, dies mit folgendem Befehl auf meinen PC zu klonen: Git-Klon http://gitlab/internal-software/testproject.git Ich erhalte eine Nachricht von:

tödlich: Zugriff nicht möglich "http://gitlab/internal-software/testproject.git/": Die angeforderte URL hat den Fehler 500 zurückgegeben WireShark zeigt zwei Verbindungsversuche mit einer Antwort von 401 - Unauthorized auf die erste, gefolgt von einer Antwort von 500 - Internal Server Error auf die zweite:

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

Der Inhalt der 500 - Internal Server Error-Antwort ist das Standard-GitLab 500 - „Whoops, auf unserer End-Seite ist ein Fehler aufgetreten“.

Auf dem Server habe ich die .log-Dateien in var / logs / gitlab / gitlab-rails durchsucht und Folgendes in production_json.log gefunden:

{"method": "GET", "path": "/ internal-software / testproject / git / info / refs", "format": "/"," controller ":" Projekte ::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": "internal-software"}, {" 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", "format": "/"," controller ":" Projekte ::GitHttpController "," action ":" info_refs "," status ": 500," error ":" ArgumentError: VerschlĂĽsselung oder Methode muss sein Vorausgesetzt "," Dauer ": 215,3," Ansicht ": 0,0," DB ": 14,11," Zeit ":" 2019-09-19T08: 37: 55.803Z "," Parameter ": [{" SchlĂĽssel ":" Dienst "," value ": git-upload-pack"}, {"key": "namespage_id", "value": "internal-software"}, {"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 "}

Diese scheinen mit den obigen HTTP-Anforderungen und -Antworten ĂĽbereinzustimmen. Der erste ist der 401 und der zweite ist der 500.

Die Fehlermeldung lautet ArgumentError: Verschlüsselung oder Methode MUSS angegeben werden Ich habe versucht, auf der GitLab-Site, in Stack Overflow, in Stack Exchange und in einigen bekannten Suchmaschinen danach zu suchen, erhalte jedoch nur ungefähre Ergebnisse, die nicht zu meinem Problem passen.

Antworten:

1 fĂĽr Antwort â„– 1

Die Antwort laut Support von GitLab war, dass mir die folgenden Einstellungen in der Konfiguration fehlten:

  encryption: "plain"
verify_certificates: true

Mit diesen konnte ich klonen und pushen. Was mir aufgefallen ist, ist, dass allen anderen Personen, die eine Verbindung herstellen, mitgeteilt wurde, dass ihr Konto gesperrt wurde, bis ich sie mit einem Administratorkonto entsperrt habe.