
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 GssapiBasicAuth
para 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...