Come dire a mod_auth_kerb di fare il suo lavoro nonostante non ci sia bisogno di un utente valido


11

Ho implementato un'autenticazione SSO usando mod_auth_kerb su Apache. La mia configurazione è simile a questa:

<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>

Il mio problema è che, senza require valid-user, mod_auth_kerb non prova nemmeno ad autenticare l'utente e KERBEROS_USERfinisce per essere (null). Se aggiungo require valid-user, l'utente viene autenticato automaticamente se il browser lo supporta, ma viene mostrato un brutto modulo di accesso modale (ala HTTP Basic Auth) se il browser non supporta Kerberos Negotiate.

Quello che voglio ottenere è che se un utente visita /login/, mod_auth_kerb tenta di autenticare l'utente tramite Kerberos Negotiate. In caso contrario, verrà presentato all'utente un normale modulo di accesso HTML.

È possibile configurare Apache / mod_auth_kerb in questo modo?


Escludendo la fornitura di un modulo di accesso e la corretta gestione degli errori, questo è il comportamento corretto (previsto).
BillThor,

Risposte:


12

L'ho fatto una volta quando ho creato un semplice strumento single-signon (per unire Kerberos con mod_auth_tkt). Richiedeva un po 'di chicanery:

  • / webauth / login era protetto da una require valid-userdirettiva. Se qualcuno si è collegato con credenziali Kerberos valide, abbiamo ottenuto il suo nome utente da REMOTE_USER, abbiamo dato loro un cookie di autenticazione e li abbiamo inviati sulla loro strada.

  • La configurazione di Apache ha utilizzato una ErrorDocumentrichiesta per reindirizzare gli utenti non autenticati a / webauth / require_authentication:

    Errore Documento 401 / webauth / require_authentication

    Ciò comporterebbe le seguenti azioni:

    • Restituisce un codice risultato 401 (normalmente, ErrorDocuments utilizza il codice risultato) e
    • Presenta un modulo di accesso.
  • Il modulo di accesso farebbe esattamente quello che ti aspetti: presentare un modulo nome utente / password, convalidare lo stesso e quindi fornire loro il cookie di autenticazione.


+1 per una soluzione interessante.
Sam Halicke,

ottimo, funziona perfettamente!
Benjamin Wohlwend,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.