Como configurar o servidor OpenLDAP e testar usando o Apache HTTPD

1

Estou usando o CentOS 6. Encontrei um ótimo artigo sobre como instalar e configurar o OpenLDAP no CentOS 6, e encontrei outra excelente documentação aqui sobre como configure o LDAP para funcionar no Apache HTTPD (estou usando o 2.2, que vem com o CentOS 6). Infelizmente, o que ambos os artigos não especificam necessariamente é como conectar os dois juntos. O segundo artigo que mencionei é ótimo para um passeio do Apache, supondo que você já tenha um bom entendimento da sintaxe do LDAP, e o primeiro artigo que mencionei é ótimo supondo que você já tenha em mente uma maneira de testá-lo. Parece que você tem que ser um especialista em um ou outro para percorrer o caminho para que você possa se preparar completamente.

Portanto, vamos supor que eu configurei minhas credenciais LDAP de acordo com o artigo de passagem do CentOS OpenLDAP. Eu adicionei as seguintes pessoas:

acme.ldif

dn: dc=acme,dc=com
objectClass: dcObject
objectClass: organization
dc: acme
o : acme

users.ldif

dn: ou=Users,dc=acme,dc=com
objectClass: organizationalUnit
ou: Users

bob.ldif

dn: cn=Bob Jones,ou=Users,dc=acme,dc=com
cn: Bob Jones
sn: Jones
objectClass: inetOrgPerson
userPassword: p@ssw0rd
uid: bjones

engineering.ldif

dn: cn=Engineering,ou=Users,dc=acme,dc=com
cn: Engineering
objectClass: groupOfNames
member: cn=Bob Jones,ou=Users,dc=acme,dc=com

addUserToGroup.ldif

dn: cn=Engineering,ou=Users,dc=acme,dc=com
changetype: modify
add: member
member: cn=Al Smith,ou=Users,dc=acme,dc=com

al.ldif

dn: cn=Al Smith,ou=Users,dc=acme,dc=com
cn: Al Smith
sn: Smith
objectClass: inetOrgPerson
userPassword: 12345
uid: asmith

Eu baixei o LDAPExplorer Tool 2 do SourceForge e conectei-me com sucesso a este diretório LDAP, explorando-o, e parece exatamente como os arquivos LDIF sugerem.

O seguinte é do meu arquivo httpd.conf para o Apache HTTPD:

<Directory /var/www/html/authpage>
    AuthType Basic
    AuthName "Enter valid user name"
    AuthLDAPURL ldap://magneto.acme.com:389/????
    require valid-user
</Directory>

Onde o ???? é é onde eu não sei como alinhar minha sintaxe LDAP com meu diretório LDAP. Eu tentei todos os tipos. O que acontece é que eu navego para o URL http://magneto.acme.com/authpage (magneto é o meu nome de host para o servidor, neste caso, pelo menos eu sei que funciona), e me pedem credenciais. Nada que eu coloque em obras. Eu tentei combinações de ou= e o= e dc= , juntamente com ?uid como o parâmetro de consulta.

Quando eu verifico meu Apache error_log , vejo esta linha:

[Wed Sep 10 11:00:51 2014] [error] [client 10.78.182.243] access to /authpage failed, reason: verification of user id 'bjones' not configured
[Wed Sep 10 11:00:54 2014] [error] [client 10.78.182.243] access to /authpage failed, reason: verification of user id 'asmith' not configured

Supondo que meu diretório LDAP funcione e que o Apache esteja tentando autenticar corretamente para ele, 1. Como escrevo a sintaxe correta para autenticar em todos os usuários , ou apenas em um grupo específico? 2. Existe alguma configuração adicional necessária para configurar a verificação dos usuários, com base no que o error_log disse?

    
por Michael Plautz 10.09.2014 / 18:28

2 respostas

0

Depois de pesquisar ainda mais, encontrei este artigo que forneceu mais informações. Acontece que faltavam apenas algumas linhas importantes do meu arquivo Apache HTTPD httpd.conf :

<Directory /var/www/html/authpage>
    Order deny,allow
    Deny from All
    AuthName "Enter valid user name"
    AuthType Basic
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPUrl ldap://magneto.acme.com/ou=Users,dc=acme,dc=com?uid
    Require valid-user
    Satisfy any
</Directory>

Espero que, se alguém no futuro estiver no CentOS 6 e usando o OpenLDAP e configurando a autenticação LDAP através do Apache HTTPD, os links nesta postagem do ServerFault ajudem a esclarecer algumas coisas. Isso levou um pouco de tentativa, erro e busca.

    
por 10.09.2014 / 23:44
0
ldap://host:port/basedn?attribute?scope?filter

No seu caso:

AuthLDAPURL ldap://magneto.acme.com:389/ou=Users,dc=acme,dc=com?uid?sub?(objectClass=inetOrgPerson)

Observação: se você não permitir pesquisas anônimas em seu servidor LDAP, talvez seja necessário configurar AuthLDAPBindDN e AuthLDAPBindPassword

    
por 10.09.2014 / 22:06