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)
Và gitlab-rake gitlab:ldap:check
cho 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.
base
mộ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)?