我已经安装了 Gitlabs 社区版 v7.6.2,并尝试使用 FreeIPA 服务器作为其用户管理的 ldap 解决方案。基本上它看起来工作正常,我设法使用我的 ldap 服务器提供的帐户登录。但是,当我登录时,我卡在了用户编辑页面上。在此页面上,我无法更改电子邮件,但看起来 Gitlabs 正在期待适当替换其自动生成的电子邮件。
我已经使用邮件地址 bob@testdomain.com 在 FreeIPA 上创建并称为 bob 的用户。
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
有谁知道如何解决这个问题?非常感激!