Apache2 - Defina dois provedores de autenticação funcionais

Apache2 - Defina dois provedores de autenticação funcionais

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 fileprovedores ldapde autenticação (usando a AuthBasicProvider ldap filediretiva), poderá definir o conjunto de regras a seguir para poder autenticar de ambos. Presumo que você use o uidatributo 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:

  1. O usuário é válido e possui a associação adequada ao grupo LDAP. Neste caso, o usuário deve ter sido autenticado pelo ldapbackend.
  2. O uidatributo do usuário não corresponde ao nome de usuário fornecido, mas o usuário é válido. Isso só poderá acontecer se o uidatributo for inexistente, mas se for, o ldapprovedor não conseguiu encontrar o usuário no banco de dados LDAP. Portanto, neste caso, a validade das credenciais do usuário foi determinada pelo fileprovedor.

informação relacionada