Gitlabs ldap войти в систему на сервере FreeIPA, застрявшем в установленном цикле электронной почты

Я установил Gitlabs Community Edition v7.6.2 и пытаюсь использовать сервер FreeIPA в качестве решения ldap для управления пользователями. Похоже, что все работает нормально, и мне удается войти в систему с учетной записью, предоставленной моим сервером ldap. Однако, когда я вхожу в систему, я застреваю на странице редактирования пользователя. На этой странице я не могу изменить электронную почту, но похоже, что Gitlabs ожидает правильной замены своей автоматически сгенерированной электронной почты.

Я создал и назвал пользователя bob на FreeIPA с почтовым адресом bob@testdomain.com.

ldapsearch -x -h localhost uid = bob

dn: uid=bob,cn=users,cn=accounts,dc=testdomain,dc=com
displayName: bob bob
cn: bob bob
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
objectClass: inetuser
objectClass: posixaccount
objectClass: krbprincipalaux
objectClass: krbticketpolicyaux
objectClass: ipaobject
objectClass: ipasshuser
objectClass: ipaSshGroupOfPubKeys
objectClass: mepOriginEntry
loginShell: /bin/sh
sn: bob
gecos: bob bob
homeDirectory: /home/bob
krbPwdPolicyReference: cn=global_policy,cn=TESTDOMAIN.COM,cn=kerberos,dc=testdomain,dc=com
mail: bob@testdomain.com 
krbPrincipalName: bob@TESTDOMAIN.COM
givenName: bob
uid: bob
initials: bb
ipaUniqueID: d7c3d5bc-abb3-11e4-a1d6-080027079e3d
uidNumber: 497600001
gidNumber: 497600001
krbPasswordExpiration: 20150203144923Z
krbLastPwdChange: 20150203144923Z
krbExtraData:: AALz39BUcm9vdC9hZG1pbkBBTUJBUkkuQVBBQ0hFLk9SRwA=
mepManagedEntry: cn=bob,cn=groups,cn=accounts,dc=testdomain,dc=com

И отредактировал /etc/gitlab/gitlab.rb, чтобы поговорить с моим каталогом ldap без привязки пользователя:

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_host'] = 'ldap.testdomain.com'
gitlab_rails['ldap_port'] = 389
gitlab_rails['ldap_uid'] = 'uid'
gitlab_rails['ldap_method'] = 'plain'
gitlab_rails['ldap_allow_username_or_email_login'] = true
gitlab_rails['ldap_base'] = 'dc=testdomain,dc=com'

Если я попытаюсь войти на этом этапе, это отчасти работает. Он принимает пароль для Боба. Однако вместо отображения обычной целевой страницы страница настроек профиля отображается с очень неоднозначным сообщением.

неоднозначный диалог по электронной почте

Поэтому я должен изменить адрес электронной почты, единственное поле, которое нельзя изменить в этом диалоговом окне. Я предполагаю, что это связано с тем, что Gitlab полагается на ldap для предоставления почтового адреса. Мой ldap предоставляет это поле в соответствии с командой ldapsearch, однако Gitlab, похоже, не в состоянии это понять. Каждая ссылка, по которой я следую на этой странице, будет перенаправлять на эту страницу. По сути, я создал кирпич.

Для завершения это в моем /var/log/gitlab/gitlab-rails/application.log:

# Logfile created on 2015-02-03 10:53:07 +0000 by logger.rb/44203
February 03, 2015 10:53: User "Administrator" (admin@example.com) was created
February 03, 2015 15:22: User "bob bob" (temp-email-for-oauth-bob@gitlab.localhost) was created
February 03, 2015 15:22: (OAuth) saving user temp-email-for-oauth-bob@gitlab.localhost from login with extern_uid => uid=bob,cn=users,cn=compat,dc=testdomain,dc=com

У кого-нибудь есть идеи как это исправить? Очень признателен!

1 ответ

Решение

Измените ваш базовый dn (ldap_base в gitlab говорят) на cn=account,dc=testdomain,dc=com'

Я думаю, что gitlab смущает запись, возвращаемая через дерево компатов - FreeIPA поддерживает выставление пользователей и групп через схему RFC2307. Если вы используете $SUFFIX ('dc=testdomain,dc=com'), то и первичные записи, и записи для компатов будут сопоставлены, и gitlab выберет ту, которая возвращается первой, обычно это запись дерева компата. Запись Compat предназначена для отображения идентификаторов для старых клиентов UNIX (nss_ldap, Solaris и т. П.), Поэтому она имеет только атрибуты RFC2307 и не имеет атрибута mail.

Также убедитесь, что вы используете аутентифицированную привязку. С FreeIPA 4.x, предотвращающим раскрытие информации по анонимным привязкам для большинства атрибутов, "почта" является одним из атрибутов, которые доступны только для аутентифицированных привязок.

Другие вопросы по тегам