Ich habe eine SSO-Authentifizierung mit mod_auth_kerb auf Apache implementiert . Meine Konfiguration sieht folgendermaßen aus:
<Location /login/ >
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate on
KrbAuthoritative on
KrbVerifyKDC on
KrbAuthRealm D.ETHZ.CH
Krb5Keytab /etc/HTTP.keytab
KrbSaveCredentials on
RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>
Mein Problem ist, dass require valid-user
mod_auth_kerb ohne nicht einmal versucht, den Benutzer zu authentifizieren, und KERBEROS_USER
am Ende ist (null)
. Wenn ich hinzufüge require valid-user
, wird der Benutzer automatisch authentifiziert, wenn der Browser dies unterstützt, aber es wird ein hässliches modales Anmeldeformular (ala HTTP Basic Auth) angezeigt, wenn der Browser Kerberos Negotiate nicht unterstützt.
Was ich erreichen möchte, ist, dass /login/
mod_auth_kerb bei einem Besuch eines Benutzers versucht, den Benutzer über Kerberos Negotiate zu authentifizieren. Wenn dies fehlschlägt, wird dem Benutzer ein normales HTML-Anmeldeformular angezeigt.
Ist es möglich, Apache / mod_auth_kerb so zu konfigurieren?
quelle
Antworten:
Ich habe dies einmal getan, als ich ein einfaches Single-Signon-Tool erstellt habe (um Kerberos mit mod_auth_tkt zusammenzuführen). Es erforderte ein wenig Schikanen:
/ webauth / login wurde durch eine
require valid-user
Direktive geschützt . Wenn jemand mit gültigen Kerberos-Anmeldeinformationen verbunden ist, haben wir seinen Benutzernamen von REMOTE_USER erhalten, ihm ein Authentifizierungscookie gegeben und ihn auf den Weg geschickt.Die Apache-Konfiguration verwendete eine
ErrorDocument
Anforderung, um nicht authentifizierte Benutzer nach / webauth / require_authentication umzuleiten:ErrorDocument 401 / webauth / require_authentication
Dies würde die folgenden Aktionen ausführen:
Das Anmeldeformular würde genau das tun, was Sie erwarten: Legen Sie ein Benutzername / Passwort-Formular vor, validieren Sie es und geben Sie ihnen das Auth-Cookie.
quelle