Suponho que você queira procurar o atributo uid
ou mail
(não filtrar esses itens). Não é possível, imediatamente, usar dois atributos diferentes no URL do LDAP, embora RFC 2255 permita isso.
mod_authnz_ldap sozinho: não é possível
A documentação do mod_authnz_ldap afirma que o URL deve ser como: ldap://host:port/basedn?attribute?scope?filter
com
- attribute : o atributo a ser pesquisado. Embora a RFC 2255 permita uma lista de atributos separados por vírgula, somente o primeiro atributo será usado, não importa quão muitos são fornecidos . Se nenhum atributo for fornecido, o padrão é usar o uid. É uma boa ideia escolher um atributo que será único em todas as entradas da subárvore que você usará.
- filter : um filtro de pesquisa LDAP válido. Se não for fornecido, o padrão é (objectClass = *), que procurará todos os objetos na árvore. Os filtros são limitados a aproximadamente 8000 caracteres (a definição de MAX_STRING_LEN no código-fonte do Apache). Isso deve ser mais que suficiente para qualquer aplicativo.
Usando 2 provedores com mod_authn_alias
No entanto, adicionando outro módulo do apache, ou seja, mod_authn_alias , você pode usar 2 LDAPURL diferentes como provedores de autenticação diferentes. Para que isso funcione, você pode adicionar um novo arquivo (que incluirá na raiz da sua configuração do Apache) contendo:
# Different LDAP attributes to be used as login
<AuthnProviderAlias ldap ldap-uid>
AuthLDAPURL ldap://example.test.com/o=test,c=com?uid
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
</AuthnProviderAlias>
<AuthnProviderAlias ldap ldap-mail>
AuthLDAPURL ldap://example.test.com/o=test,c=com?mail
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
</AuthnProviderAlias>
Em seguida, na sua declaração <Location>
, você usa a seguinte configuração:
<Location /test/>
AuthType Basic
AuthName "Test"
AuthBasicProvider ldap-uid ldap-mail
AuthUserFile /dev/null
require ldap-group cn=group01,o=test,c=com
</Location>
Isso primeiro tentará autenticar usando o uid
e, se falhar, tente usar o atributo mail
. Com esse tipo de configuração, você pode adicionar quantos provedores LDAPURL diferentes desejar.
Você tem que ter cuidado com uma coisa, porém, a pesquisa LDAP deve retornar um único valor , caso contrário, você não terá certeza de qual das várias entradas será usada para verificar a senha. Para isso, você pode usar um escopo ( one
em vez de sub
) ou um filtro de pesquisa que limitará o número de entradas retornadas.
O arquivo adicional deve ser adicionado à sua configuração do Apache fora das diretivas <Location>
ou <VirtualHost>
. Ele deve ser incluído no nível raiz da sua configuração do Apache. E o módulo authn_alias
precisa ser ativado, é claro.