Product SiteDocumentation Site

47.2.2. Настройка Nginx

Для работы прозрачной доменной аутентификации (SSO) в Nginx необходимо установить пакеты nginx и nginx-spnego:
# apt-get install nginx nginx-spnego
Модуль SPNEGO для Nginx — это программный компонент для возможности прохождения аутентификации (Single Sign-On или SSO) через сервер LDAP.
Включить модуль http_auth_spnego:
# ln -s /etc/nginx/modules-available.d/http_auth_spnego.conf /etc/nginx/modules-enabled.d/
Перенести полученный на контроллере домене файл keytab на веб-сервер в каталог /etc/nginx. Установить права на файл keytab:
# chmod 644 /etc/nginx/nginx.keytab
Nginx должен иметь права на чтение keytab-файла, но не на его изменение.
Настроить аутентификацию в секции server файла конфигурации сайта:
server {
    …
    location /
    {
        root /var/www/html;
        auth_gss on;
        auth_gss_realm TEST.ALT; #имя Kerberos области
        auth_gss_keytab /etc/nginx/nginx.keytab; #путь к keytab-файлу
        auth_gss_service_name HTTP/web.test.alt; #имя используемого SPN
        auth_gss_allow_basic_fallback off;
    }
}
Описание опций:
  • auth_gss — включение/отключение аутентификации;
  • auth_gss_keytab — абсолютный путь к файлу keytab, содержащему учётные данные службы;
  • auth_gss_realm — имя области Kerberos;
  • auth_gss_service_name — имя субъекта-службы, используемое при получении учетных данных;
  • auth_gss_allow_basic_fallback — включить/отключить базовую аутентификацию. При включённой базовой аутентификации (по умолчанию), если SSO не проходит (машина не в домене) разрешает обычный ввод логина и пароля. Если используется SPNEGO без SSL, рекомендуется отключить базовую аутентификацию, так как в этом случае пароль будет отправлен в виде открытого текста.
Перезапустить nginx:
# systemctl restart nginx
Если нужно авторизовать только определенный набор пользователей, можно использовать параметр auth_gss_authorized_principal. Можно указывать несколько записей, по одной на строку:
auth_gss_authorized_principal <username>@<realm>
auth_gss_authorized_principal <username2>@<realm>
Список пользователей также можно указать с помощью шаблона регулярного выражения в параметре auth_gss_authorized_principal_regex. Этот параметр можно использовать вместе с параметром auth_gss_authorized_principal:
auth_gss_authorized_principal <username>@<realm>
auth_gss_authorized_principal_regex ^(<username>)/(<group>)@<realm>$