Как авторизовать пользователя, принадлежащего к группе, содержащей хэши - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь авторизовать пользователя в зависимости от его членства в группе.

Apache настроен следующим образом:

AuthLDAPURL "ldap://DOMAIN.COM/DC=FOO,DC=COM?CN?SUB?(objectClass=user)" NONE
AuthLDAPBindDN "CN=..."
AuthLDAPBindPassword "..."
Require ldap-group CN=\#\#SOMETEXT,OU=GSI,OU=DMM,OU=DDSIS,OU=Admin_Exchange,DC=DOMAIN,DC=com

Проблема связана с двумя хэшами, которые отображаются в CN. Я пробовал с кавычками и без них, с двумя обратными косыми чертами и без обратной косой черты, URL-кодировкой, но ничего не получалось.

Я всегда получаю следующее сообщение об ошибке.

[Чт. 13 февраля 18: 40: 56.728349 2020] [authnz_ldap: debug] [pid 17154] mod_authnz_ldap. c (922): [клиент 10.255.180.148:65050] AH01719: авторизация auth_ldap: требуется группа "CN = ## SOMETEXT, OU = GSI, OU = DMM, OU = DDSIS, OU = Admin_Exchange, DC = DOMAIN, DC = com ": не совпадает с attr Сравнение завершено [member] [34 - Неверный синтаксис DN]

Когда я удаляю хэши, я получаю no such object ошибку, которая подтверждает, что проблема исходит от хэшей.

РЕДАКТИРОВАТЬ:

Как предложено в ответе, я попытался написать восьмеричное представление символа ha sh \43, но оно выдает мне точно такую ​​же ошибку:

"CN = ## SOMETEXT, ... неверный синтаксис DN]

Так что, похоже, это не изменит то, что Apache отправляет в LDAP

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Вам нужно будет экранировать строку в соответствии с RF C 4515 Строковое представление поисковых фильтров

Как правило, вам необходимо экранировать элементы, перечисленные в RF C 4515 Строковое представление поисковых фильтров и я бы посоветовал также любой не-UTF8 символ.

Я также нашел некоторые методы, которые могут быть полезны для начала работы.

Я полагаю, что правильное экранированное значение, которое вы пытаетесь найти: Все в 463 "567y \ 5c22" \ c2 \ a4 & / 2 #% &! Тестовая группа

Наконец, выйдите из нее. Начните заполнение поиска по описанию или другому неименовывающему атрибуту. (любой атрибут, который не является частью DN). Сделайте так, чтобы ваши DN никогда не менялись. Ни один пользователь не должен видеть DN, который должен быть только путем к записи. Если вы продолжите эту практику, у вас будут проблемы со многими "готовыми" инструментами.

Я пытался и даже не смог создать запись в инструментах двух разных поставщиков.

1 голос
/ 15 февраля 2020

Как правило, вы можете обойти проблемы такого типа, например:

CN=\23\23SOMETEXT,OU=GSI,OU=DMM,OU=DDSIS,OU=Admin_Exchange,DC=DOMAIN,DC=com

Как описано в RF C 4514 и Символы для выхода

Однако разные приложения могут пытаться проанализировать эти параметры для вас и могут помешать процессу экранирования.

ПРАВИЛЬНОЕ, что нужно сделать, это переименовать группу.

Проблема вы столкнетесь, будет сохраняться с другим приложением в будущем. В соответствии с рекомендациями для LDAP все относительные отличительные имена должны быть «безопасными для URL» и не требуют экранирования.

...