Autenticação do Apache de vários domínios no AD com mod_authn_alias

2

Estou executando o Apache 2 e preciso autenticar usuários de vários domínios do AD em um <Location/> . Eu tentei usar mod_authn_alias

Sobre o Debian GNU / Linux Squueze com as últimas atualizações | Apache / 2.2.16

Módulos

/etc/apache2/apache.conf:

<AuthnProviderAlias ldap first-ldap>
    AuthLDAPURL "ldap://win2003server:389/DC=first,DC=domain?sAMAccountName?sub?(objectClass=*)" NONE
    AuthLDAPBindDN "cn=user1,cn=Users,dc=first,dc=domain"
    AuthLDAPBindPassword "user1"
</AuthnProviderAlias>

<AuthnProviderAlias ldap second-ldap>
    AuthLDAPURL "ldap://win2008server:3268/DC=second,DC=domain?sAMAccountName?sub?(objectClass=*)" NONE
    AuthLDAPBindDN "cn=user2,cn=Users,dc=second,dc=domain"
    AuthLDAPBindPassword "user2"
</AuthnProviderAlias>

/ etc / apache2 / sites-enabled / 000default:

<Location /test>

    Order allow,deny
    Allow from all

    Authtype Basic
    AuthBasicProvider first-ldap second-ldap
    AuthName "TEST"
    AuthzLDAPAuthoritative off
    require valid-user

</Location>

Com essa configuração, ele autentica os usuários do primeiro domínio e, para os usuários do segundo domínio, ignora um erro:

 [Fri Sep 16 20:54:39 2011] [info] [client 10.0.0.62] [25672] auth_ldap authenticate: user2 user2 authentication failed; URI /test/ [ldap_simple_bind_s() to check user2 credentials failed][Invalid credentials]

Quando eu deixar apenas AuthBasicProvider second-ldap usuários do segundo domínio, você poderá autonormalizar com sucesso, então o segundo domínio LDAP está OK.

Alguém conhece alguma solução para forçar mod_authn_alias a trabalhar?

    
por Selivanov Pavel 16.09.2011 / 19:28

2 respostas

0

Encontrei o caminho para a solução aqui: autenticando -apache-httpd-contra-multiple-ldap-servers-with-expired-accounts

Eu usei para testar a conta de usuário do segundo domínio, que tinha uma conta com o mesmo nome no primeiro domínio. A exclusão da conta desativada ajudou, mas a exclusão de contas no domínio do AD é uma prática ruim: você pode receber objetos com descritores de segurança desconhecidos. Eu criei o filtro LDAP para a eliminação de usuários com deficiência, e agora tudo funciona bem:)

/etc/apache2/apache2.conf:

<AuthnProviderAlias ldap first-ldap>
    AuthLDAPURL "ldap://win2003server:389/DC=first,DC=domain?sAMAccountName?sub?(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" NONE
    AuthLDAPBindDN "cn=user1,cn=Users,dc=first,dc=domain"
    AuthLDAPBindPassword "user1"
</AuthnProviderAlias>

<AuthnProviderAlias ldap second-ldap>
    AuthLDAPURL "ldap://win2008server:3268/DC=second,DC=domain?sAMAccountName?sub?(&(objectCategory=person)(objectClass=user))" NONE
    AuthLDAPBindDN "cn=user2,cn=Users,dc=second,dc=domain"
    AuthLDAPBindPassword "user2"
</AuthnProviderAlias>

Observe que esse filtro funciona para o domínio do AD com nível funcional "windows 2000 nativo" e não funciona para o domínio do AD com nível funcional "windows server 2003", não sei por quê.

    
por 17.09.2011 / 03:29
1

Eu não sei como fazer o Apache fazer o que você quer. No entanto, você pode configurar o OpenLDAP como um proxy na frente de várias instâncias do AD usando os backends ldap ou meta , e isso fará com que você tenha o mesmo comportamento. Você aponta o Apache no seu proxy OpenLDAP e, em seguida, o OpenLDAP fala com seus servidores do AD.

Aqui está meu artigo sobre como usar o meta backend. Este é mais um ponto de partida do que uma solução real.

Na verdade, estou usando o OpenLDAP como um proxy agora para autenticar em três diretórios separados - um domínio do AD, um servidor LDAP remoto e um diretório LDAP local.

    
por 16.09.2011 / 21:13