Я пытаюсь настроить аутентификацию LDAP с GitLab (версия 7.12.2, установленная на Ubuntu 14.04 amd64 на VM, настроенный Автобус). Я отредактировал свой gitlab.rb файл для сходства со следующим:
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
Это приводит к страшному, "Не мог авторизовать Вас от Ldapmain потому что "Недопустимые учетные данные"". ошибка. Я попробовал для имени пользователя (в bind_dn переменной): "johnsmith@example.com" (электронная почта на основе имени пользователя), "John Smith" (полное имя) и "johnsmith" (имя пользователя). Результатами всегда является то же. Мой пароль действительно имеет - подписываются в нем. Я не уверен, должен ли я выйти из него, или как.
Журналы показывают это:
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:check
шоу это:
Checking LDAP ...
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain
Checking LDAP ... Finished
Однако, когда я использую ldapsearch от VM Ubuntu (так та же среда), я действительно получаю набор результатов:
ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn
Любопытно, DN's в результатах похожи на это:
dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***
Таким образом, там существует дополнительный OU. Я также вижу, что команда ldapsearch имеет -s sub
, который я верю средствам искать подгруппы. Я не суперзнаком с входами и выходами LDAP или Active Directory.
Таким образом, я полагаю, что пропускаю что-то в своей базе, но я не уверен что. Это может также быть проблема с пользовательским фильтром. Я сделал необходимый поиск с помощью Google, который получил меня настолько далеко, но теперь я вне идей и решений.
Мне удалось решить эту проблему после многих попыток. Несколько примечаний:
Вот последний YAML:
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: ''