Ich versuche, die LDAP-Authentifizierung mit GitLab einzurichten (Version 7.12.2 unter Ubuntu 14.04 amd64 auf einer VM installiert, Omnibus eingerichtet). Ich habe meine Datei gitlab.rb so bearbeitet, dass sie wie folgt aussieht:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '********'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'CN=********,OU=********,OU=********,DC=********,DC=***'
password: '********'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'DC=********,DC=***'
user_filter: ''
EOS
Dies führt zu dem gefürchteten "Konnte Sie nicht von Ldapmain autorisieren, weil" Ungültige Anmeldeinformationen "." Error. Ich habe für den Benutzernamen (in der Variablen bind_dn) versucht: "[email protected]" (E-Mail basierend auf dem Benutzernamen), "John Smith" (vollständiger Name) und "johnsmith" (Benutzername). Die Ergebnisse sind immer gleich. Mein Passwort enthält ein @ -Zeichen. Ich bin mir nicht sicher, ob ich entkommen muss oder wie.
Protokolle zeigen dies:
Started POST "/users/auth/ldapmain/callback" for 127.0.0.1 at 2015-07-22 17:15:01 -0400
Processing by OmniauthCallbacksController#failure as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "username"=>"********", "password"=>"[FILTERED]"}
Redirected to http://192.168.56.102/users/sign_in
Completed 302 Found in 14ms (ActiveRecord: 3.6ms)
Started GET "/users/sign_in" for 127.0.0.1 at 2015-07-22 17:15:01 -0400
Processing by SessionsController#new as HTML
Completed 200 OK in 20ms (Views: 8.3ms | ActiveRecord: 2.9ms)
Und gitlab-rake gitlab:ldap:check
zeigt dies:
Checking LDAP ...
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain
Checking LDAP ... Finished
Wenn ich jedoch ldapsearch von der Ubuntu-VM (also derselben Umgebung) verwende, erhalte ich eine Reihe von Ergebnissen:
ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn
Seltsamerweise sehen die DNs in den Ergebnissen folgendermaßen aus:
dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***
Das heißt, es gibt dort eine zusätzliche Organisationseinheit. Ich sehe auch, dass der Befehl ldapsearch hat -s sub
, was meiner Meinung nach bedeutet, Untergruppen zu durchsuchen. Ich bin mit den Vor- und Nachteilen von LDAP oder Active Directory nicht besonders vertraut.
Ich glaube, ich vermisse etwas in meiner Basis, bin mir aber nicht sicher, was. Dies kann auch ein Problem mit dem Benutzerfilter sein. Ich habe das erforderliche Googeln durchgeführt, was mich so weit gebracht hat, aber jetzt habe ich keine Ideen und Lösungen mehr.
base
sieht etwas kurz aus. Was passiert, wenn Sie dort den vollständigen Pfad Ihres ldapsearch-Ergebnisses (einschließlich aller Organisationseinheiten) eingeben?Antworten:
Ich konnte dies nach vielen verschiedenen Versuchen lösen. Ein paar Anmerkungen:
Hier ist die letzte YAML:
quelle