Estou tentando configurar a autenticação LDAP com o GitLab (versão 7.12.2 instalada no Ubuntu 14.04 amd64 em uma VM, configuração Omnibus). Eu editei meu arquivo gitlab.rb para parecer com o seguinte:
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
Isso resulta no temido "Não foi possível autorizá-lo do Ldapmain porque" Credenciais inválidas "." erro. Eu tentei, para o nome de usuário (na variável bind_dn): "[email protected]" (email baseado no nome de usuário), "John Smith" (nome completo) e "johnsmith" (nome de usuário). Os resultados são sempre os mesmos. Minha senha tem um @ -sign nela. Não tenho certeza se preciso fugir disso ou como.
Logs mostram isso:
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)
E gitlab-rake gitlab:ldap:check
mostra isso:
Checking LDAP ...
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain
Checking LDAP ... Finished
No entanto, quando eu uso o ldapsearch da VM do Ubuntu (para o mesmo ambiente), eu obtenho vários resultados:
ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn
Curiosamente, os resultados do DN nos resultados são assim:
dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***
Ou seja, há uma UO extra lá. Também vejo que o comando ldapsearch tem -s sub
, o que, acredito, significa pesquisar subgrupos. Não estou muito familiarizado com os detalhes do LDAP ou do Active Directory.
Então eu acredito que estou perdendo alguma coisa na minha base, mas não tenho certeza do que. Também pode ser um problema com o filtro do usuário. Eu fiz o necessário Google, o que me levou até aqui, mas agora estou sem ideias e soluções.