Аутентификация Active Directory GitLab: никакие результаты и никакая аутентификация

Я пытаюсь настроить аутентификацию 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, который получил меня настолько далеко, но теперь я вне идей и решений.

7
задан 23 July 2015 в 00:22
1 ответ

Мне удалось решить эту проблему после многих попыток. Несколько примечаний:

  • Убедитесь, что все строки, кроме первой, имеют один пробел для отступа. В первой строке написано «main:» и в ней вообще нет отступа.
  • bind_dn - это не полный путь LDAP для пользователя привязки, а только имя пользователя. В моем случае это (скрытая) база, которая должна быть группой Active Directory или DN, или как там она называется, которая содержит всех пользователей.

Вот последний 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: ''
9
ответ дан 2 December 2019 в 23:32

Теги

Похожие вопросы