Nginx/AD-auth

Материал из ALT Linux Wiki

Для работы прозрачной доменной аутентификации (SSO) в nginx необходимы следующие пакеты:

# apt-get install nginx nginx-spnego

Включим необходимый модуль:

ln -s /etc/nginx/modules-available.d/http_auth_spnego.conf /etc/nginx/modules-enabled.d/

Также нам понадобится keytab-файл, как его получить описано здесь. Далее настраиваем аутентификацию в секции server файла конфигурации нашего сайта:

server {
...
    location / {
	auth_gss on;
	auth_gss_realm IPA.EXAMPLE.TEST; //имя kerberos области
	auth_gss_keytab /etc/http.keytab; //путь к keytab-файлу
	auth_gss_service_name HTTP/redmine.ipa.example.test; //имя используемого SPN
	auth_gss_allow_basic_fallback on; //Если SSO не проходит (машина не в домене) разрешает обычный ввод логина и пароля
    }
}

Далее необходимо перезапустить сервис nginx и попробовать зайти доменным пользователем.

Очень важный момент — fqdn (домен то есть), указанный в параметре auth_gss_service_name, обязан резолвится в IP машины, а для этого IP должна быть настроена обратная зона на это имя. Другими словами, к KDC придёт не указанный вами fqdn, а полученный ($ resolve IP) из IP вашего nginx-сервера. При этом важно указать в auth_gss_service_name существующий SPN, потому что указанное там значение локально используется для вынимания записи из keytab.

Скорее всего это связано с настройкой rdns (по умолчанию true) из /etc/krb5.conf

Подробности здесь: https://web.mit.edu/kerberos/krb5-devel/doc/admin/princ_dns.html


Ссылки