Я пытался связать 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>
. До этого момента, если я удалю , Требуется ldap-group
и заменяю его на Требовать действительного пользователя
, это работает правильно, но не, если я восстановлю требование группы.
Судя по тому, что я вижу на сервере AD с помощью PowerShell, группа существует и имеет члена
атрибут, в котором перечислены DN всех участников; на основе этого я установил AuthLDAPGroupAttribute
на member
и AuthLDAPGroupAttributeIsDN
на на
.
Я уверен, что мой пользователь входит в группу которую я требую проверить, однако в журнале ошибок 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
, который в поставщике авторизации не имеет никакого фильтра, просто не кажется правильным повторять общие параметры конфигурации, чтобы заставить его работать.