Quero definir dois provedores de autenticação diferentes em meu apache2 .htaccess caso um falhe (o desejado é o ldap, mas quero poder fazer login mesmo se o ldap falhar por meio do arquivo htpasswd local)
tenteiessemas não consigo fazê-lo funcionar, pois o Apache reclama de um tipo de autenticação já definido.
Se eu definir os dois tipos de autenticação dentro do meu site.conf, não consigo fazer login via arquivo htpasswd local, por causa da linha "Require", que garante que o grupo ldap correto e o arquivo local não possam lidar com essa regra, pois ele precisa apenas de Require valid-user
.
Require ldap-group CN=admins,OU=Groups,OU=main,DC=my,DC=tld
Responder1
Se você forneceu ambos os file
provedores ldap
de autenticação (usando a AuthBasicProvider ldap file
diretiva), poderá definir o conjunto de regras a seguir para poder autenticar de ambos. Presumo que você use o uid
atributo como nome de usuário, mas se não, não será muito difícil reescrever a condição abaixo.
<RequireAny>
<RequireAll>
Require valid-user
Require ldap-group cn=admins,ou=groups,out=main,dc=my=dc=tld
</RequireAll>
<RequireAll>
Require valid-user
Require not ldap-attribute uid="%{REMOTE_USER}"
</RequireAll>
</RequireAny>
Portanto, o usuário será autenticado se alguma das seguintes afirmações for verdadeira:
- O usuário é válido e possui a associação adequada ao grupo LDAP. Neste caso, o usuário deve ter sido autenticado pelo
ldap
backend. - O
uid
atributo do usuário não corresponde ao nome de usuário fornecido, mas o usuário é válido. Isso só poderá acontecer se ouid
atributo for inexistente, mas se for, oldap
provedor não conseguiu encontrar o usuário no banco de dados LDAP. Portanto, neste caso, a validade das credenciais do usuário foi determinada pelofile
provedor.