Проверка подлинности Kerberos в PHP

Давайте просто предположим, что я мало что знаю о Kerberos - только основы.

У меня есть...

  • Веб-сервер Debian Linux 2.6
    • Apache 2.2
      • mod_auth_kerb / 5.3
      • PHP / 5.2
  • (рабочий) Kerberos Realm
  • Клиент Windows
    • Firefox 3
    • зарегистрированный идентификатор "[email protected]" в MIT Network Identity Manager

Как мне использовать эту информацию в PHP-скрипте, чтобы мне не приходилось заходить на сайт, если у посетителя есть такой билет Kerberos? Я не хочу, чтобы Apache выполнял аутентификацию. Мне нужно узнать, какой пользователь обращается к сайту через PHP.

Это возможно? Если да, то как?

Что я выяснил до сих пор: у меня есть "включить" домен в Firefox.

Однако это все ...

Было бы разумно использовать сервер администрирования Kerberos V?

IndexOutOfDevelopersException 01.10.2018 18:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
14
1
26 701
2

Ответы 2

Я не уверен, поможет ли это, но похоже, что Apache отправит PHP информацию об имени пользователя с пакетом modauthkerb, если вы используете параметр KrbSaveCredentials. У вас должны получиться две глобальные переменные в php:

 $_SERVER['REMOTE_USER']
 $_SERVER['KRB5CCNAME']

http://archives.postgresql.org/pgsql-admin/2004-08/msg00144.php похоже, что у них это работает.

Таким образом, если вы можете видеть, что это за пользователь, на самом деле php не обязательно выполняет аутентификацию.

mod_auth_kerb выполнит фактическую аутентификацию. После этого он установит переменные окружения REMOTE_USER и KRB5CCNAME. Обратите внимание, что есть несколько предостережений:

  • mod_auth_kerb может выполнять перевод между принципалом Kerberos и локальным именем пользователя, если включена опция Krb5AuthToLocal.
  • Если Krb5AuthToLocal включен, при успешной аутентификации mod_auth_kerb вызовет библиотеку Kerberos для выполнения преобразования аутентифицированного имени в локальное имя, поскольку участник Kerberos не всегда совпадает с фактическим пользователем в операционной системе (вы можете сопоставить участников с именами пользователей).
  • Когда используется MIT Kerberos, это сопоставление выполняется с помощью правил auth_to_local в /etc/krb5.conf, подробности см. На странице руководства krb5.conf.
  • В mod_auth_kerb есть ошибка, из-за которой результирующее локальное имя не должно быть длиннее, чем имя самого принципала. Обычно это верно для принципалов из области по умолчанию, поскольку они представлены без части области, то есть 'user' вместо 'user @ REALM'. Однако, если у вас есть несколько доверенных областей, пользователи из областей не по умолчанию будут отображаться как «[email protected]», и тогда mod_auth_kerb взбесится. Эта ошибка должна быть исправлена ​​в Fedora 18+ и RHEL6.5, не уверен насчет Debian, поскольку исходный поток mod_auth_kerb немного мертв.
  • Следовательно, ваша переменная REMOTE_USER будет содержать имя участника Kerberos или имя локального пользователя, в зависимости от того, как был настроен mod_auth_kerb. Если ваше приложение полагается на тот факт, что значение REMOTE_USER должно быть реальным существующим пользователем системы, вам необходимо убедиться, что опция Krb5AuthToLocal включена и такие пользователи видны в системе (через winbind или sssd).

Для вашего случая я бы порекомендовал посмотреть отличное руководство Тома Маклафлина: http://blogs.freebsdish.org/tmclaugh/2010/07/15/mod_auth_kerb-ad-and-ldap-authorization/

Есть ли документация по использованию Kerberos в PHP с примерами?

IndexOutOfDevelopersException 25.10.2018 11:04

Ссылка на блог больше не существует. (сейчас возвращает 404)

smartmeta 12.03.2019 10:32

Похоже, Том перестал поддерживать этот блог, и он был переработан. Вы можете использовать архивную копию: web.archive.org/web/20100923214709/http://blogs.freebsdish.o‌ rg /…

abbra 13.03.2019 15:44

Другие вопросы по теме