Сквозная аутентификация Windows AD с LAMP GSSAPI/Kerberos

Сквозная аутентификация Windows AD с LAMP GSSAPI/Kerberos

Пытаюсь поднять сервер LAMP на Windows AD и заставить работать сквозную аутентификацию. Одна загвоздка (которая может быть не такой уж большой проблемой, как я ее себе представляю): имя хоста и размещенный URL НЕ совпадают: имя хоста LAMP — intranethost.mspca.org, размещенный URL —https://testintranet.mspca.org

AD — это уровень леса/домена 2012R2.

LAMP — это Debian 11.8 с mod_auth_gssapi, установленным с Apache. На LAMP НЕ установлена ​​Samba, и он НЕ является членом домена AD (не был уверен, что это необходимо).

Создал файл keyspan из Windows DC со следующим содержимым:

ktpass -princ HTTPS/[email protected] -mapuser [email protected] -pass ******** -ptype KRB5_NT_PRINCIPAL -out testintranet-spn.keytab

Мой мир корректно добавлен в krb5.cnf, kinit из LAMP проходит проверку блестяще.

Apache conf (на основе руководства по адресуhttps://www.jfcarter.net/%7Ejimc/documents/bugfix/41-auth-kerb.html):

<IfModule !mod_auth_gssapi.c>
    LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>

<VirtualHost *:80>
        ServerName testintranet.mspca.org
#       Redirect permanent / https://testintranet.mspca.org/
</VirtualHost>

<VirtualHost *:443>
        SSLEngine On
        SSLCertificateFile /etc/ssl/certs/star_mspca_org.crt
        SSLCertificateKeyFile /etc/ssl/private/star_mspca_org.key
        ServerAdmin [email protected]
        ServerName testintranet.mspca.org
        DocumentRoot /var/www/html/wordpress/

        <Directory "/var/www/html/wordpress/">
                AllowOverride All
                AuthType GSSAPI
                AuthName "GSSAPI Single Sign On Login"
                GssapiSSLonly On
                GssapiAllowedMech krb5
                GssapiBasicAuth On
                GssapiCredStore keytab:/etc/apache2/testintranet-spn.keytab
                GssapiLocalName On
                BrowserMatch Windows gssapi-no-negotiate
                Require valid-user
                GssapiNegotiateOnce on
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/wordpress.error.log
        CustomLog ${APACHE_LOG_DIR}/wordpress.access.log combined
        LogLevel info auth_gssapi:debug ssl:warn
</VirtualHost>

Сама аутентификация на самом деле работает, но я все еще получаю начальное приглашение на вход на сайт. Он не переносит текущие учетные данные в сеанс. Я добавил все изменения сайта (http/s, короткое имя, FQDN) в GPO для страницы уровня безопасности интрасети, но Chrome все еще упрямо отображает диалоговое окно входа. Только 'error' в журналах Apache — это всегда полезноNO AUTH DATA Client did not send any authentication headers

Переключение GssapiBasicAuthв положение «ВЫКЛ» устраняет диалоговое окно, но я сразу получаю 401 Unauthorized, так что это как будто его даже нетпытающийсядля передачи заголовков...

Какие-либо предложения?

решение1

Этот малыш:

BrowserMatch Windows gssapi-no-negotiate

Клянусь, я видел нанесколько сайтов«Если у вас нет этой строки, клиенты Windows работать не будут...»

Я взял эту линиювне, теперь это работает на 100%, как и ожидалось. Аутентификация проходит от текущих пользователей Windows, вошедших в систему (через Chrome на внутренний хост FQDN), просто отлично.

На всякий случай, если в будущем поиск в Google приведет кого-нибудь сюда...

Связанный контент