Apache mod_auth_kerb и группы пользователей LDAP

12

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

Можно ли объединить mod_auth_kerbчто-то вроде mod_authnz_ldapпроверки на членство в группе в определенной группе в LDAP? Я предполагаю, что KrbAuthoritativeвариант будет иметь какое-то отношение к этому?

Также, насколько я понимаю, модуль устанавливает имя пользователя username@REALMпосле аутентификации, но, конечно, в каталоге пользователи хранятся только как имя пользователя. Кроме того, некоторые внутренние сайты, которые мы запускаем, такие как trac, уже имеют профиль пользователя, связанный с каждым именем пользователя. Есть ли способ решить эту проблему, возможно, удалив бит области после аутентификации?

Камил Кисиэль
источник
Просто вопрос относительно реализации, используете ли вы Windows ADS для области Kerberos или какую-то другую реализацию?
Джереми Бауз
OpenDirectory от Apple, который поставляется с MIT Kerberos v5
Камил Кисиэль
Хорошо ... Раньше я не работал с OpenDirectory от Apple. Мне удалось заставить Apache проходить аутентификацию с использованием NTLM в Windows ADS, используя их учетные данные на рабочей станции, а затем ограничиваясь конкретными группами.
Джереми Бауз
Не удаляя область из имени пользователя, вы можете использовать альтернативный атрибут в запросе LDAP для поиска сущности пользователя, например атрибут «userPrincipalName» в Ms ActiveDirectory.
Ив Мартин,

Ответы:

13

Теперь в mod_auth_kerb 5.4 теперь возможно удалить область из REMOTE_USER с помощью следующей директивы config:

KrbLocalUserMapping On

Styro
источник
Вау, похоже, что это было выпущено в 2008 году, но нет упоминания об этом (версия или параметр) на их веб-сайте.
Камил Кисиэль
7

Суть разделения authn / authz в 2.2 состоит в том, что вы можете аутентифицироваться с помощью одного механизма и авторизоваться с помощью другого. Аутентификация предоставляет вам настройку REMOTE_USER, с которой вы затем можете использовать authz_ldap. Кроме того, authn_ldap выполняет поиск пользователя (преобразует REMOTE_USER в DN, если он найден, используя критерии поиска, которые вы должны указать - например, поиск CN). Затем, когда DN будет найдено, вы можете указать требования к объекту LDAP. Например, если все пользователи, имеющие доступ к ресурсу, должны быть в одном подразделении, вы указываете

Требуется ldap-dn ou = Менеджеры, o = Компания

Мартин против Лёвиса
источник
Можно ли изменить переменную REMOTE_USER, прежде чем она будет передана на этап авторизации? Например, чтобы удалить часть REALM имени пользователя Kerberos для поиска в базе данных LDAP?
Камил Кисиэль
Не с помощью конфигурации. Однако это относительно легко сделать в исходном коде модуля Apache. Ищите назначения для запроса-> пользователя и настраивайте их; затем пересоберите модуль с помощью apxs2 -c. OTOH, может быть проще поместить имена Kerberos в LDAP, под отдельным атрибутом, и заставить модуль ldap искать пользователя по этому атрибуту.
Мартин против Лёвиса
2

Стабильная версия Debian поставляется с версией 5.4 mod_auth_kerb .

Если вы застряли с более старой версией, эта страница объясняет, как mod_map_user можно использовать в сочетании с mod_auth_kerb и mod_authnz_ldap.

jcharaoui
источник