Mod_auth_kerb'e “geçerli kullanıcı gerektirmez” rağmen işini yapmasını nasıl söyleyebilirim?


11

Apache'de mod_auth_kerb kullanarak bir TOA kimlik doğrulaması uyguladım . Benim yapılandırma şöyle görünür:

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

Benim sorunum require valid-user, mod_auth_kerb olmadan , kullanıcının kimliğini doğrulamak için bile denemek ve KERBEROS_USERsonunda olmak olmasıdır (null). Eklersem require valid-user, tarayıcı destekliyorsa kullanıcının kimliği otomatik olarak doğrulanır, ancak tarayıcı Kerberos Anlaşmasını desteklemiyorsa çirkin bir kalıcı giriş formu (ala HTTP Temel Yetkilendirme) gösterilir.

Ne elde etmek istiyorum bir kullanıcı ziyaret ederse /login/, mod_auth_kerb Kerberos Müzakere yoluyla kullanıcının kimliğini doğrulamaya çalışır olmasıdır. Bu başarısız olursa, kullanıcıya normal bir HTML giriş formu sunulacaktır.

Apache / mod_auth_kerb'i böyle bir şekilde yapılandırmak mümkün mü?


Bir giriş formu sağlamanız ve uygun hata işlemeyi engellemek, bu uygun (beklenen) davranıştır.
BillThor

Yanıtlar:


12

Basit bir tek oturum açma aracı (Kerberos'u mod_auth_tkt ile birleştirmek için) oluşturduğumda bunu bir kez yaptım. Biraz chicanery gerektirdi:

  • / webauth / login bir require valid-useryönerge ile korunmuştur . Geçerli Kerberos kimlik bilgileriyle bağlanan biri varsa, kullanıcı adını REMOTE_USER adresinden aldık, onlara bir kimlik doğrulama çerezi verdik ve yollarına gönderdik.

  • Apache yapılandırması, ErrorDocumentkimliği doğrulanmamış kullanıcıları / webauth / requir_authentication adresine yönlendirmek için bir istek kullandı :

    ErrorDocument 401 / webauth / requir_authentication

    Bu, aşağıdaki eylemleri gerçekleştirir:

    • Bir 401 sonuç kodu döndürün (normalde, ErrorDocuments sonuç kodunuzu yerler) ve
    • Bir giriş formu sunun.
  • Giriş formu tam olarak beklediğiniz şeyi yapacaktır: bir kullanıcı adı / şifre formu sunun, aynısını doğrulayın ve ardından yetkilendirme çerezini verin.


İlginç bir çözüm için +1.
Sam Halicke

harika, bu mükemmel çalışıyor!
Benjamin Wohlwend
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.