Configurei um Simple AD na AWS que posso finalmente autenticar com o LDAP. Não entendo por que não consegui usar o dc=
que é amplamente sugerido em todos os lugares, mas posso usar arquivos @domain
.
ldap_bind($ldapconn, "cn=Administrator,dc=ldap,dc=patontheback,dc=org", "<password>");
ldap_bind($ldapconn, "[email protected]", "<password>");
Estes não deveriam ser equivalentes? O @domain sempre funcionará ou será específico para o Simple AD?
O OP forneceu informações adicionais da localização do usuário Administrador para que ele tenha que usar
cn=Administrator,ou=Users,dc=ldap,dc=pathontheback,dc=org
EDIT: Cometeu um erro de digitação, tem que ser:
cn=Administrator,cn=Users,dc=ldap,dc=pathontheback,dc=org
Users é um contêiner, não OU.
Um pouco de leitura sobre LDAP e DNs pode estar em ordem aqui.
Portanto, se você deseja especificar o DN da conta de administrador em seu domínio, precisa especificar o caminho completo (e correto) para ele. Como mostra sua captura de tela (e o fato de ser padrão no AD), a conta do administrador está no contêiner Usuários.
Observe que usei a palavra container e não OU. Nem todo contêiner no AD é uma unidade organizacional e a maioria dos padrões que existem, na verdade, não são. Você pode ver rapidamente comparando o ícone para
Users
com o ícone paraDomain Controllers
. Se for muito sutil, você também pode verificar oobjectClass
atributo real de cada um. OU's conterãoorganizationalUnit
e contêineres normais terão arquivoscontainer
. Em um valor DN, as OUs têm "OU=" como chave RDN e os contêineres têm "CN=" como chave RDN.De qualquer forma, você realmente não precisa descobrir tudo isso manualmente quando estiver procurando o DN de algo no dia a dia. Basta abrir (ou consultar) as propriedades do objeto que você procura e verificar o
distinguishedName
atributo. Isso fornecerá o caminho completo e correto sem tentar encadear manualmente vários RDNs e contextos.TL;DR O DN da conta de administrador em seu domínio de exemplo é
CN=Administrator,CN=Users,DC=ldap,DC=patontheback,DC=org
Dito isso, é uma prática melhor continuar fazendo o que você está fazendo e usar o UPN (usuário@domínio.exemplo.com) para vincular contas ao AD porque elas têm menos probabilidade de mudar do que um valor DN.
A resposta de @Ryan Bolger tem uma explicação muito boa. Queria incluir um exemplo mais completo para quem gosta de ver o que acontece com vários comandos.
Por exemplo, eu uso o seguinte para o binddn
distinguishedName: CN=auser,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan
ou o UPN
userPrincipalName: [email protected]
As linhas a seguir produzirão a mesma saída abaixo
ou
A mesma saída será gerada