GitLab Active Directory 인증 : 결과 및 인증 없음


8

GitLab을 사용하여 LDAP 인증을 설정하려고합니다 (VM의 Ubuntu 14.04 amd64에 설치된 버전 7.12.2, Omnibus 설정). 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 변수에있는 username : "johnsmith@example.com"(사용자 이름을 기반으로하는 이메일), "John Smith"(이름) 및 "johnsmith"(username)에 대해 시도했습니다. 결과는 항상 같습니다. 내 비밀번호에 @ 기호가 있습니다. 탈출해야하는지, 어떻게해야할지 모르겠습니다.

로그는 이것을 보여줍니다 :

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

그러나 우분투 VM (따라서 동일한 환경)에서 ldapsearch를 사용하면 많은 결과가 나타납니다.

ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn

흥미롭게도 결과의 DN은 다음과 같습니다.

dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***

즉, 추가 OU가 있습니다. 또한 ldapsearch 명령에 -s sub하위 그룹을 검색한다는 의미가 있습니다. LDAP 또는 Active Directory의 기능에 익숙하지 않습니다.

그래서 나는 내 기지에 뭔가 빠져 있다고 생각하지만 확실하지 않습니다. 사용자 필터에 문제가있을 수도 있습니다. 나는 필요한 구글링을 해왔는데, 지금까지 저를 데려 왔지만 이제는 아이디어와 해결책이 없습니다.


1
에 대한 항목 base이 약간 짧아 보입니다. ldapsearch 결과의 전체 경로 (모든 OU 포함)를 넣으면 어떻게됩니까?
etagenklo

@etagenklo : 맞습니다. 다른 변경 작업을 수행 할 수있었습니다. 후손에 대한 답변으로 게시하겠습니다.
siride

이 답변이 도움이 될 수 있습니다 : stackoverflow.com/a/54462889/6290553
Raktim Biswas

답변:


11

여러 번의 시도 끝에이 문제를 해결할 수있었습니다. 몇 가지 참고 사항 :

  • 첫 번째 줄을 제외한 모든 줄에는 들여 쓰기를위한 단일 공간이 있어야합니다. 첫 번째 줄은 "main :"이라고 말하고 전혀 들여 쓰기가없는 줄입니다.
  • bind_dn은 바인드 사용자의 전체 LDAP 경로가 아니라 사용자 이름입니다. 제 경우에는 "xxx@example.com"입니다.
  • 기본은 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: ''

1
너무 많은 +1! 이것은 나를 위해 일하고있는 전체 stackexchange 네트워크에서 유일한 솔루션입니다!
Noir
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.