2015-02-03 6 views
2

Gitlabs 커뮤니티 에디션 v7.6.2를 설치했으며 사용자 관리를위한 ldap 솔루션으로 FreeIPA 서버를 사용하려고합니다. 기본적으로 잘 작동하고있는 것처럼 보이고 내 LDAP 서버에서 제공하는 계정으로 로그인 할 수 있습니다. 그러나 내가 로그인 할 때 나는 사용자 편집 페이지에 달라 붙는다. 이 페이지에서 이메일을 변경할 수는 없지만 Gitlabs는 자동 생성 된 이메일을 적절히 대체 할 것으로 예상합니다.FreeIPA 서버에 대한 Gitlabs LDAP 로그인이 설정된 이메일 루프에 걸렸습니다

메일 주소가 [email protected] 인 FreeIPA에서 bob을 만들고 사용했습니다.

의 ldapsearch -x -h localhost를 UID =이 바인드 사용자없이 내 LDAP 디렉토리 얘기

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: [email protected] 
krbPrincipalName: [email protected] 
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을 밥 : 나는 경우

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' 

이 시점에서 일종의 로그인을 시도하십시오. 그것은 밥에 대한 암호를 받아들입니다. 그러나 일반적인 방문 페이지를 보여주는 대신 프로필 설정 페이지가 매우 모호한 메시지와 함께 표시됩니다.

ambiguous email dialog

그래서 나는 이메일 주소,이 대화 상자에서 완전히 변하지 않는 유일한 필드를 변경해야합니다. 나는 이것이 Gitlab이 ldap에 의존하여 메일 주소를 제공하기 때문이라고 가정합니다. 내 ldap은 ldapsearch 명령에 따라이 필드를 제공하지만 Gitlab은이 문제를 해결할 수없는 것 같습니다. 이 페이지에서 수행하는 모든 링크는이 페이지로 리디렉션됩니다. 그래서 본질적으로 저는 벽돌을 만들었습니다.

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

사람이 어떻게이 문제를 해결하려면 어떤 생각을 가지고 있습니까 :

이 내 /var/log/gitlab/gitlab-rails/application.log에 완료하려면? 매우 감사! FreeIPA -

답변

3
는 'CN = 계정, DC = TESTDOMAIN, DC = COM'

내가 gitlab가의 compat 트리를 통해 반환 된 항목에 의해 혼동됩니다 생각에 기본 DN (gitlab의 발언에서 'ldap_base')을 변경

RFC2307 스키마를 통해 사용자와 그룹을 노출 할 수 있습니다. $ SUFFIX ('dc = testdomain, dc = com')을 사용하면 primary 및 compat 항목이 모두 일치하고 gitlab은 먼저 반환되는 항목 (일반적으로 compat 트리 항목)을 선택합니다. Compat 항목은 이전 UNIX 클라이언트 (nss_ldap, Solaris 등)의 ID 매핑 용이므로 RFC2307 속성 만 있고 메일 속성은 없습니다.

또한 인증 된 바인드를 사용하고 있는지 확인하십시오. FreeIPA 4.x는 대부분의 특성에 대해 익명 바인딩에 대한 정보 유출을 방지하기 때문에 '메일'은 인증 된 바인딩에만 액세스 할 수있는 특성 중 하나입니다.

+0

좋습니다. 이것은 내 문제를 해결! – Trefex

+0

네, 그게 완전히 해결책입니다! 감사! –

+0

마침내! 정말 고마워. –