Autenticação de passagem do Windows AD com LAMP GSSAPI/Kerberos

Autenticação de passagem do Windows AD com LAMP GSSAPI/Kerberos

Tentando criar um servidor LAMP em um Windows AD e fazer com que a autenticação de passagem funcione. Uma pegadinha (que pode não ser tão importante quanto estou dizendo), o nome do host e o URL hospedado NÃO correspondem: o nome do host LAMP é intranethost.mspca.org, o URL hospedado éhttps://testintranet.mspca.org

AD é o nível de floresta/domínio 2012R2.

LAMP é Debian 11.8 com mod_auth_gssapi instalado com Apache. O LAMP NÃO tem o Samba instalado e NÃO é membro do domínio AD (não tinha certeza se isso era necessário).

Criou um arquivo keypan do Windows DC com o seguinte:

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

Meu reino foi adicionado corretamente em krb5.cnf, kinit do LAMP passa com louvor.

Apache conf (baseado em um tutorial emhttps://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>

A autenticação em si está funcionando, mas ainda recebo o prompt de login inicial do site. Não está transportando as credenciais atualmente logadas para a sessão. Adicionei todas as permutações do site (http/s, nome abreviado, FQDN) em um GPO para a página de nível de segurança da intranet, mas o Chrome ainda exibe teimosamente a caixa de diálogo de login. Somente 'erro' nos logs do Apache é sempre útilNO AUTH DATA Client did not send any authentication headers

Mudar GssapiBasicAuthpara OFF elimina a caixa de diálogo, mas recebo imediatamente um 401 Unauthorized, então é como se nem fossetentandopara passar os cabeçalhos...

Alguma sugestão?

Responder1

Esse carinha:

BrowserMatch Windows gssapi-no-negotiate

Eu juro, eu vivários sites"se você não tiver esta linha, os clientes Windows não funcionarão..."

Eu peguei essa linhafora, agora funciona 100% conforme o esperado. A autenticação passa dos usuários do Windows atualmente conectados (através do Chrome para um host interno FQDN) perfeitamente.

Apenas no caso de alguma pesquisa futura no Google levar alguém até aqui...

informação relacionada