Apache2 — определение двух работающих поставщиков аутентификации

Apache2 — определение двух работающих поставщиков аутентификации

Я хочу определить двух разных поставщиков аутентификации в моем apache2 .htaccess на случай, если один из них выйдет из строя (желательно ldap, но я хочу иметь возможность войти в систему через локальный файл htpasswd, даже если ldap выйдет из строя)

Я пыталсяэтотно я не могу заставить его работать, так как Apache жалуется на уже определенный тип аутентификации.

Если я определю оба типа аутентификации в своем site.conf, я не смогу войти через локальный файл htpasswd из-за строки «Require», которая гарантирует правильную группу ldap, а локальный файл не сможет обработать это правило, поскольку ему нужен только Require valid-user.

          Require ldap-group CN=admins,OU=Groups,OU=main,DC=my,DC=tld

решение1

Если вы указали fileи ldapпровайдеров аутентификации и (используя AuthBasicProvider ldap fileдирективу), то вы можете определить следующий набор правил, чтобы иметь возможность аутентифицироваться из обоих. Я предполагаю, что вы используете атрибут uidв качестве имени пользователя, но если нет, то не должно быть слишком сложно переписать условие ниже.

<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>

Таким образом, пользователь считается аутентифицированным, если выполняется любое из следующих условий:

  1. Пользователь действителен и имеет соответствующее членство в группе LDAP. В этом случае пользователь должен быть аутентифицирован бэкэндом ldap.
  2. Атрибут uidпользователя не соответствует указанному имени пользователя, но пользователь действителен. Это может произойти только если атрибут uidне существует, но если он существует, то ldapпоставщик не смог найти пользователя в базе данных LDAP. Таким образом, в этом случае действительность учетных данных пользователя была определена поставщиком file.

Связанный контент