Назад | Перейти на главную страницу

Ошибка аутентификации Apache с требованием ldap-group

Я пытался привязать apache на сервере Windows к нашему серверу Active Directory для аутентификации и авторизации.

Чтобы проверить это, я пробовал обработчик "ldap-status" со следующими параметрами

<Location "/ldap-status">
    SetHandler ldap-status

    AuthType Basic
    AuthBasicProvider ldap
    AuthName "LDAP Status"
    LDAPReferrals off
    AuthLDAPBindAuthoritative on
    AuthLDAPURL "ldap://1.2.3.4:389/cn=Users,dc=XXX,dc=example,dc=com?sAMAccountName?sub?(objectClass=person)" NONE
    AuthLDAPGroupAttribute member
    AuthLDAPGroupAttributeIsDN on
    AuthLDAPMaxSubGroupDepth 0
    AuthLDAPBindDN xxx
    AuthLDAPBindPassword xxx
    Require ldap-group "cn=TEST GROUP,cn=Users,dc=XXX,dc=example,dc=com"
</Location>

До этого момента, если я удалю Require ldap-group и замените его на Require valid-user, он работает правильно, но не если я восстановлю групповое требование.

Судя по тому, что я вижу на сервере AD с помощью PowerShell, группа существует, и у нее есть member атрибут, в котором перечислены DN всех участников; на основании этого я установил AuthLDAPGroupAttribute к member и AuthLDAPGroupAttributeIsDN к on.

Я уверен, что мой пользователь находится в группе, для которой мне нужна проверка, однако в журнале ошибок apache есть только эта запись, которая на самом деле не помогает понять причину:

[Пн, 27 апреля, 14: 52: 08.023952 2020] [authz_core: error] [pid 13168: tid 2072] [client 10.0.1.45:59690] AH01631: пользователь mtassinari: ошибка авторизации для «/ ldap-status»:

Что я могу сделать, чтобы исправить конфигурацию, чтобы понять, почему "require ldap-group" не работает?

В конце концов, я смог заставить его работать, разделив аутентификацию и авторизацию с помощью псевдонима, например:

<AuthnProviderAlias ldap my-ldap>
    AuthLDAPBindAuthoritative on
    AuthLDAPURL "ldap://1.2.1.4:389/cn=Users,dc=XXX,dc=example,dc=com?sAMAccountName?sub?(objectClass=person)" NONE
    AuthLDAPBindDN xxx
    AuthLDAPBindPassword xxx
</AuthnProviderAlias>

<AuthzProviderAlias ldap-group ldap-group-test "cn=TEST GROUP,cn=Users,dc=XXX,dc=example,dc=com">
    AuthLDAPURL "ldap://1.2.1.4:389/cn=Users,dc=XXX,dc=example,dc=com" NONE
    AuthLDAPBindDN xxx
    AuthLDAPBindPassword xxx
    AuthLDAPGroupAttribute member
    AuthLDAPGroupAttributeIsDN on
    AuthLDAPMaxSubGroupDepth 0
</AuthzProviderAlias>

<Location "/ldap-status">
    SetHandler ldap-status
    LDAPReferrals off

    AuthType Basic
    AuthName "LDAP Status"
    AuthBasicProvider my-ldap
    Require ldap-group-test
</Location>

я считать ключевое отличие здесь - AuthLDAPURL, который в провайдере авторизации не имеет никакого фильтра, просто не кажется правильным повторять общие параметры конфигурации, чтобы заставить его работать.