Apache mit mod_auth_kerb fragt immer zweimal nach dem Passwort

Apache mit mod_auth_kerb fragt immer zweimal nach dem Passwort

(Debian-Squeeze)

Ich versuche, Apache so einzurichten, dass es Kerberos-Authentifizierung verwendet, um AD-Benutzern die Anmeldung zu ermöglichen. Das funktioniert, fordert den Benutzer jedoch zweimal zur Eingabe von Benutzername und Kennwort auf, wobei das erste Mal ignoriert wird (egal, was eingegeben wird). Nur die zweite Eingabeaufforderung enthält die AuthName-Zeichenfolge aus der Konfiguration (d. h. das erste Fenster ist ein generisches Benutzername/Kennwort, das zweite enthält den Titel „Kerberos-Anmeldung“). Ich mache mir derzeit keine Sorgen, ob die integrierte Windows-Authentifizierung funktioniert. Ich möchte nur, dass sich Benutzer mit ihrem AD-Konto anmelden können, sodass wir kein zweites Repository mit Benutzerkonten einrichten müssen.

Wie behebe ich das, um diese erste nutzlose Eingabeaufforderung zu vermeiden?

Die Anweisungen in der Datei apache2.conf:

<Directory /var/www/kerberos>
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms ONEVUE.COM.AU.LOCAL
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP/[email protected]
require valid-user
</Directory>

krb5.conf:

[libdefaults]
    default_realm = ONEVUE.COM.AU.LOCAL
[realms]
    ONEVUE.COM.AU.LOCAL = {
        kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
        master_kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
        admin_server = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
        default_domain = ONEVUE.COM.AU.LOCAL
    }
[login]
    krb4_convert = true
    krb4_get_tickets = false

Das Zugriffsprotokoll beim Zugriff auf das gesicherte Verzeichnis (beachten Sie die beiden separaten 401-Fehlermeldungen)

192.168.10.115 - - [24/Aug/2012:15:52:01 +1000] "GET /kerberos/ HTTP/1.1" 401 710 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - - [24/Aug/2012:15:52:06 +1000] "GET /kerberos/ HTTP/1.1" 401 680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - [email protected] [24/Aug/2012:15:52:10 +1000] "GET /kerberos/ HTTP/1.1" 200 375 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"

Und eine Zeile im error.log

[Fri Aug 24 15:52:06 2012] [error] [client 192.168.0.115] gss_accept_sec_context(2) failed: An unsupported mechanism was requested (, Unknown error)

Antwort1

Ich weiß nicht, ob Sie die Antwort noch brauchen, aber ich hoffe, dass ich jemand anderem mit meinen Erfahrungen helfen kann. Ich glaube, wenn Sie diese Schritte befolgen, wird alles gut funktionieren.

  1. Stellen Sie sicher, dass Sie den richtigen DNS-Eintrag haben fürSYD01TBUG02(Ein Eintrag) auf Ihrem DNS-Server, der auf Ihren Webserver verweist
  2. Stellen Sie sicher, dass eine Verbindung zwischen dem SPN Ihres Webdienstes und dem AD-Benutzer besteht. Führen Sie auf dem AD-Server diesen Befehl aus:

    setspn -A HTTP/SYD01TBUG02.onevue.com.au.local ad_username

  3. Stellen Sie sicher, dass Sie die richtige Keytab generiert haben. Führen Sie diesen Befehl auf Ihrem AD-Server aus:

    ktpass -princ HTTP/[email protected] -mapuser ad_username -pass xxxxxx -crypto ALL -ptype KRB5_NT_PRINCIPAL -out SYD01TBUG02.keytab -setupn -setpass

    wobei xxxxxx das AD-Benutzerkennwort ist. Wir verwenden-Krypto ALLEOption, um sicherzustellen, dass wir alle unterstützten Hashes zur Keytab-Datei hinzufügen.
  4. Nun sollten Sie die generiertenSYD01TBUG02.keytabDatei auf Ihren Webserver und kopieren Sie sie in das bestimmte Verzeichnis. Kopieren wir sie beispielsweise in das/etc/apache2/keytab/Ordner.
  5. Beispiel einer Apache-Konfigurationsdatei für den Webdienst:
    <VirtualHost *:80>
        DocumentRoot "/var/www/kerberos"
        ServerName SYD01TBUG02.onevue.com.au.local
        ServerAlias SYD01TBUG02
        AddDefaultCharset UTF-8
        DirectoryIndex index.php
        ErrorLog /var/log/apache2/error_SYD01TBUG02.log
        TransferLog /var/log/apache2/transfer_SYD01TBUG02.log
        LogLevel warn
        ServerAdmin [email protected]
        
        <Location "/">
            AuthType Kerberos
            KrbAuthRealms ONEVUE.COM.AU.LOCAL
            KrbServiceName HTTP/[email protected]
            Krb5Keytab /etc/apache2/keytab/SYD01TBUG02.keytab
            KrbMethodNegotiate on
            KrbMethodK5Passwd on
            KrbVerifyKDC on
            require valid-user    
        </Location>
        <Directory />
        </Directory>
    </VirtualHost> 
    
  6. Apache neu laden oder neu startensudo service apache2 reload
  7. Wenn Sie nun http://SYD01TBUG02/ in die Adressleiste Ihres Browsers eingeben, werden Sie automatisch über SSO in Ihren Webdienst eingeloggt (Chrome, Chromium-ähnliche Browser und IE unterstützen SSO standardmäßig, aber es gibt auch einePlugin für Firefox).

Ich hoffe, das hilft Ihnen beim Einrichten Ihrer Kerberos-Authentifizierung auf dem Webserver.

PSWenn Sie SSO mit vollständiger Adresse aktivieren möchten (z. B.SYD01TBUG02.onevue.com.au.local) sollten Sie hinzufügenSYD01TBUG02.onevue.com.au.localzur Intranetzone entweder über AD-Gruppenrichtlinien (wenn dies auf mehreren Rechnern in der Domäne erforderlich ist) oder lokal über die Internet Explorer-Einstellungen. Diese Einstellungen wirken sich auf alle im System installierten Browser aus.

Antwort2

Das liegt daran, dass beim ersten Mal, wenn der Benutzer u/p eingibt, ein NTLM-Token an den Server gesendet wird. Beim zweiten Mal ist es das richtige Kerberos-Token.

Leider gibt es keine Möglichkeit, die erste Eingabeaufforderung zu beseitigen.

Antwort3

Wenn Single Sign-On keine Voraussetzung ist, können Sie die Aushandlung deaktivieren, indem Sie „KrbMethodNegotiate aus“ setzen. Dadurch erhalten Sie nur eine einzige Basisanmeldung und vermeiden außerdem die zusätzliche GET-Anforderung für jede Transaktion.

verwandte Informationen