Como determinar os valores para uma ligação LDAP a um DC do Windows Server 2012? [Gitlab Omnibus 7.0.0; ldap_bind: Credenciais inválidas (49)]

1

EDITAR: Esta questão recebeu muitos pontos de vista, e eu nunca voltei e forneceu uma solução precisa, passo-a-passo. Então voltei 18 meses depois e fiz isso. Essa solução funciona para ligações simples, e a questão original é colocada no contexto de tentar fazer com que uma instalação do Gitlab Omnibus seja vinculada ao servidor LDAP, mas deve funcionar no caso de qualquer ligação LDAP simples. Veja minha resposta aceita para as etapas exatas que fiz para produzir uma solução. Aqui estão os detalhes da minha versão do Gitlab (para quem tem esse problema com o Gitlab):

  • GitLab 7.0.0

  • GitLab Shell 1.9.6

  • API do GitLab v3

  • Ruby 2.1.1p76

  • Rails 4.1.1

Publicação original: Tenho tentado por quase seis horas fazer com que minha implantação do Gitlab seja autenticada por meio do LDAP do Active Directory do Windows Server 2012 Essentials.

Estou executando o Ubuntu 14.04 para o meu servidor Gitlab. Já está conectado ao controlador de domínio via SSSD.

O próprio Gitlab usa as configurações LDAP no arquivo de configuração gitlab.rd da seguinte forma:

# These settings are documented in more detail at
# https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example#L118
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_host'] = 'hostname of LDAP server'
gitlab_rails['ldap_port'] = 389
gitlab_rails['ldap_uid'] = 'sAMAccountName'
gitlab_rails['ldap_method'] = 'plain' # 'ssl' or 'plain'
gitlab_rails['ldap_bind_dn'] = 'CN=query user,CN=Users,DC=mycorp,DC=com'
gitlab_rails['ldap_password'] = 'query user password'
gitlab_rails['ldap_allow_username_or_email_login'] = true
gitlab_rails['ldap_base'] = 'DC=mycorp,DC=com'

Eu posso consultar o servidor, mas não importa quais configurações eu escolher, eu sempre recebo a mesma mensagem:

"Invalid Credentials"

Eu tentei consultar manualmente o DC usando o ldapsearch e a mesma mensagem de erro:

"ldap_bind: invalid credentials (49)

Eu já criei o usuário que estou usando para vincular a seção Usuários do Active Directory no Gerenciador de Servidores do Windows Server 2012.

Eu tentei todas as combinações de OU = Usuários e CN = Usuários e outros usuários, verifiquei se todos os campos de endereço de e-mail de todos os usuários do AD estavam preenchidos, mas não consegui uma resposta adequada.

Não há uma maneira fácil de retornar todas as informações Bind_dn e Base para um objeto do Active Directory? Isso está ficando muito frustrante.

Não importa onde eu esteja na internet, todas as informações pertencem a versões antigas do Windows (ldapsearch, etc ...). Eu sou muito novo neste material de Sistemas (isto é no meu primeiro trabalho de estágio de verão).

Aqui está um exemplo das configurações atuais que estou usando:

gitlab_rails['ldap_bind_dn'] = 'CN=Gitlab LDAP,OU=Users,DC=servername,DC=local'
gitlab_rails['ldap_base'] = 'OU=Users,DC=servername,DC=local'

E um exemplo correspondente de como eu tenho tentado usar o ldapsearch para encontrar as configurações de vinculação adequadas para meu Windows AD DS:

ldapsearch -b "ou=Users,dc=servername,dc=local" -h 192.168.0.3 -p 389 -D "uid=Gitlab LDAP,ou=Users,dc=servername,dc=local" -w "<password>"

Sem sucesso. Eu tentei dezenas de combinações. O usuário "gitlab" tem um nome de exibição "Gitlab LDAP" no Windows Server, com um e-mail, tudo em minúsculas. Bottom line: Existe alguma maneira fácil de clicar no objeto no Windows DC e recuperar as configurações corretas de LDAP para usar esse objeto de usuário para ldap binds ?! Se eu estivesse propenso a explosões emocionais, é aqui que eu faria isso.

Sempre a mesma mensagem de erro: "Credenciais inválidas"

Obrigado pelo seu tempo e consideração, toda e qualquer ajuda será muito apreciada.

    
por Aubrey Robertson 10.07.2014 / 01:35

2 respostas

0

NOTA: as chaves Alligator (< >) devem ser removidas dos valores e estão lá apenas para indicar valores genéricos.

  1. Crie um usuário no DC para usar na ligação LDAP. Aqui está um exemplo para o meu contexto:

    Eunãoachoquemudeinadarealmente,mas,naguiaConta,configureiparaqueoUsuárionãopossaalterarasenhaeoAsenhanuncaexpira.NotaEuredigioURLdofinaldodomínionoemaildousuário.Paraorestantedessasinstruções,usarei<Domain>.<local>,masessaURLpodeserqualquercoisacorrespondenteaoFQDNrealdeseuDC(porexemplo,microsoft.com).

  2. NopróprioDC(depreferência)ouemumamáquinaconectadaeautorizadaemrede,executeLDP.execomprivilégioselevados.EmConexãodigiteoFQDNparaoDCouhostlocal(dependendodeondevocêestáseconectando),naporta389(ouqualquerportaparaaqualvocêtenhaencaminhado,389éaportaLDAPpadrão).Umavezconectado,vocêveráváriaslinhas,masumadasprimeiraslinhasserá:

    configurationNamingContext:CN=Configuration,DC=<Domain>,DC=<local>

    Anoteessesvalores(osvaloresCCcorrespondemaoseuFQDNeserãousadosposteriormentenaPesquisaLDAP).

  3. Umavezconectado,vamosrealizarumaligaçãosimplescomesseusuário.CliquenaabaConnectioneselecioneaopçãobind.Preenchaasopçõescomotal(usandoasinformaçõesdousuárioquevocêcriounaprimeiraetapa):

    Seforbemsucedido,vocêdevereceberumamensagemAuthenticatedas:<Domain>\<username>

  4. Umavezqueobindébem-sucedidoparaoDCcomldp.exe,sobaabaBrowsecliquenaopçãoSearch:

    NocampoDNbase,vocêcopiaráosvaloresexatosdaURLDCobservadosquandovocêseconectouaoservidor.Portanto,seaconexãomostrasseCN=Configuration,DC=microsoft,DC=com;,vocêcolocariadc=microsoft,dc=comnocampoDNbase.

    Ofiltroqueuseiéapenasumapesquisadecaracterecuringanomeunomedeusuárioqueeucrieianteriormente.Nocampodeatributos,useiosseguintesvalores:

    objectClass;name;description;canonicalName;lDAPDisplayName

  5. CliqueemExecutarparaexecutarsuapesquisa.Aseguintesaídaéproduzido:

    EstalinhamarcadacomREDsãoosvaloresqueuseiparavincularminhaconfiguraçãodogitlab.rbcomotal(observequeessearquivofoialterado/redigidopararefletiroexemploaqui).IssofuncionouperfeitamentequandoeuentreinoGitlab:

    Essessãoospassosqueeudei.Tenhocertezaqueaquelescommaismúsculosdoqueeuprovavelmentepoderiammodificaressaabordagemparadescobriroqueelesquerem.(Agradecimentosespeciaispara Nitz por me apontar na direção certa).

Por último: dependendo de qual versão das janelas você está usando, seu cliente pode usar SAMAccountName ou o atributo UserPrincipleName, conforme mencionado por Ryan Bolger nos comentários da outra resposta de Nitz. Mais informações sobre esse atributo podem ser encontradas aqui .

    
por 03.05.2016 / 19:47
1

Eu sei que esta não é uma resposta completa, mas não posso comentar por causa da reputação.
Alguns pontos a considerar:

  • Do próprio DC, inicie ldp.exe . É um cliente LDAP real, portanto, se você conseguir configurá-lo para funcionar corretamente, é provável que os mesmos parâmetros funcionem para o Gitlab.
    Consulte este para a orientação básica de ldp e certifique-se de ler a saída do LDP. Pode revelar mais algumas informações necessárias para sua configuração.
  • Quando se trata de acesso LDAP, a versão do Windows Server não importa muito - talvez apenas em problemas relacionados à criptografia.
  • ldap_uid pode esperar o formulário DOMAIN\UserName ou CN=UserCN,DN=Location,DC=Bla (DistinguishedName).
  • Considere verificar os logs de eventos do Windows para o DC ao qual você está tentando se conectar. Pode ter algumas informações sobre o motivo da falha na conexão. Tente "auditorias com falha" no log de "segurança"

Poste de volta com informações adicionais e talvez eu possa ajudar!

    
por 14.07.2014 / 23:37