Quiero definir dos proveedores de autenticación diferentes en mi apache2 .htaccess en caso de que uno falle (el deseado es ldap pero quiero poder iniciar sesión incluso si ldap falla a través del archivo htpasswd local)
Lo intentéestepero no puedo hacerlo funcionar porque Apache se queja de un tipo de autenticación ya definido.
Si defino ambos tipos de autenticación dentro de mi site.conf, no puedo iniciar sesión a través del archivo htpasswd local, debido a la línea "Requerir", que garantiza que el grupo ldap correcto y el archivo local no puedan manejar esa regla, ya que solo necesita Require valid-user
.
Require ldap-group CN=admins,OU=Groups,OU=main,DC=my,DC=tld
Respuesta1
Si proporcionó tanto el proveedor de autenticación file
como el ldap
proveedor (mediante la AuthBasicProvider ldap file
directiva), puede definir el siguiente conjunto de reglas para poder autenticarse desde ambos. Supongo que utiliza el uid
atributo como nombre de usuario, pero si no, no debería ser demasiado difícil reescribir la condición siguiente.
<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>
Por lo tanto, el usuario se autentica si se cumple alguna de las siguientes condiciones:
- El usuario es válido y tiene la membresía del grupo LDAP adecuado. En este caso, el usuario debe haber sido autenticado por el
ldap
backend. - El
uid
atributo del usuario no coincide con el nombre de usuario proporcionado, pero el usuario es válido. Esto sólo puede suceder si eluid
atributo no existe, pero si lo es, entonces elldap
proveedor no pudo encontrar al usuario en la base de datos LDAP. Entonces, en este caso, la validez de las credenciales del usuario ha sido determinada por elfile
proveedor.