mod_auth_gssapi#
Описание#
mod_auth_gssapi предназначен для реализации аутентификации пользователей с использованием протокола GSSAPI (Generic Security Services Application Program Interface). Позволяет интегрировать веб-сервер с системами аутентификации, основанными на Kerberos, что делает его полезным в средах, где требуется безопасная аутентификация пользователей.
Примечание
Модуль требует наличия Kerberos для аутентификации. При необходимости установите его пакеты с помощью
dnf install krb5-workstation krb5-libs. Подробнее о том, как настроить Kerberos для работы Apache HTTP Server - в разделе «Начало работы» → «Использование Kerberos».Для аутентификации через HTTPS потребуется модуль
mod_ssl, обеспечивающий поддержку SSL/TLS.Для управления правами доступа с использованием директивы Require - модуль
mod_authz_core.Для работы с сессиями в процессе аутентификации - модуль
mod_session.Для работы с Kerberos могут потребоваться утилиты:
kinit- используется для получения тикетов Kerberos;klist- позволяет проверить текущие тикеты Kerberos;kdestroy- удаляет текущие тикеты Kerberos.
Для получения подробной информации об указанных утилитах используйте соответствующие страницы справочника
man-man kinit,man klistиman kdestroy.
Пример конфигурации#
Пример конфигурации, настроенной с помощью модуля mod_auth_gssapi - управление виртуальным хостом с использованием Kerberos:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/html"
# Включение аутентификации через GSSAPI
<Location "/protected">
AuthType GSSAPI
AuthName "Kerberos Authentication"
# Указание keytab-файла для сервера
GssapiCredStore keytab:/etc/httpd/conf/krb5.keytab
# Разрешение доступа только аутентифицированным пользователям
Require valid-user
# Преобразование имени пользователя в локальный формат
GssapiLocalName On
# Отключение Basic Auth (если не требуется)
GssapiBasicAuth Off
# Логирование ошибок для отладки
LogLevel debug
</Location>
</VirtualHost>
Директивы#
Список директив модуля представлен в таблице ниже.
Синтаксис |
Значение по умолчанию |
Контекст |
Описание |
|---|---|---|---|
|
|
|
Определяет, будет ли аутентификация через GSSAPI (Kerberos) разрешена только при использовании SSL/TLS-соединения. Рекомендуемое значение для повышения безопасности - |
|
|
|
Пытается сопоставить клиентский принципал с локальным именем, используя вызов |
|
|
|
Определяет, будет ли аутентификация GSSAPI привязана к конкретному соединению для сохранения состояния между раундами аутентификации. Рекомендуется оставить ее отключенной, так как она создает дополнительную нагрузку на сервер |
|
|
|
Отправляет заголовок |
|
|
|
Управляет использованием сессий на основе куки для поддержания аутентификации в модуле |
|
Нет |
|
Используется для настройки постоянного ключа, который применяется для шифрования и создания MAC-данных (Message Authentication Code) сессии при использовании GSSAPI-сессий. Это помогает избежать проблем с нечитаемыми данными сессии после перезапуска сервера или при работе в кластере серверов. Предоставляются две схемы для чтения постоянных ключей: |
|
Нет |
|
Позволяет указать несколько параметров, связанных с расположением учетных данных, таких как |
|
Нет |
|
Экспортирует учетные данные в частный каталог, доступный процессу веб-сервера, если это требуется. Делегированные учетные данные (credentials) будут храниться в файле, названном по имени клиентского принципала, а переменная окружения запроса (по умолчанию |
|
|
|
Включает использование уникальных имен для файлов |
|
|
|
Устанавливает имя переменной окружения запроса, которая будет получать имя кеша учетных данных |
|
|
|
Включает использование расширения Kerberos |
|
|
|
Позволяет использовать Basic Auth в сочетании с Negotiate. Если браузер не использует Negotiate, он будет автоматически переключаться на Basic, и имя пользователя и пароль будут использованы для попытки получения учетных данных в модуле через GSSAPI. Если учетные данные успешно получены, они проверяются на соответствие ключу сервера |
|
Нет |
|
Задает разрешенный механизм (-ы) аутентификации, который может использоваться, когда доступны учетные данные для нескольких механизмов. По умолчанию разрешены все механизмы, доступные локально |
|
Нет |
|
Задает механизм (-ы) для базовой аутентификации. Это полезно для ограничения механизмов, которые могут использоваться для попытки аутентификации по паролю. По умолчанию разрешены все доступные локально механизмы, если не установлен |
|
Нет |
|
Используется для извлечения атрибутов клиентского имени (например, данных авторизации) из установленного контекста GSSAPI и их экспорта в виде переменных окружения. Это позволяет передавать дополнительные данные о клиенте (например, имя пользователя, группу или другие атрибуты) в приложения или скрипты, работающие на сервере. Переменные не сохраняются в данных сессии, хранящихся в куки, поэтому они доступны только при первом аутентифицированном запросе, когда используется |
|
Нет |
|
Позволяет указать один или несколько атрибутов имени, которые клиент должен иметь для авторизации доступа к ресурсу. Если атрибуты имени, связанные с клиентом, не удовлетворяют заданному выражению или отсутствуют, возвращается ответ |
|
|
|
Управляет поведением сервера при попытке аутентификации через механизм Negotiate Kerberos. Она позволяет избежать повторных запросов аутентификации, если первая попытка не удалась. Обычно, когда клиент не может использовать аутентификацию Negotiate, возвращается |
|
|
|
Позволяет использовать механизм S4U2Self (Service for User to Self) для получения сервисного тикета от имени пользователя, который уже был аутентифицирован другим модулем. Это полезно в сценариях, где требуется имитация действий пользователя или делегирование его прав без повторной аутентификации через GSSAPI. Убедитесь, что принципал сервера имеет право получать переносимые тикеты от произвольных пользователей (опция |
|
Нет |
|
Используется для управления правами доступа и владельцами файлов |
|
|
|
Публикует ошибки в виде переменных окружения, которые могут использоваться процессами веб-сервера. Общий тип ошибки задается в переменной |
|
Нет |
|
Ограничивает веб-сервер только определенным именем (principal) при работе с механизмом GSSAPI (Kerberos). Это полезно в случаях, когда в keytab-файле содержится несколько ключей (учетных данных), и необходимо явно указать, какое имя должно использоваться для аутентификации. Специальное значение |
|
|
|
Управляет временем действия тикета, запрашиваемого для TGT-пользователя методом Basic Auth. Обычно базовая аутентификация повторяется при каждом запросе, поэтому используется короткий срок действия, чтобы уменьшить объем тикета, так как он будет быстро заменен. Однако в случаях, когда страница аутентификации отдельна, и сессия используется другими страницами, срок действия может быть изменен на произвольный. Срок действия билета ограничен конфигурацией KDC |
|
|
|
Публикует механизм, используемый для аутентификации, в виде переменной окружения |
Встроенная переменная#
gssapi-no-negotiate - используется для подавления установки заголовков Negotiate в HTTP-запросах, чтобы избежать проблем с аутентификацией в некоторых случаях. Заголовки Negotiate используются в процессе аутентификации, особенно в контексте GSSAPI и Kerberos.