Otentikasi Direktori Aktif GitLab: tidak ada hasil dan tidak ada otentikasi


8

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): "johnsmith@example.com" (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:checkmenunjukkan 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.


1
Entri Anda baseterlihat agak pendek. Apa yang terjadi ketika Anda meletakkan path lengkap dari hasil ldapsearch Anda di sana (termasuk semua OU)?
etagenklo

@etagenklo: Anda benar. Saya membuat beberapa perubahan lain dan membuatnya berfungsi. Saya akan memposting sebagai jawaban untuk anak cucu.
siride

jawaban ini mungkin bermanfaat: stackoverflow.com/a/54462889/6290553
Raktim Biswas

Jawaban:


11

Saya dapat menyelesaikan ini setelah berbagai percobaan. Beberapa catatan:

  • Pastikan semua baris kecuali yang pertama memiliki satu ruang untuk indentasi. Baris pertama adalah yang bertuliskan "main:" dan tidak memiliki indentasi sama sekali.
  • Bind_dn bukan path LDAP lengkap untuk pengguna bind, tetapi hanya nama pengguna. Dalam kasus saya ini "xxx@example.com".
  • Basis harus berupa grup Direktori Aktif atau DN atau apa pun namanya yang berisi semua pengguna.

Inilah YAML terakhir:

main: # 'main' is the GitLab 'provider ID' of this LDAP server
 label: 'Active Directory'
 host: 'ad-server.example.com'
 port: 389
 uid: 'sAMAccountName'
 method: 'plain' # "tls" or "ssl" or "plain"
 bind_dn: 'user@example.com'
 password: 'password'
 active_directory: true
 allow_username_or_email_login: false
 block_auto_created_users: false
 base: 'OU=ABC,OU=XYZ,DC=example,DC=com'
 user_filter: ''

1
sangat banyak +1! Ini adalah satu-satunya solusi di seluruh jaringan stackexchange yang bekerja untuk saya!
Noir
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.