LAMP GSSAPI/Kerberos를 사용한 패스스루 Windows AD 인증

LAMP GSSAPI/Kerberos를 사용한 패스스루 Windows AD 인증

Windows AD에 LAMP 서버를 설치하고 통과 인증을 작동시키려고 합니다. 한 가지 문제(내가 만드는 것만큼 큰 문제는 아닐 수 있음), 호스트 이름과 호스팅된 URL이 일치하지 않습니다. LAMP 호스트 이름은 이고 intranethost.mspca.org, 호스팅된 URL은 다음과 같습니다.https://testintranet.mspca.org

AD는 포리스트/도메인 수준 2012R2입니다.

LAMP는 Apache와 함께 mod_auth_gssapi가 설치된 Debian 11.8입니다. LAMP에는 Samba가 설치되어 있지 않으며 AD 도메인의 구성원이 아닙니다(필요한지 확실하지 않음).

다음을 사용하여 Windows DC에서 keyspan 파일을 만들었습니다.

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

내 영역이 krb5.cnf에 올바르게 추가되었으며 LAMP의 kinit가 멋진 색상으로 전달되었습니다.

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>

인증 자체는 실제로 작동하지만 사이트에 대한 초기 로그인 프롬프트가 계속 표시됩니다. 현재 로그인된 자격 증명을 세션으로 전달하지 않습니다. 인트라넷 보안 수준 페이지에 대한 GPO에 사이트의 모든 순열(http/s, 짧은 이름, FQDN)을 추가했지만 크롬은 여전히 ​​로그인 대화 상자를 표시합니다. Apache 로그의 '오류'만 항상 도움이 됩니다.NO AUTH DATA Client did not send any authentication headers

OFF로 전환하면 GssapiBasicAuth대화 상자가 사라지지만 즉시 401 Unauthorized가 표시되므로 승인되지 않은 것 같습니다.견딜 수 없는헤더를 전달하려면...

어떤 제안이 있으십니까?

답변1

이 작은 사람:

BrowserMatch Windows gssapi-no-negotiate

맹세코, 난 봤어요여러 사이트"이 줄이 없으면 Windows 클라이언트가 작동하지 않습니다..."

나는 그 줄을 택했다밖으로, 이제 예상대로 100% 작동합니다. 인증은 현재 로그인된 Windows 사용자로부터(Chrome을 통해 FQDN 내부 호스트로) 정상적으로 전달됩니다.

미래의 Google 검색으로 인해 누군가가 여기로 연결될 경우를 대비해...

관련 정보