Saya mencoba mengatur otentikasi LDAP dengan GitLab (versi 7.12.2 diinstal pada Ubuntu 14.04 amd64 pada VM, pengaturan Omnibus). Saya telah mengedit file gitlab.rb saya agar terlihat seperti berikut:
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
Hal ini menghasilkan "Tidak dapat mengotorisasi Anda dari Ldapmain karena" kredensial tidak valid "." kesalahan. Saya sudah mencoba, untuk nama pengguna (dalam variabel bind_dn): "[email protected]" (email berdasarkan nama pengguna), "John Smith" (nama lengkap) dan "johnsmith" (nama pengguna). Hasilnya selalu sama. Kata sandi saya memang memiliki @ -sign di dalamnya. Saya tidak yakin apakah saya perlu menghindarinya, atau bagaimana.
Log menunjukkan ini:
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)
Dan gitlab-rake gitlab:ldap:check
menunjukkan ini:
Checking LDAP ...
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain
Checking LDAP ... Finished
Namun, ketika saya menggunakan ldapsearch dari Ubuntu VM (lingkungan yang sama), saya mendapatkan banyak hasil:
ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn
Anehnya, DN dalam hasil terlihat seperti ini:
dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***
Artinya, ada OU tambahan di sana. Saya juga melihat bahwa perintah ldapsearch telah -s sub
, yang saya percaya berarti mencari subkelompok. Saya tidak terbiasa dengan seluk beluk LDAP atau Active Directory.
Jadi saya yakin saya kehilangan sesuatu di markas saya, tetapi saya tidak yakin apa. Mungkin juga ada masalah dengan filter pengguna. Saya telah melakukan Googling yang diperlukan, yang membuat saya sejauh ini, tetapi sekarang saya kehabisan ide dan solusi.
base
terlihat agak pendek. Apa yang terjadi ketika Anda meletakkan path lengkap dari hasil ldapsearch Anda di sana (termasuk semua OU)?Jawaban:
Saya dapat menyelesaikan ini setelah berbagai percobaan. Beberapa catatan:
Inilah YAML terakhir:
sumber