Xác thực GitLab Active Directory: không có kết quả và không có xác thực


8

Tôi đang cố gắng thiết lập xác thực LDAP bằng GitLab (phiên bản 7.12.2 được cài đặt trên Ubuntu 14.04 amd64 trên máy ảo, Omnibus đã thiết lập). Tôi đã chỉnh sửa tệp gitlab.rb của mình để trông giống như sau:

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

Điều này dẫn đến kết quả đáng sợ "Không thể ủy quyền cho bạn từ Ldapmain vì" Thông tin không hợp lệ "." lỗi. Tôi đã thử, đối với tên người dùng (trong biến bind_dn): "johnsmith@example.com" (email dựa trên tên người dùng), "John Smith" (tên đầy đủ) và "johnsmith" (tên người dùng). Kết quả luôn giống nhau. Mật khẩu của tôi không có @ -ign trong đó. Tôi không chắc là tôi cần phải thoát nó hay không.

Nhật ký cho thấy điều này:

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)

gitlab-rake gitlab:ldap:checkcho thấy điều này:

Checking LDAP ...

LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain

Checking LDAP ... Finished

Tuy nhiên, khi tôi sử dụng ldapsearch từ Ubuntu VM (cùng một môi trường), tôi nhận được rất nhiều kết quả:

ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn

Thật kỳ lạ, các kết quả của DN trông như thế này:

dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***

Đó là, có thêm một OU trong đó. Tôi cũng thấy rằng lệnh ldapsearch có -s sub, mà tôi tin là có nghĩa là tìm kiếm các nhóm con. Tôi không quá quen thuộc với các phần mở rộng của LDAP hoặc Active Directory.

Vì vậy, tôi tin rằng tôi đang thiếu một cái gì đó trong căn cứ của mình, nhưng tôi không chắc chắn điều gì. Nó cũng có thể là một vấn đề với bộ lọc người dùng. Tôi đã thực hiện Googling cần thiết, đưa tôi đến nay, nhưng bây giờ tôi đã hết ý tưởng và giải pháp.


1
Mục nhập của bạn cho basemột chút ngắn. Điều gì xảy ra khi bạn đặt đường dẫn đầy đủ từ kết quả tìm kiếm ldaps của bạn ở đó (bao gồm tất cả các OU)?
etagenklo

@etagenklo: bạn đúng rồi. Tôi đã thực hiện một số thay đổi khác và có thể làm cho nó hoạt động. Tôi sẽ đăng như một câu trả lời cho hậu thế.
siride

câu trả lời này có thể hữu ích: stackoverflow.com/a/54462889/6290553
Raktim Biswas

Câu trả lời:


11

Tôi đã có thể giải quyết điều này sau nhiều lần thử khác nhau. Một vài lưu ý:

  • Đảm bảo rằng tất cả các dòng ngoại trừ dòng đầu tiên có một khoảng trống để thụt lề. Dòng đầu tiên là dòng có nội dung "chính:" và không có vết lõm nào cả.
  • Bind_dn không phải là đường dẫn LDAP đầy đủ cho người dùng liên kết, mà chỉ là tên người dùng. Trong trường hợp của tôi, đó là "xxx@example.com".
  • Cơ sở cần phải là nhóm Active Directory hoặc DN hoặc bất cứ thứ gì nó được gọi có chứa tất cả người dùng.

Đây là YAML cuối cùng:

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
thật nhiều +1! Đây là giải pháp duy nhất trên toàn bộ mạng stackexchange đang hoạt động với tôi!
Noir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.