Apache2 - 작동하는 두 개의 인증 공급자 정의

Apache2 - 작동하는 두 개의 인증 공급자 정의

하나가 실패할 경우를 대비해 apache2 .htaccess에 두 개의 다른 인증 공급자를 정의하고 싶습니다. (원하는 것은 ldap이지만 로컬 htpasswd 파일을 통해 ldap이 실패하더라도 로그인할 수 있기를 원합니다.)

나는 노력했다이것하지만 아파치가 이미 정의된 인증 유형에 대해 불평하기 때문에 작동시킬 수 없습니다.

내 site.conf 내에 두 인증 유형을 모두 정의하면 "Require" 줄 때문에 로컬 htpasswd 파일을 통해 로그인할 수 없습니다. 이는 올바른 LDAP 그룹과 로컬 파일이 해당 규칙을 처리할 수 없도록 보장합니다 Require valid-user.

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

답변1

지시어를 사용하여 file및 인증 공급자를 모두 제공한 경우 두 가지 모두에서 인증할 수 있도록 다음 규칙 세트를 정의할 수 있습니다. 나는 당신이 속성을 사용자 이름으로 사용한다고 가정하고 있지만, 그렇지 않다면 아래 조건을 다시 작성하는 것이 그리 어렵지 않을 것입니다.ldapAuthBasicProvider ldap fileuid

<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존재하는 경우 공급자는 ldapLDAP 데이터베이스에서 사용자를 찾을 수 없습니다. 따라서 이 경우 사용자 자격 증명의 유효성은 공급자에 의해 결정됩니다 file.

관련 정보